feat: add support for Angular 19 #344
Workflow file for this run
This file contains 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 | |
on: | |
merge_group: | |
types: [checks_requested] | |
pull_request: | |
push: | |
branches: | |
- main | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
install-deps: | |
name: Install and cache dependencies | |
if: ${{ !startsWith( github.head_ref || github.ref_name, 'release-please--' ) }} | |
runs-on: ubuntu-latest | |
outputs: | |
node-version: ${{ steps.setup-node.outputs.node-version }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
# We need to fetch all branches and commits so that Nx affected has a base to compare against. | |
fetch-depth: 0 | |
- uses: actions/setup-node@v4 | |
id: setup-node | |
with: | |
node-version-file: '.nvmrc' | |
# Rebase must happen before installing dependencies. | |
- name: Rebase current branch | |
run: node ./scripts/rebase-pr.js | |
- name: Cache node modules | |
id: cache | |
uses: actions/cache@v4 | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-node-${{ steps.setup-node.outputs.node-version }}-modules-${{ hashFiles('package-lock.json') }} | |
- name: npm install | |
if: steps.cache.outputs.cache-hit != 'true' | |
run: npm ci | |
agents: | |
name: Bootup Nx Cloud agent | |
runs-on: ubuntu-latest | |
needs: install-deps | |
strategy: | |
matrix: | |
agent: [1, 2, 3] | |
env: | |
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Retrieve node_modules cache | |
uses: actions/cache@v4 | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-node-${{ needs.install-deps.outputs.node-version }}-modules-${{ hashFiles('package-lock.json') }} | |
- name: Start Nx Agent ${{ matrix.agent }} | |
run: npx nx-cloud start-agent | |
if: ${{ env.NX_CLOUD_ACCESS_TOKEN }} | |
env: | |
NX_VERBOSE_LOGGING: ${{ runner.debug || '' }} | |
build-coverage-lint: | |
name: Build, code coverage unit tests, and linting | |
if: ${{ !startsWith( github.head_ref || github.ref_name, 'release-please--' ) }} | |
runs-on: ubuntu-latest | |
needs: install-deps | |
env: | |
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version-file: '.nvmrc' | |
- run: npx nx-cloud start-ci-run --agent-count=3 --distribute-on="manual" | |
if: ${{ env.NX_CLOUD_ACCESS_TOKEN }} | |
env: | |
NX_VERBOSE_LOGGING: ${{ runner.debug || '' }} | |
- name: Retrieve node_modules cache | |
uses: actions/cache/restore@v4 | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-node-${{ needs.install-deps.outputs.node-version }}-modules-${{ hashFiles('package-lock.json') }} | |
- uses: nrwl/nx-set-shas@v4 | |
# Rebase must happen before installing dependencies. | |
- name: Rebase current branch | |
run: node ./scripts/rebase-pr.js | |
- name: Run build, lint, test, and posttest for npm packages | |
run: | | |
npx nx affected --target build lint test posttest --configuration ci --parallel 1 --exclude '*,!tag:npm' | |
env: | |
NX_VERBOSE_LOGGING: ${{ runner.debug || '' }} | |
- name: Run lint, test, and posttest for non-npm packages | |
run: | | |
npx nx affected --target lint test posttest --configuration ci --parallel 1 --exclude 'tag:npm' | |
env: | |
NX_VERBOSE_LOGGING: ${{ runner.debug || '' }} | |
- name: Stop | |
if: ${{ always() && env.NX_CLOUD_ACCESS_TOKEN }} | |
run: npx nx-cloud stop-all-agents | |
env: | |
NX_VERBOSE_LOGGING: ${{ runner.debug || '' }} | |
build: | |
name: Build | |
needs: build-coverage-lint | |
runs-on: ubuntu-latest | |
if: ${{ always() && !startsWith( github.head_ref || github.ref_name, 'release-please--' ) }} | |
steps: | |
- name: Run build | |
run: | | |
[ '${{ needs.build-coverage-lint.result }}' == 'success' ] && echo Built. || false | |
coverage: | |
name: Code coverage | |
needs: build-coverage-lint | |
runs-on: ubuntu-latest | |
if: ${{ always() && !startsWith( github.head_ref || github.ref_name, 'release-please--' ) }} | |
steps: | |
- name: Run code coverage | |
run: | | |
[ '${{ needs.build-coverage-lint.result }}' == 'success' ] && echo Code covered. || false | |
lint: | |
name: Lint | |
needs: build-coverage-lint | |
runs-on: ubuntu-latest | |
if: ${{ always() && !startsWith( github.head_ref || github.ref_name, 'release-please--' ) }} | |
steps: | |
- name: Run lint | |
run: | | |
[ '${{ needs.build-coverage-lint.result }}' == 'success' ] && echo Linted. || false | |
check-workspace: | |
name: Check dependencies and resources | |
if: ${{ !cancelled() && !startsWith( github.head_ref || github.ref_name, 'release-please--' ) }} | |
needs: install-deps | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
# We need to fetch all branches and commits so that Nx affected has a base to compare against. | |
fetch-depth: 0 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version-file: '.nvmrc' | |
# Rebase must happen before installing dependencies. | |
- name: Rebase current branch | |
run: node ./scripts/rebase-pr.js | |
- name: Retrieve node_modules cache | |
uses: actions/cache/restore@v4 | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-node-${{ needs.install-deps.outputs.node-version }}-modules-${{ hashFiles('package-lock.json') }} | |
- name: Check library dependencies | |
run: npx skyux-dev check-lib-dependencies | |
- name: Check library missing peers | |
run: npx skyux-dev check-lib-missing-peers | |
- name: Check library resources | |
run: npx skyux-dev check-lib-resources | |
format: | |
name: Check formatting | |
needs: install-deps | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
# We need to fetch all branches and commits so that Nx affected has a base to compare against. | |
fetch-depth: 0 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version-file: '.nvmrc' | |
# Rebase must happen before installing dependencies. | |
- name: Rebase current branch | |
run: node ./scripts/rebase-pr.js | |
- name: Derive appropriate SHAs for base and head for `nx affected` commands | |
uses: nrwl/nx-set-shas@v4 | |
- name: Retrieve node_modules cache | |
uses: actions/cache/restore@v4 | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-node-${{ needs.install-deps.outputs.node-version }}-modules-${{ hashFiles('package-lock.json') }} | |
- name: Check code formatting | |
run: npx nx format:check | |
env: | |
NX_VERBOSE_LOGGING: ${{ runner.debug || '' }} | |
build-dist: | |
name: Build packages distribution | |
needs: install-deps | |
runs-on: ubuntu-latest | |
if: ${{ github.event_name != 'pull_request' }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version-file: '.nvmrc' | |
- name: Retrieve node_modules cache | |
uses: actions/cache/restore@v4 | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-node-${{ needs.install-deps.outputs.node-version }}-modules-${{ hashFiles('package-lock.json') }} | |
- name: Build packages dist | |
run: npx skyux-dev create-packages-dist | |
- name: Notify Slack (failure) | |
if: ${{ failure() }} | |
uses: rtCamp/action-slack-notify@v2 | |
env: | |
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} | |
SLACK_COLOR: ${{ job.status }} | |
SLACK_MESSAGE: 'Build packages distribution step failed on branch `${{ github.ref_name }}`.' | |
SLACK_ICON_EMOJI: ':github:' | |
SLACK_USERNAME: GitHub | |
#cor-skyux-notifications | |
SLACK_CHANNEL: C01GY7ZP4HM | |
SLACK_FOOTER: 'Blackbaud Sky Build User' | |
stop-agents: | |
name: Stop Nx Cloud agents | |
runs-on: ubuntu-latest | |
if: ${{ !cancelled() }} | |
needs: build-coverage-lint | |
steps: | |
- name: Stop Nx Cloud agents | |
run: echo "🛑 ☁️ 🕵️" |