Skip to content

CI Pipeline

CI Pipeline #89

Workflow file for this run

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."