feat: migrate backend to Go with streaming and provider support

This commit is contained in:
Thomas Durieux committed 2026-11-04 14:21:36 +00:00
1 parent b09ef0e5b0
commit 76e5804404
685 files changed
+1049733 -1324

No files matched your search

+24 -2
View File
@@ -21,13 +21,35 @@ jobs:
test:
name: Test
runs-on: ubuntu-latest
strategy:
matrix:
node: [22, 24]
services:
mongodb:
image: mongo:7
ports:
- 27017:27017
options: >-
--health-cmd "mongosh --quiet --eval 'db.adminCommand({ping:1})'"
--health-interval 10s --health-timeout 5s --health-retries 10
redis:
image: redis:7-alpine
ports:
- 6379:6379
options: >-
--health-cmd "redis-cli ping"
--health-interval 5s --health-timeout 3s --health-retries 10
env:
TEST_MONGODB_URI: mongodb://127.0.0.1:27017/dependency_test
PERFORMANCE_MONGO_URI: mongodb://127.0.0.1:27017/perf_test_ci
PERFORMANCE_REDIS_PORT: 6379
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
node-version: ${{ matrix.node }}
cache: npm
- run: npm ci
- run: npm run build
- run: npm audit --omit=dev --audit-level=moderate
- run: npm audit --audit-level=low
- run: npm test
+114
View File
@@ -0,0 +1,114 @@
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