mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
Based on recent discussions, these changes remove the Windows CI check because it has been too flaky for too long. Furthermore, we've concluded that the simulated file system in the compiler tests already catches the same set of bugs as running the tests on a real Windows system. PR Close #52140
244 lines
10 KiB
YAML
244 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@031962443584a0ac5cbd9d1c1b78b241453e4702
|
|
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@031962443584a0ac5cbd9d1c1b78b241453e4702
|
|
with:
|
|
cache-node-modules: true
|
|
- name: Setup Bazel
|
|
uses: angular/dev-infra/github-actions/bazel/setup@031962443584a0ac5cbd9d1c1b78b241453e4702
|
|
- name: Setup Bazel RBE
|
|
uses: angular/dev-infra/github-actions/bazel/configure-remote@031962443584a0ac5cbd9d1c1b78b241453e4702
|
|
- 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
|
|
|
|
test:
|
|
runs-on: ubuntu-latest-4core
|
|
steps:
|
|
- name: Initialize environment
|
|
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@031962443584a0ac5cbd9d1c1b78b241453e4702
|
|
with:
|
|
cache-node-modules: true
|
|
- name: Setup Bazel
|
|
uses: angular/dev-infra/github-actions/bazel/setup@031962443584a0ac5cbd9d1c1b78b241453e4702
|
|
- name: Setup Bazel Remote Caching
|
|
uses: angular/dev-infra/github-actions/bazel/configure-remote@031962443584a0ac5cbd9d1c1b78b241453e4702
|
|
- 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@031962443584a0ac5cbd9d1c1b78b241453e4702
|
|
with:
|
|
cache-node-modules: true
|
|
node-module-directories: |
|
|
./aio/node_modules
|
|
- name: Setup Bazel
|
|
uses: angular/dev-infra/github-actions/bazel/setup@031962443584a0ac5cbd9d1c1b78b241453e4702
|
|
- name: Setup Bazel RBE
|
|
uses: angular/dev-infra/github-actions/bazel/configure-remote@031962443584a0ac5cbd9d1c1b78b241453e4702
|
|
- 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@031962443584a0ac5cbd9d1c1b78b241453e4702
|
|
with:
|
|
cache-node-modules: true
|
|
node-module-directories: |
|
|
./aio/node_modules
|
|
- name: Setup Bazel
|
|
uses: angular/dev-infra/github-actions/bazel/setup@031962443584a0ac5cbd9d1c1b78b241453e4702
|
|
- name: Setup Bazel RBE
|
|
uses: angular/dev-infra/github-actions/bazel/configure-remote@031962443584a0ac5cbd9d1c1b78b241453e4702
|
|
- 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@031962443584a0ac5cbd9d1c1b78b241453e4702
|
|
with:
|
|
cache-node-modules: true
|
|
node-module-directories: |
|
|
./aio/node_modules
|
|
- name: Setup Bazel
|
|
uses: angular/dev-infra/github-actions/bazel/setup@031962443584a0ac5cbd9d1c1b78b241453e4702
|
|
- name: Setup Bazel RBE
|
|
uses: angular/dev-infra/github-actions/bazel/configure-remote@031962443584a0ac5cbd9d1c1b78b241453e4702
|
|
- 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
|
|
- name: Notify about failed deployment
|
|
if: ${{ failure() }}
|
|
uses: slackapi/slack-github-action@e28cf165c92ffef168d23c5c9000cffc8a25e117 # v=v1.24.0
|
|
with:
|
|
channel-id: 'C07DT5M6V,CKV1F72BG'
|
|
slack-message: 'Deploy to aio job failed for ${{ github.base_ref }} branch failed on build ${{ github.event.after }}: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}'
|
|
env:
|
|
SLACK_BOT_TOKEN: ${{ secrets.ANGULAR_ROBOT_SLACK_TOKEN }}
|
|
|
|
publish-snapshots:
|
|
if: github.event_name == 'push'
|
|
runs-on:
|
|
labels: ubuntu-latest
|
|
steps:
|
|
- name: Initialize environment
|
|
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@031962443584a0ac5cbd9d1c1b78b241453e4702
|
|
with:
|
|
cache-node-modules: true
|
|
- name: Setup Bazel
|
|
uses: angular/dev-infra/github-actions/bazel/setup@031962443584a0ac5cbd9d1c1b78b241453e4702
|
|
- name: Setup Bazel RBE
|
|
uses: angular/dev-infra/github-actions/bazel/configure-remote@031962443584a0ac5cbd9d1c1b78b241453e4702
|
|
- name: Install node modules
|
|
run: yarn install --frozen-lockfile
|
|
- run: echo "https://${{secrets.SNAPSHOT_BUILDS_GITHUB_TOKEN}}:@github.com" > ${HOME}/.git_credentials
|
|
- run: yarn build
|
|
- run: ./scripts/ci/publish-build-artifacts.sh
|
|
|
|
zone-js:
|
|
runs-on:
|
|
labels: ubuntu-latest-4core
|
|
steps:
|
|
- name: Initialize environment
|
|
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@031962443584a0ac5cbd9d1c1b78b241453e4702
|
|
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@031962443584a0ac5cbd9d1c1b78b241453e4702
|
|
- name: Setup Bazel RBE
|
|
uses: angular/dev-infra/github-actions/bazel/configure-remote@031962443584a0ac5cbd9d1c1b78b241453e4702
|
|
- 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
|