Repository navigation
CI Pipeline #75
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI Pipeline | |
| permissions: | |
| contents: read | |
| on: | |
| workflow_call: | |
| workflow_dispatch: | |
| schedule: | |
| - cron: "17 5 * * *" | |
| push: | |
| branches: | |
| - master | |
| pull_request: | |
| branches: | |
| - master | |
| jobs: | |
| quality: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version: "24" | |
| cache: npm | |
| cache-dependency-path: | | |
| package-lock.json | |
| docs/package-lock.json | |
| - name: Install project npm version | |
| run: npm install --global npm@11.18.0 | |
| - name: Install dependencies | |
| run: | | |
| npm ci | |
| npm --prefix docs ci | |
| - name: Install Hugo | |
| env: | |
| HUGO_VERSION: 0.146.0 | |
| run: | | |
| wget -O "$RUNNER_TEMP/hugo.deb" "https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb" | |
| sudo dpkg -i "$RUNNER_TEMP/hugo.deb" | |
| - name: Build validation artifacts | |
| run: npm run release:build | |
| - name: Run repository checks | |
| run: npm run check | |
| package: | |
| needs: quality | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version: "24" | |
| cache: npm | |
| - name: Install project npm version | |
| run: npm install --global npm@11.18.0 | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Build release artifacts | |
| run: npm run release:build | |
| - name: Require reproducible generated files | |
| run: git diff --exit-code | |
| - name: Audit production dependencies | |
| run: npm audit --omit=dev --audit-level=high | |
| - name: Verify package contents | |
| run: | | |
| mkdir -p release | |
| npm pack --ignore-scripts --pack-destination release --json > release/npm-pack.json | |
| node scripts/release.mjs verify-pack release/npm-pack.json | |
| tarball="$(node -p 'require("./release/npm-pack.json")[0].filename')" | |
| npm run check:package-consumer -- "release/$tarball" | |
| browser: | |
| needs: package | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version: "24" | |
| cache: npm | |
| - name: Install project npm version | |
| run: npm install --global npm@11.18.0 | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Install the current AngularTS release | |
| run: npm install --no-save --package-lock=false @angular-wave/angular.ts@latest | |
| - name: Report the AngularTS compatibility target | |
| run: npm run check:angular-ts-version -- --registry-latest | |
| - name: Install supported browsers | |
| run: npx playwright install --with-deps chromium firefox webkit | |
| - name: Run browser tests | |
| run: npm test | |
| - uses: actions/upload-artifact@v6 | |
| if: always() | |
| with: | |
| name: playwright-report | |
| path: playwright-report/ | |
| if-no-files-found: ignore | |
| retention-days: 3 | |
| documentation: | |
| needs: package | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| submodules: recursive | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version: "24" | |
| cache: npm | |
| cache-dependency-path: | | |
| package-lock.json | |
| docs/package-lock.json | |
| - name: Install project npm version | |
| run: npm install --global npm@11.18.0 | |
| - name: Install dependencies | |
| run: | | |
| npm ci | |
| npm --prefix docs ci | |
| - name: Install Chromium | |
| run: npx playwright install --with-deps chromium | |
| - name: Install Hugo | |
| env: | |
| HUGO_VERSION: 0.146.0 | |
| run: | | |
| wget -O "$RUNNER_TEMP/hugo.deb" "https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb" | |
| sudo dpkg -i "$RUNNER_TEMP/hugo.deb" | |
| - name: Run documentation tests | |
| run: npm run test:docs | |
| - uses: actions/upload-artifact@v6 | |
| if: always() | |
| with: | |
| name: documentation-playwright-report | |
| path: playwright-report/ | |
| if-no-files-found: ignore | |
| retention-days: 3 | |
| ci-gate: | |
| name: CI Gate | |
| if: always() | |
| needs: | |
| - quality | |
| - package | |
| - browser | |
| - documentation | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Require every CI job to pass | |
| if: >- | |
| needs.quality.result != 'success' || | |
| needs.package.result != 'success' || | |
| needs.browser.result != 'success' || | |
| needs.documentation.result != 'success' | |
| run: exit 1 | |
| - name: Confirm CI completion | |
| run: echo "Every required CI job passed." |