mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
Use the http_server rule to serve adev locally to allow for slightly faster rebuilds and livereload on changes PR Close #57428
210 lines
9.5 KiB
YAML
210 lines
9.5 KiB
YAML
name: Pull Request
|
|
|
|
on:
|
|
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@03b8a7dffd1205e061f0bee949024ebefc2a6592
|
|
with:
|
|
cache-node-modules: true
|
|
- name: Install node modules
|
|
run: yarn install --frozen-lockfile
|
|
- name: Check code lint
|
|
run: yarn -s tslint
|
|
- 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
|
|
run: yarn ng-dev commit-message validate-range ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }}
|
|
- name: Check code format
|
|
run: yarn ng-dev format changed --check ${{ github.event.pull_request.base.sha }}
|
|
- name: Check Package Licenses
|
|
uses: angular/dev-infra/github-actions/linting/licenses@56966c765e97f463c4795fac85d46543d1e6b342
|
|
with:
|
|
allow-dependencies-licenses: 'pkg:npm/google-protobuf@'
|
|
|
|
devtools:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Initialize environment
|
|
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@03b8a7dffd1205e061f0bee949024ebefc2a6592
|
|
with:
|
|
cache-node-modules: true
|
|
- name: Setup Bazel
|
|
uses: angular/dev-infra/github-actions/bazel/setup@03b8a7dffd1205e061f0bee949024ebefc2a6592
|
|
- name: Setup Bazel RBE
|
|
uses: angular/dev-infra/github-actions/bazel/configure-remote@03b8a7dffd1205e061f0bee949024ebefc2a6592
|
|
- 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@03b8a7dffd1205e061f0bee949024ebefc2a6592
|
|
with:
|
|
cache-node-modules: true
|
|
- name: Setup Bazel
|
|
uses: angular/dev-infra/github-actions/bazel/setup@03b8a7dffd1205e061f0bee949024ebefc2a6592
|
|
- name: Setup Bazel Remote Caching
|
|
uses: angular/dev-infra/github-actions/bazel/configure-remote@03b8a7dffd1205e061f0bee949024ebefc2a6592
|
|
- name: Install node modules
|
|
run: yarn install --frozen-lockfile --network-timeout 100000
|
|
- name: Run CI tests for framework
|
|
run: yarn test:ci
|
|
|
|
artifacts:
|
|
needs: [test]
|
|
if: needs.test.result == 'success'
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Initialize environment
|
|
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@03b8a7dffd1205e061f0bee949024ebefc2a6592
|
|
with:
|
|
cache-node-modules: true
|
|
- name: Setup Bazel
|
|
uses: angular/dev-infra/github-actions/bazel/setup@03b8a7dffd1205e061f0bee949024ebefc2a6592
|
|
- name: Setup Bazel Remote Caching
|
|
uses: angular/dev-infra/github-actions/bazel/configure-remote@03b8a7dffd1205e061f0bee949024ebefc2a6592
|
|
- name: Install node modules
|
|
run: yarn install --frozen-lockfile --network-timeout 100000
|
|
- name: Run CI tests for framework
|
|
run: yarn tsx ./scripts/build/build-packages-dist.mts
|
|
- name: Archive build artifacts
|
|
uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029 # v4.3.5
|
|
with:
|
|
name: pr-artifacts-${{ github.event.number }}
|
|
path: dist/packages-dist/
|
|
|
|
adev:
|
|
runs-on:
|
|
labels: ubuntu-latest-4core
|
|
steps:
|
|
- name: Initialize environment
|
|
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@03b8a7dffd1205e061f0bee949024ebefc2a6592
|
|
- name: Setup Bazel
|
|
uses: angular/dev-infra/github-actions/bazel/setup@03b8a7dffd1205e061f0bee949024ebefc2a6592
|
|
- name: Setup Bazel RBE
|
|
uses: angular/dev-infra/github-actions/bazel/configure-remote@03b8a7dffd1205e061f0bee949024ebefc2a6592
|
|
- name: Install node modules
|
|
run: yarn install --frozen-lockfile
|
|
- name: Build adev in fast mode to ensure it continues to work
|
|
run: yarn bazel build //adev:build --config=release
|
|
- name: Run tests
|
|
run: yarn bazel test //adev:test
|
|
|
|
zone-js:
|
|
runs-on:
|
|
labels: ubuntu-latest-4core
|
|
steps:
|
|
- name: Initialize environment
|
|
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@03b8a7dffd1205e061f0bee949024ebefc2a6592
|
|
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@03b8a7dffd1205e061f0bee949024ebefc2a6592
|
|
- name: Setup Bazel RBE
|
|
uses: angular/dev-infra/github-actions/bazel/configure-remote@03b8a7dffd1205e061f0bee949024ebefc2a6592
|
|
- 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 \
|
|
|
|
- run: |
|
|
rm -Rf packages/zone.js/build
|
|
rm -Rf packages/zone.js/test/extra/*.umd.js
|
|
|
|
mkdir -p packages/zone.js/build/
|
|
mkdir -p packages/zone.js/build/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
|
|
|
|
# Install
|
|
- run: yarn --cwd packages/zone.js install --frozen-lockfile --non-interactive
|
|
# Run zone.js tools tests
|
|
- 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/test/typings install --frozen-lockfile --non-interactive
|
|
- run: yarn --cwd packages/zone.js/test/typings test
|
|
|
|
saucelabs:
|
|
runs-on: ubuntu-latest-4core
|
|
env:
|
|
SAUCE_TUNNEL_IDENTIFIER: angular-framework-${{ github.run_number }}
|
|
steps:
|
|
- name: Initialize environment
|
|
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@03b8a7dffd1205e061f0bee949024ebefc2a6592
|
|
with:
|
|
cache-node-modules: true
|
|
- name: Install node modules
|
|
run: yarn install --frozen-lockfile
|
|
- name: Setup Bazel
|
|
uses: angular/dev-infra/github-actions/bazel/setup@03b8a7dffd1205e061f0bee949024ebefc2a6592
|
|
- name: Setup Saucelabs Variables
|
|
uses: angular/dev-infra/github-actions/saucelabs@03b8a7dffd1205e061f0bee949024ebefc2a6592
|
|
- name: Starting Saucelabs tunnel service
|
|
run: ./tools/saucelabs/sauce-service.sh run &
|
|
# Build test fixtures for a test that rely on Bazel-generated fixtures. Note that disabling
|
|
# specific tests which are reliant on such generated fixtures is not an option as SystemJS
|
|
# in the Saucelabs legacy job always fetches referenced files, even if the imports would be
|
|
# guarded by an check to skip in the Saucelabs legacy job. We should be good running such
|
|
# test in all supported browsers on Saucelabs anyway until this job can be removed.
|
|
- name: Preparing Bazel-generated fixtures required in legacy tests
|
|
run: |
|
|
yarn bazel build //packages/core/test:downleveled_es5_fixture //packages/common/locales
|
|
# Needed for the ES5 downlevel reflector test in `packages/core/test/reflection`.
|
|
mkdir -p dist/legacy-test-out/core/test/reflection/
|
|
cp dist/bin/packages/core/test/reflection/es5_downleveled_inheritance_fixture.js \
|
|
dist/legacy-test-out/core/test/reflection/es5_downleveled_inheritance_fixture.js
|
|
# Locale files are needed for i18n tests running within Saucelabs. These are added
|
|
# directly as sources so that the TypeScript compilation of `/packages/tsconfig.json`
|
|
# can succeed. Note that the base locale and currencies files are checked-in, so
|
|
# we do not need to re-generate those through Bazel.
|
|
mkdir -p packages/common/locales/extra
|
|
cp dist/bin/packages/common/locales/*.ts packages/common/locales
|
|
cp dist/bin/packages/common/locales/extra/*.ts packages/common/locales/extra
|
|
- name: Build bundle of tests to run on Saucelabs
|
|
run: node tools/legacy-saucelabs/build-saucelabs-test-bundle.mjs
|
|
- name: Wait and confirm Saucelabs tunnel has connected
|
|
run: ./tools/saucelabs/sauce-service.sh ready-wait
|
|
timeout-minutes: 3
|
|
- name: Running tests on Saucelabs.
|
|
run: KARMA_WEB_TEST_MODE=SL_REQUIRED yarn karma start ./karma-js.conf.js --single-run
|
|
- name: Stop Saucelabs tunnel service
|
|
run: ./tools/saucelabs/sauce-service.sh stop
|