diff --git a/.github/workflows/f3-2-ci.yml b/.github/workflows/f3-2-ci.yml new file mode 100644 index 0000000..e690d05 --- /dev/null +++ b/.github/workflows/f3-2-ci.yml @@ -0,0 +1,80 @@ +name: F3.2 Multi-Acta CI + +on: + push: + branches: + - 'feature/f3-2*' + workflow_dispatch: + +permissions: + contents: read + +jobs: + api: + name: API · F3.2 + runs-on: ubuntu-latest + timeout-minutes: 25 + defaults: + run: + working-directory: api-v3 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: '24' + cache: npm + cache-dependency-path: api-v3/package-lock.json + - run: npm ci + - name: Typecheck + run: npm run typecheck + - name: Tests + run: npm test + - name: Build + run: npm run build + + web: + name: WEB · regression + runs-on: ubuntu-latest + timeout-minutes: 20 + defaults: + run: + working-directory: web-v2 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: '24' + cache: npm + cache-dependency-path: web-v2/package-lock.json + - run: npm ci + - run: npm run typecheck + - name: F3.1 structural WEB contract + run: bash ../scripts/check-f3-1-web-contract.sh + - run: npm run build + + deploy-preflight: + name: VPS-equivalent preflight / Docker + runs-on: ubuntu-latest + timeout-minutes: 30 + needs: [api, web] + steps: + - uses: actions/checkout@v4 + - name: Validate shell scripts + run: | + while IFS= read -r -d '' script; do + bash -n "$script" + done < <(find scripts -type f -name '*.sh' -print0) + - name: Validate Compose + run: docker compose --env-file .env.example config >/dev/null + - name: VPS-equivalent isolated API tests + run: | + set -Eeuo pipefail + image="dhv2-api:f3-2-preflight-${GITHUB_SHA::12}" + docker build --target builder -t "$image" api-v3 + docker run --rm \ + -v "$PWD/api-v3/test:/app/test:ro" \ + -v "$PWD/api-v3/tsconfig.test.json:/app/tsconfig.test.json:ro" \ + "$image" npm test + docker image rm "$image" >/dev/null 2>&1 || true + - name: Build production images + run: docker compose --env-file .env.example build api migrate web