name: Backend CI on: push: branches: - main paths: - "server/**/*.go" - "server/**/*.sql" - "server/**/*.yaml" - "server/**/*.yml" - "server/go.mod" - "server/go.sum" - "server/Makefile" - "server/scripts/**" - "server/Dockerfile" - "server/.dockerignore" - "deploy/scripts/gitea-registry-images.sh" - ".gitea/workflows/backend-ci.yml" pull_request: branches: - main paths: - "server/**/*.go" - "server/**/*.sql" - "server/**/*.yaml" - "server/**/*.yml" - "server/go.mod" - "server/go.sum" - "server/Makefile" - "server/scripts/**" - "server/Dockerfile" - "server/.dockerignore" - "deploy/scripts/gitea-registry-images.sh" - ".gitea/workflows/backend-ci.yml" workflow_dispatch: permissions: contents: read jobs: backend: name: Backend runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v5 with: go-version-file: server/go.mod cache-dependency-path: server/go.sum - name: Add Go bin to PATH run: echo "$(go env GOPATH)/bin" >> "$GITHUB_PATH" - name: Install sqlc run: go install github.com/sqlc-dev/sqlc/cmd/sqlc@v1.30.0 - name: Generate sqlc code working-directory: server run: make sqlc-generate - name: Verify generated code is committed run: git diff --exit-code -- server/internal/tenant/repository/generated - name: Check tenant SQL scope guard working-directory: server run: make tenant-scope-guard - name: Run tests working-directory: server run: make test - name: Install Docker CLI if: github.event_name != 'pull_request' run: | if command -v docker >/dev/null 2>&1; then docker --version exit 0 fi apt-get update apt-get install -y docker.io - name: Publish backend images if: github.event_name != 'pull_request' env: REGISTRY_HOST: 192.168.100.19:13000 REGISTRY_OWNER: root REGISTRY_IMAGE_PREFIX: geo-rankly REGISTRY_USERNAME: root REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }} REGISTRY_PLAIN_HTTP: "true" IMAGE_LIST: migrate tenant-api browser-fetch ops-api worker-generate kol-assist-worker scheduler DELETE_OLD_IMAGE_TAGS: "true" KEEP_IMAGE_TAGS: "2" run: | set -eu IMAGE_TAG="$(git rev-parse --short=8 HEAD)" export IMAGE_TAG bash deploy/scripts/gitea-registry-images.sh ensure