diff --git a/.github/workflows/f3-1-ci.yml b/.github/workflows/f3-1-ci.yml new file mode 100644 index 0000000..e0f8d12 --- /dev/null +++ b/.github/workflows/f3-1-ci.yml @@ -0,0 +1,83 @@ +name: F3.1 Inventory CI + +on: + push: + branches: + - 'feature/f3-1*' + workflow_dispatch: + +permissions: + contents: read + +jobs: + api: + 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 2>&1 | tee typecheck.log + - name: Tests + run: npm test 2>&1 | tee test.log + - name: Build + run: npm run build 2>&1 | tee build.log + - name: Diagnostics + if: always() + uses: actions/upload-artifact@v4 + with: + name: f3-1-api-diagnostics + path: | + api-v3/typecheck.log + api-v3/test.log + api-v3/build.log + if-no-files-found: warn + retention-days: 3 + + web: + 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 + - name: Typecheck + run: npm run typecheck 2>&1 | tee typecheck.log + - name: Build + run: npm run build 2>&1 | tee build.log + - name: Diagnostics + if: always() + uses: actions/upload-artifact@v4 + with: + name: f3-1-web-diagnostics + path: | + web-v2/typecheck.log + web-v2/build.log + if-no-files-found: warn + retention-days: 3 + + docker: + needs: [api, web] + runs-on: ubuntu-latest + timeout-minutes: 25 + steps: + - uses: actions/checkout@v4 + - name: Validate Compose + run: docker compose --env-file .env.example config >/dev/null + - name: Build production images + run: docker compose --env-file .env.example build api migrate web