mirror of
https://github.com/tdurieux/anonymous_github.git
synced 2026-11-14 00:07:00 +01:00
feat: migrate backend to Go with streaming and provider support
This commit is contained in:
1 parent
b09ef0e5b0
commit
76e5804404
685 files changed
+1049733
-1324
No files matched your search
@@ -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
|
||||
@@ -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
|
||||
Reference in new issue
Block a user