name: continious deployment on: push: branches: [master] jobs: cd: name: Deploy runs-on: ubuntu-latest timeout-minutes: 5 steps: - name: Check out code uses: actions/checkout@v4 - name: Set up Go uses: actions/setup-go@v5 with: go-version: "1.23.2" # Runs CI again (doesn't seem to be possible to reuse CI as it's in a diff workflow) - name: Format code run: test -z $(go fmt ./...) - name: Install staticcheck run: go install honnef.co/go/tools/cmd/staticcheck@latest - name: Run static analysis (linting) run: staticcheck ./... - name: Run tests run: go test --cover ./... - name: Install gosec run: go install github.com/securego/gosec/v2/cmd/gosec@latest - name: Run gosec run: gosec ./... # Starts deployment - name: Install goose run: go install github.com/pressly/goose/v3/cmd/goose@latest - name: Convert migrations from timestmaps to indices run: goose fix -dir internal/server/api/migrations - name: Build executable run: GOOS=linux GOARCH=amd64 go build -o ./eko-server ./cmd/server - name: Deploy to server uses: easingthemes/ssh-deploy@main with: SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} ARGS: "-avz" SOURCE: "eko-server" REMOTE_HOST: eko.kyren.codes REMOTE_USER: eko TARGET: "/srv/eko" SCRIPT_BEFORE: | whoami ls -al SCRIPT_AFTER: | whoami ls -al echo $RSYNC_STDOUT