Skip to content

CI

CI #32

Workflow file for this run

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 }}