name: Deploy on: push: branches: [master] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions/setup-go@v6 with: go-version-file: go.mod - name: Run tests run: go test ./... - name: Deploy to server uses: appleboy/ssh-action@v1 with: host: ${{ secrets.SERVER_HOST }} username: ${{ secrets.SERVER_USER }} key: ${{ secrets.SERVER_SSH_KEY }} port: ${{ secrets.SERVER_PORT }} script: | set -euo pipefail cd ~/terminalShop git fetch origin master git reset --hard origin/master deployed=$(git rev-parse HEAD) expected="${{ github.sha }}" if [ "$deployed" != "$expected" ]; then echo "::error::deploy HEAD mismatch: box=$deployed expected=$expected" exit 1 fi docker compose -f docker-compose.prod.yml up -d --build echo "deploy verified: HEAD=$deployed"