CI #32
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: | |
push: | |
branches: | |
- main | |
- '[0-9]+.[0-9]+.x' | |
pull_request: | |
types: [opened, synchronize, reopened] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
permissions: {} | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
analyze: | |
runs-on: ubuntu-latest | |
outputs: | |
snapshots: ${{ steps.filter.outputs.snapshots }} | |
steps: | |
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 | |
with: | |
persist-credentials: false | |
- uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50 # v2.11.1 | |
id: filter | |
with: | |
filters: | | |
snapshots: | |
- 'tests/legacy-cli/e2e/ng-snapshot/package.json' | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Initialize environment | |
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1d8a9ffebcea892d8be3675a3ef88e9b9252f059 | |
- name: Setup ESLint Caching | |
uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3.3.2 | |
with: | |
path: .eslintcache | |
key: ${{ runner.os }}-${{ hashFiles('.eslintrc.json') }} | |
- name: Install node modules | |
run: yarn install --frozen-lockfile --ignore-scripts | |
- name: Run ESLint | |
run: yarn lint --cache-strategy content | |
- name: Validate NgBot Configuration | |
run: yarn ng-dev ngbot verify | |
- name: Validate Circular Dependencies | |
run: yarn ts-circular-deps:check | |
- name: Run Validation | |
run: yarn -s admin validate | |
- name: Check tooling setup | |
run: yarn -s check-tooling-setup | |
- name: Check commit message | |
# Commit message validation is only done on pull requests as its too late to validate once | |
# it has been merged. | |
if: github.event_name == 'pull_request' | |
run: yarn ng-dev commit-message validate-range ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} | |
- name: Check code format | |
# Code formatting checks are only done on pull requests as its too late to validate once | |
# it has been merged. | |
if: github.event_name == 'pull_request' | |
run: yarn ng-dev format changed --check ${{ github.event.pull_request.base.sha }} | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Initialize environment | |
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1d8a9ffebcea892d8be3675a3ef88e9b9252f059 | |
- name: Setup Bazel | |
uses: angular/dev-infra/github-actions/bazel/setup@1d8a9ffebcea892d8be3675a3ef88e9b9252f059 | |
- name: Setup Bazel RBE | |
uses: angular/dev-infra/github-actions/bazel/configure-remote@1d8a9ffebcea892d8be3675a3ef88e9b9252f059 | |
- name: Install node modules | |
run: yarn install --frozen-lockfile | |
- name: Build release targets | |
run: yarn ng-dev release build | |
- name: Store PR release packages | |
if: github.event_name == 'pull_request' | |
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 | |
with: | |
name: packages | |
path: dist/releases/*.tgz | |
retention-days: 14 | |
test: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Initialize environment | |
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1d8a9ffebcea892d8be3675a3ef88e9b9252f059 | |
with: | |
fetch-depth: 1 | |
- name: Setup Bazel | |
uses: angular/dev-infra/github-actions/bazel/setup@1d8a9ffebcea892d8be3675a3ef88e9b9252f059 | |
- name: Setup Bazel RBE | |
uses: angular/dev-infra/github-actions/bazel/configure-remote@1d8a9ffebcea892d8be3675a3ef88e9b9252f059 | |
- name: Install node modules | |
run: yarn install --frozen-lockfile | |
- name: Run tests | |
run: yarn bazel test //packages/... | |
e2e: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
node: [18] | |
subset: [npm, yarn, esbuild] | |
shard: [0, 1, 2, 3, 4, 5] | |
exclude: | |
# Exclude Node.js v16 when running on a PR | |
- node: ${{ github.event_name != 'pull_request' && 'none' || '16' }} | |
# Exclude Windows when running on a PR | |
- os: ${{ github.event_name != 'pull_request' && 'none' || 'windows-latest' }} | |
# Skip yarn subset for Windows | |
- os: windows-latest | |
subset: yarn | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Initialize environment | |
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1d8a9ffebcea892d8be3675a3ef88e9b9252f059 | |
with: | |
fetch-depth: 1 | |
- name: Install node modules | |
run: yarn install --frozen-lockfile | |
- name: Setup Bazel | |
uses: angular/dev-infra/github-actions/bazel/setup@1d8a9ffebcea892d8be3675a3ef88e9b9252f059 | |
- name: Setup Bazel RBE | |
uses: angular/dev-infra/github-actions/bazel/configure-remote@1d8a9ffebcea892d8be3675a3ef88e9b9252f059 | |
- name: Run CLI E2E tests | |
run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} | |
e2e-snapshots: | |
needs: analyze | |
if: needs.analyze.outputs.snapshots == 'true' || github.event_name == 'push' | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
node: [18] | |
subset: [npm, yarn, esbuild] | |
shard: [0, 1, 2, 3, 4, 5] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Initialize environment | |
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1d8a9ffebcea892d8be3675a3ef88e9b9252f059 | |
with: | |
fetch-depth: 1 | |
- name: Install node modules | |
run: yarn install --frozen-lockfile | |
- name: Setup Bazel | |
uses: angular/dev-infra/github-actions/bazel/setup@1d8a9ffebcea892d8be3675a3ef88e9b9252f059 | |
- name: Setup Bazel RBE | |
uses: angular/dev-infra/github-actions/bazel/configure-remote@1d8a9ffebcea892d8be3675a3ef88e9b9252f059 | |
- name: Run CLI E2E tests | |
run: yarn bazel test --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} --config=e2e //tests/legacy-cli:e2e.snapshots.${{ matrix.subset }}_node${{ matrix.node }} |