Files
anonymous_github/.github/workflows/go-backend.yml
T

115 lines
5.7 KiB
YAML

name: Go backend
on:
push:
branches: [main]
paths: ['Dockerfile*', 'docker-compose*.yml', '.dockerignore', 'public/**', 'gulpfile.js', 'backend/**', 'src/core/**', 'src/queue/**', 'src/server/**', 'src/config.ts', 'package*.json', '.github/workflows/go-backend.yml']
pull_request:
paths: ['Dockerfile*', 'docker-compose*.yml', '.dockerignore', 'public/**', 'gulpfile.js', 'backend/**', 'src/core/**', 'src/queue/**', 'src/server/**', 'src/config.ts', 'package*.json', '.github/workflows/go-backend.yml']
permissions:
contents: read
jobs:
verify:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: backend/go.mod
cache-dependency-path: backend/go.sum
- uses: actions/setup-node@v4
with:
node-version: 24
cache: npm
- run: npm ci --no-audit --fund=false
- name: Formatting and static checks
working-directory: backend
run: |
test -z "$(gofmt -l cmd internal)"
go vet ./...
- name: Integration and race tests
run: backend/scripts/test-integration.sh
- name: Output compatibility
env:
SESSION_SECRET: synthetic-ci-session
run: |
cd backend
go build -o "$RUNNER_TEMP/go-contract" ./cmd/contract
cd ..
export GO_CONTRACT_BINARY="$RUNNER_TEMP/go-contract"
node backend/contracts/routes.cjs --check
node backend/contracts/cache-metrics.cjs --check
node backend/contracts/error-log.cjs --check
node backend/contracts/queue-metrics.cjs --check
node backend/contracts/stats-history.cjs --check
node backend/contracts/stats-window.cjs --check
node backend/contracts/query-values.cjs --check
node backend/contracts/monitoring-query.cjs --check
node backend/contracts/admin-query.cjs --check
node backend/contracts/file-query.cjs --check
node backend/contracts/file-search.cjs --check
node backend/contracts/folder-listing.cjs --check
node backend/contracts/folder-paths.cjs --check
node backend/contracts/preview-query.cjs --check
node backend/contracts/preview-hints.cjs --check
node backend/contracts/preview-branches.cjs --check
node backend/contracts/preview-branch-order.cjs --check
node backend/contracts/user-search.cjs --check
node backend/contracts/cache-report-state.cjs --check
node backend/contracts/readme-decoding.cjs --check
node backend/contracts/compression.cjs --check
node backend/contracts/json-http.cjs --check
node backend/contracts/differential.cjs
node backend/contracts/file-types.cjs
node backend/contracts/resources.cjs --check
node backend/contracts/validation.cjs --check
node backend/contracts/options.cjs --check
node backend/contracts/dates.cjs --check
node backend/contracts/reactivation.cjs --check
node backend/contracts/oauth-tokens.cjs --check
node backend/contracts/oauth-profile.cjs --check
node backend/contracts/github-responses.cjs --check
node backend/contracts/github-quota.cjs --check
node backend/contracts/worker-queues.cjs --check
node backend/contracts/blob-index.cjs --check
node backend/contracts/content-verification.cjs --check
node backend/contracts/legacy-source-paths.cjs --check
node backend/contracts/shared-result-key.cjs --check
node backend/contracts/shared-http.cjs --check
node backend/contracts/file-metadata.cjs --check
node backend/contracts/download-headers.cjs --check
node backend/contracts/github-pagination.cjs --check
node backend/contracts/conferences.cjs --check
node backend/contracts/conference-dates.cjs --check
node backend/contracts/conference-output.cjs --check
node backend/contracts/conference-options.cjs --check
node backend/contracts/admin-filters.cjs --check
node backend/contracts/admin-casting.cjs --check
node backend/contracts/admin-dates.cjs --check
node backend/contracts/admin-pagination.cjs --check
node backend/contracts/admin-csv.cjs --check
node backend/contracts/user-membership.cjs --check
node backend/contracts/admin-user.cjs --check
node backend/contracts/user-defaults.cjs --check
node backend/contracts/quota.cjs --check
node backend/contracts/token-names.cjs --check
node backend/contracts/project-names.cjs --check
node backend/contracts/dashboard-cursors.cjs --check
node backend/contracts/dashboard-limits.cjs --check
node backend/contracts/dashboard-cursor-output.cjs --check
node backend/contracts/dashboard-filters.cjs --check
node backend/contracts/dashboard-pipeline.cjs --check
node backend/contracts/document-cleanup.cjs --check
node backend/contracts/webhook-http.cjs --check
- name: Reachable dependency vulnerabilities
working-directory: backend
run: go run golang.org/x/vuln/cmd/govulncheck@v1.9.0 ./...
- name: Runtime image
run: docker build -t anonymous-github-go:ci .
- name: Default deployment smoke test
run: python3 backend/scripts/test-deployment.py anonymous-github-go:ci
- name: Node rollback image and native dependencies
run: |
docker build -f Dockerfile.node -t anonymous-github-node:rollback-ci .
docker run --rm --network none -i --entrypoint node anonymous-github-node:rollback-ci < backend/scripts/test-node-rollback.cjs