mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
236 lines
10 KiB
YAML
236 lines
10 KiB
YAML
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:
|
|
lint:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Initialize environment
|
|
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f245bb8cf1942e3fb147febae2dc31dcb84fd5fa
|
|
with:
|
|
cache-node-modules: true
|
|
node-module-directories: |
|
|
./node_modules
|
|
./aio/node_modules
|
|
- name: Install node modules
|
|
run: yarn install --frozen-lockfile
|
|
- name: Install node modules in aio
|
|
run: yarn install --frozen-lockfile --cwd aio
|
|
- name: Check code lint
|
|
run: yarn -s tslint
|
|
- name: Check code lint in aio
|
|
run: yarn -s --cwd aio lint
|
|
- name: Check for circular dependencies
|
|
run: yarn -s ts-circular-deps:check
|
|
- name: Validate pull approve configuration
|
|
run: yarn -s ng-dev pullapprove verify
|
|
- name: Validate angular robot configuration
|
|
run: yarn -s ng-dev ngbot verify
|
|
- name: Confirm code builds with typescript as expected
|
|
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 }}
|
|
|
|
devtools:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Initialize environment
|
|
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f245bb8cf1942e3fb147febae2dc31dcb84fd5fa
|
|
with:
|
|
cache-node-modules: true
|
|
- name: Setup Bazel
|
|
uses: angular/dev-infra/github-actions/bazel/setup@f245bb8cf1942e3fb147febae2dc31dcb84fd5fa
|
|
- name: Setup Bazel RBE
|
|
uses: angular/dev-infra/github-actions/bazel/configure-remote@f245bb8cf1942e3fb147febae2dc31dcb84fd5fa
|
|
- name: Install node modules
|
|
run: yarn install --frozen-lockfile
|
|
- name: Run unit tests
|
|
run: yarn devtools:test
|
|
- name: Test build
|
|
run: yarn devtools:build:chrome
|
|
|
|
framework-win:
|
|
runs-on: windows-latest
|
|
steps:
|
|
- name: Initialize environment
|
|
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f245bb8cf1942e3fb147febae2dc31dcb84fd5fa
|
|
with:
|
|
cache-node-modules: true
|
|
- name: Setup Bazel
|
|
uses: angular/dev-infra/github-actions/bazel/setup@f245bb8cf1942e3fb147febae2dc31dcb84fd5fa
|
|
- name: Setup Bazel Remote Caching
|
|
uses: angular/dev-infra/github-actions/bazel/configure-remote@f245bb8cf1942e3fb147febae2dc31dcb84fd5fa
|
|
- name: Install node modules
|
|
run: yarn install --frozen-lockfile --network-timeout 100000
|
|
- name: Test all windows CI targets
|
|
# Skip the simulated file system tests on Windows, because they tend to be flaky.
|
|
# Note that we need to pass `NG_SKIP_SIMULATED_FS` using `--test_env`, because the
|
|
# environment variable doesn't get picked up in Bazel when specified through `env` in GHA.
|
|
run: bazel test --test_tag_filters="-browser:chromium-local" --test_env=NG_SKIP_SIMULATED_FS=true //packages/compiler-cli/...
|
|
|
|
test:
|
|
runs-on: ubuntu-latest-4core
|
|
steps:
|
|
- name: Initialize environment
|
|
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f245bb8cf1942e3fb147febae2dc31dcb84fd5fa
|
|
with:
|
|
cache-node-modules: true
|
|
- name: Setup Bazel
|
|
uses: angular/dev-infra/github-actions/bazel/setup@f245bb8cf1942e3fb147febae2dc31dcb84fd5fa
|
|
- name: Setup Bazel Remote Caching
|
|
uses: angular/dev-infra/github-actions/bazel/configure-remote@f245bb8cf1942e3fb147febae2dc31dcb84fd5fa
|
|
- name: Install node modules
|
|
run: yarn install --frozen-lockfile --network-timeout 100000
|
|
- name: Run CI tests for framework
|
|
run: yarn test:ci
|
|
|
|
aio:
|
|
runs-on: ubuntu-latest-4core
|
|
steps:
|
|
- name: Initialize environment
|
|
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f245bb8cf1942e3fb147febae2dc31dcb84fd5fa
|
|
with:
|
|
cache-node-modules: true
|
|
node-module-directories: |
|
|
./aio/node_modules
|
|
- name: Setup Bazel
|
|
uses: angular/dev-infra/github-actions/bazel/setup@f245bb8cf1942e3fb147febae2dc31dcb84fd5fa
|
|
- name: Setup Bazel RBE
|
|
uses: angular/dev-infra/github-actions/bazel/configure-remote@f245bb8cf1942e3fb147febae2dc31dcb84fd5fa
|
|
- name: Install node modules for aio
|
|
run: yarn install --cwd aio --frozen-lockfile
|
|
- name: Run AIO tests with upstream packages
|
|
run: yarn --cwd aio test:ci
|
|
- name: Check generated bundle sizes
|
|
run: yarn --cwd aio payload-size
|
|
|
|
aio-local:
|
|
runs-on:
|
|
labels: ubuntu-latest-4core
|
|
steps:
|
|
- name: Initialize environment
|
|
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f245bb8cf1942e3fb147febae2dc31dcb84fd5fa
|
|
with:
|
|
cache-node-modules: true
|
|
node-module-directories: |
|
|
./aio/node_modules
|
|
- name: Setup Bazel
|
|
uses: angular/dev-infra/github-actions/bazel/setup@f245bb8cf1942e3fb147febae2dc31dcb84fd5fa
|
|
- name: Setup Bazel RBE
|
|
uses: angular/dev-infra/github-actions/bazel/configure-remote@f245bb8cf1942e3fb147febae2dc31dcb84fd5fa
|
|
- name: Install node modules
|
|
run: yarn install --cwd aio --frozen-lockfile
|
|
- name: Run AIO tests with local packages
|
|
run: yarn --cwd aio test-local:ci
|
|
- name: Check generated bundle sizes
|
|
run: yarn --cwd aio payload-size aio-local
|
|
|
|
aio-deploy:
|
|
needs: [aio]
|
|
if: needs.aio.result == 'success' && github.event_name == 'push'
|
|
runs-on:
|
|
labels: ubuntu-latest
|
|
steps:
|
|
- name: Initialize environment
|
|
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f245bb8cf1942e3fb147febae2dc31dcb84fd5fa
|
|
with:
|
|
cache-node-modules: true
|
|
node-module-directories: |
|
|
./aio/node_modules
|
|
- name: Setup Bazel
|
|
uses: angular/dev-infra/github-actions/bazel/setup@f245bb8cf1942e3fb147febae2dc31dcb84fd5fa
|
|
- name: Setup Bazel RBE
|
|
uses: angular/dev-infra/github-actions/bazel/configure-remote@f245bb8cf1942e3fb147febae2dc31dcb84fd5fa
|
|
- name: Install node modules for aio
|
|
run: yarn install --cwd aio --frozen-lockfile
|
|
- name: Set the stable branch environment variable
|
|
id: latest_version
|
|
run: |
|
|
echo "CI_STABLE_BRANCH=$(npm info @angular/core dist-tags.latest | sed -r 's/^\s*([0-9]+\.[0-9]+)\.[0-9]+.*$/\1.x/')" >> $GITHUB_OUTPUT
|
|
echo "CI_BRANCH=$(echo ${{ github.event.ref }} | cut -d '/' -f 3)" >> $GITHUB_OUTPUT
|
|
- name: Deploy aio to production
|
|
env:
|
|
CI_AIO_MIN_PWA_SCORE: '95'
|
|
CI_COMMIT: ${{ github.event.after }}
|
|
CI_REPO_NAME: 'angular'
|
|
CI_PULL_REQUEST: 'false'
|
|
CI_REPO_OWNER: 'angular'
|
|
CI_BUILD_URL: '${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}'
|
|
CI_STABLE_BRANCH: ${{ steps.latest_version.outputs.CI_STABLE_BRANCH }}
|
|
CI_BRANCH: ${{ steps.latest_version.outputs.CI_BRANCH }}
|
|
CI_SECRET_AIO_DEPLOY_FIREBASE_TOKEN: ${{ secrets.AIO_DEPLOY_TOKEN }}
|
|
CI_SECRET_PAYLOAD_FIREBASE_TOKEN: ${{ secrets.AIO_PAYLOAD_TOKEN }}
|
|
run: yarn --cwd aio deploy-production
|
|
|
|
zone-js:
|
|
runs-on:
|
|
labels: ubuntu-latest-4core
|
|
steps:
|
|
- name: Initialize environment
|
|
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@f245bb8cf1942e3fb147febae2dc31dcb84fd5fa
|
|
with:
|
|
cache-node-modules: true
|
|
node-module-directories: |
|
|
./node_modules
|
|
./packages/zone.js/node_modules
|
|
./packages/zone.js/test/typings/node_modules
|
|
- name: Setup Bazel
|
|
uses: angular/dev-infra/github-actions/bazel/setup@f245bb8cf1942e3fb147febae2dc31dcb84fd5fa
|
|
- name: Setup Bazel RBE
|
|
uses: angular/dev-infra/github-actions/bazel/configure-remote@f245bb8cf1942e3fb147febae2dc31dcb84fd5fa
|
|
- name: Install node modules
|
|
run: yarn install --frozen-lockfile
|
|
- run: |
|
|
yarn bazel build \
|
|
//packages/zone.js/bundles:zone.umd.js \
|
|
//packages/zone.js:npm_package \
|
|
//packages/zone.js/test/closure:closure_js \
|
|
//packages/zone.js:zone_externs
|
|
|
|
- run: |
|
|
mkdir -p packages/zone.js/build/
|
|
mkdir -p packages/zone.js/build/test/
|
|
mkdir -p packages/zone.js/test/
|
|
|
|
cp dist/bin/packages/zone.js/bundles/zone.umd.js packages/zone.js/build/zone.umd.js
|
|
cp dist/bin/packages/zone.js/npm_package/bundles/zone-mix.umd.js ./packages/zone.js/test/extra/
|
|
cp dist/bin/packages/zone.js/npm_package/bundles/zone-patch-electron.umd.js ./packages/zone.js/test/extra/
|
|
cp dist/bin/packages/zone.js/test/closure/zone.closure.mjs ./packages/zone.js/build/test/zone.closure.mjs
|
|
cp dist/bin/packages/zone.js/zone_externs.js ./packages/zone.js/build/zone_externs.js
|
|
|
|
# Install
|
|
- run: yarn --cwd packages/zone.js install --frozen-lockfile --non-interactive
|
|
# Run zone.js tools tests
|
|
- run: yarn --cwd packages/zone.js promisetest
|
|
- run: yarn --cwd packages/zone.js promisefinallytest
|
|
- run: yarn --cwd packages/zone.js jest:test
|
|
- run: yarn --cwd packages/zone.js jest:nodetest
|
|
- run: yarn --cwd packages/zone.js electrontest
|
|
- run: yarn --cwd packages/zone.js closuretest
|
|
- run: yarn --cwd packages/zone.js/test/typings install --frozen-lockfile --non-interactive
|
|
- run: yarn --cwd packages/zone.js/test/typings test
|