Skip to content

Commit 5d5c743

Browse files
committed
build: update dev-infra and rework windows native testing
TODO
1 parent d16a9cc commit 5d5c743

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+545
-209
lines changed

.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# This file should be checked into version control along with the pnpm-lock.yaml file.
44
.npmrc=-1406867100
55
modules/testing/builder/package.json=973445093
6-
package.json=-1169147028
6+
package.json=-1043068245
77
packages/angular/build/package.json=-1114621695
88
packages/angular/cli/package.json=-1917515334
99
packages/angular/pwa/package.json=1108903917
@@ -17,7 +17,7 @@ packages/angular_devkit/schematics/package.json=-1133510866
1717
packages/angular_devkit/schematics_cli/package.json=-2026655035
1818
packages/ngtools/webpack/package.json=605871936
1919
packages/schematics/angular/package.json=251715148
20-
pnpm-lock.yaml=98829820
20+
pnpm-lock.yaml=-1661050370
2121
pnpm-workspace.yaml=-1264044456
2222
tests/package.json=700948366
23-
yarn.lock=-1562490692
23+
yarn.lock=-132814923

.bazelrc

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,6 @@ test:no-sharding --flaky_test_attempts=1 --test_sharding_strategy=disabled
3333
# See https://github.com/bazelbuild/bazel/issues/4603
3434
build --symlink_prefix=dist/
3535

36-
# Disable watchfs as it causes tests to be flaky on Windows
37-
# https://github.com/angular/angular/issues/29541
38-
build --nowatchfs
39-
4036
# Turn off legacy external runfiles
4137
build --nolegacy_external_runfiles
4238

@@ -162,10 +158,6 @@ build:remote-cache --google_default_credentials
162158
# Fixes use of npm paths with spaces such as some within the puppeteer module
163159
build --experimental_inprocess_symlink_creation
164160

165-
# Enable runfiles even on Windows.
166-
# Architect resolves output files from data files, and this isn't possible without runfile support.
167-
build --enable_runfiles
168-
169161
####################################################
170162
# rules_js specific flags
171163
####################################################
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
name: 'Native Windows Bazel e2e test'
2+
description: 'Runs an Angular CLI e2e Bazel test on native Windows (dispatched from inside WSL)'
3+
author: 'Angular'
4+
5+
inputs:
6+
test_target_name:
7+
description: E2E test target name
8+
required: true
9+
test_args:
10+
description: |
11+
TODO
12+
required: false
13+
default: ''
14+
15+
runs:
16+
using: composite
17+
steps:
18+
- name: Setup Bazel RBE
19+
uses: angular/dev-infra/github-actions/bazel/configure-remote@2667d139a421977a40c3ea7ec768609fb19a8b9d
20+
with:
21+
allow_windows_rbe: true
22+
23+
- name: Initialize WSL
24+
id: init_wsl
25+
uses: angular/dev-infra/github-actions/setup-wsl@e32a8061e4cad40f3e7fcb154e4cc25f6a59b21d
26+
with:
27+
wsl_firewall_interface: 'vEthernet (WSL (Hyper-V firewall))'
28+
29+
- name: Install node modules in WSL (re-using from previous install/cache restore)
30+
run: yarn install --immutable
31+
working-directory: ${{steps.init_wsl.outputs.repo_path}}
32+
shell: wsl-bash {0}
33+
34+
- name: Build test binary for Windows (inside WSL)
35+
shell: wsl-bash {0}
36+
working-directory: ${{steps.init_wsl.outputs.repo_path}}
37+
run: |
38+
yarn bazel \
39+
build --config=e2e //tests/legacy-cli:${{inputs.test_target_name}} --platforms=tools:windows_x64
40+
env:
41+
# See: https://devblogs.microsoft.com/commandline/share-environment-vars-between-wsl-and-windows
42+
WSLENV: 'GOOGLE_APPLICATION_CREDENTIALS/p'
43+
44+
- name: Copying binary artifact to host
45+
shell: wsl-bash {0}
46+
working-directory: ${{steps.init_wsl.outputs.repo_path}}
47+
run: |
48+
tar -cf /tmp/test.tar.gz dist/bin/tests/legacy-cli/${{inputs.test_target_name}}_
49+
mkdir /mnt/c/test
50+
mv /tmp/test.tar.gz /mnt/c/test
51+
(cd /mnt/c/test && tar -xf /mnt/c/test/test.tar.gz)
52+
53+
- name: Convert symlinks for Windows host
54+
shell: wsl-bash {0}
55+
working-directory: ${{steps.init_wsl.outputs.repo_path}}
56+
run: |
57+
runfiles_dir="/mnt/c/test/dist/bin/tests/legacy-cli/${{inputs.test_target_name}}_/${{inputs.test_target_name}}.bat.runfiles"
58+
59+
# Make WSL symlinks compatible on Windows native file system.
60+
node scripts/windows-testing/convert-symlinks.mjs $runfiles_dir "${{steps.init_wsl.outputs.cmd_path}}"
61+
62+
# Needed for resolution.
63+
# TODO(devversion): consult with Aspect on why this is needed.
64+
(cd $runfiles_dir/angular_cli && ${{steps.init_wsl.outputs.cmd_path}} /C "mklink /D external ..")
65+
66+
- name: Run tests
67+
shell: bash # Note: This is Git Bash.
68+
env:
69+
BAZEL_BINDIR: '.'
70+
working-directory: "C:\\test"
71+
run: |
72+
cd dist/bin/tests/legacy-cli/${{inputs.test_target_name}}_/${{inputs.test_target_name}}.bat.runfiles/angular_cli
73+
../../${{inputs.test_target_name}} ${{inputs.test_args}}

.github/workflows/ci.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,7 @@ jobs:
8484
node: 20
8585
runs-on: ${{ matrix.os }}
8686
steps:
87-
# Workaround for: https://github.com/bazel-contrib/bazel-lib/issues/968.
88-
# TODO(devversion): Remove when Aspect lib issue is fixed.
89-
- run: choco install gzip
87+
- uses: Vampire/setup-wsl@v4
9088
if: ${{matrix.os == 'windows-latest'}}
9189
- name: Initialize environment
9290
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3240b00315baa96f1b2deea2f71315f870dbb43

.github/workflows/pr.yml

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -126,22 +126,42 @@ jobs:
126126
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 }}
127127

128128
e2e-windows-subset:
129-
needs: build
130-
runs-on: windows-latest
129+
# needs: build
130+
runs-on: windows-2025
131+
env:
132+
ACTIONS_STEP_DEBUG: 'true'
131133
steps:
132-
# Workaround for: https://github.com/bazel-contrib/bazel-lib/issues/968.
133-
# TODO(devversion): Remove when Aspect lib issue is fixed.
134-
- run: choco install gzip
135134
- name: Initialize environment
136-
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b3240b00315baa96f1b2deea2f71315f870dbb43
137-
- name: Install node modules
138-
run: yarn install --immutable
139-
- name: Setup Bazel
140-
uses: angular/dev-infra/github-actions/bazel/setup@b3240b00315baa96f1b2deea2f71315f870dbb43
141-
- name: Setup Bazel RBE
142-
uses: angular/dev-infra/github-actions/bazel/configure-remote@b3240b00315baa96f1b2deea2f71315f870dbb43
135+
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@0000d926624b2fd918e93f1c6b5e2defba9af91f
136+
- run: ls -alh D:/a/angular-cli/angular-cli
137+
shell: bash
143138
- name: Run CLI E2E tests
144-
run: yarn bazel test --config=e2e //tests/legacy-cli:e2e_node22 --test_filter="tests/basic/{build,rebuild}.ts" --test_arg="--esbuild"
139+
uses: ./.github/shared-actions/windows-bazel-test
140+
with:
141+
test_target_name: e2e_node22
142+
test_args: --esbuild --glob "tests/basic/{build,rebuild}.ts"
143+
- run: ls -alh D:/a/angular-cli/angular-cli
144+
shell: bash
145+
146+
# e2e_windows:
147+
# strategy:
148+
# fail-fast: false
149+
# matrix:
150+
# os: [windows-2025]
151+
# node: [22]
152+
# subset: [npm, esbuild]
153+
# shard: [0, 1, 2, 3, 4, 5]
154+
# runs-on: ${{ matrix.os }}
155+
# steps:
156+
# - name: Initialize environment
157+
# uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@d16848fd2ed19fce59488b540fa26a3353c72ad4
158+
# - name: Run CLI E2E tests
159+
# uses: ./.github/shared-actions/windows-bazel-test
160+
# with:
161+
# command: |
162+
# yarn bazel test \
163+
# --define=E2E_SHARD_TOTAL=6 --define=E2E_SHARD_INDEX=${{ matrix.shard }} \
164+
# --config=e2e //tests/legacy-cli:e2e.${{ matrix.subset }}_node${{ matrix.node }} \
145165

146166
e2e-package-managers:
147167
needs: build

WORKSPACE

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,6 @@ workspace(name = "angular_cli")
22

33
DEFAULT_NODE_VERSION = "20.11.1"
44

5-
# Workaround for: https://github.com/bazel-contrib/bazel-lib/issues/968.
6-
# Override toolchain for tar on windows.
7-
register_toolchains(
8-
"//tools:windows_tar_system_toolchain",
9-
)
10-
115
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_file")
126

137
http_archive(
@@ -145,13 +139,6 @@ aspect_bazel_lib_dependencies()
145139

146140
aspect_bazel_lib_register_toolchains()
147141

148-
register_toolchains(
149-
"@npm//@angular/build-tooling/bazel/git-toolchain:git_linux_toolchain",
150-
"@npm//@angular/build-tooling/bazel/git-toolchain:git_macos_x86_toolchain",
151-
"@npm//@angular/build-tooling/bazel/git-toolchain:git_macos_arm64_toolchain",
152-
"@npm//@angular/build-tooling/bazel/git-toolchain:git_windows_toolchain",
153-
)
154-
155142
load("@npm//@angular/build-tooling/bazel/browsers:browser_repositories.bzl", "browser_repositories")
156143

157144
browser_repositories()
@@ -205,6 +192,13 @@ npm_translate_lock(
205192
# for `rules_nodejs` dependencies :)
206193
},
207194
pnpm_lock = "//:pnpm-lock.yaml",
195+
public_hoist_packages = {
196+
# Pino of Verdaccio can't be bundled, so we make it loadable as runtime dep.
197+
# Similarly, logger-prettify is dynamically loaded at runtime.
198+
"pino": [""],
199+
"@verdaccio/config": [""],
200+
"@verdaccio/logger-prettify": [""],
201+
},
208202
update_pnpm_lock = True,
209203
verify_node_modules_ignored = "//:.bazelignore",
210204
yarn_lock = "//:yarn.lock",
@@ -216,8 +210,6 @@ npm_repositories()
216210

217211
http_archive(
218212
name = "aspect_rules_ts",
219-
patch_args = ["-p1"],
220-
patches = ["//tools:rules_ts_windows.patch"],
221213
sha256 = "4263532b2fb4d16f309d80e3597191a1cb2fb69c19e95d91711bd6b97874705e",
222214
strip_prefix = "rules_ts-3.5.0",
223215
url = "https://github.com/aspect-build/rules_ts/releases/download/v3.5.0/rules_ts-v3.5.0.tar.gz",
@@ -253,7 +245,7 @@ load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
253245

254246
git_repository(
255247
name = "devinfra",
256-
commit = "0ad6a370f70638e785d6ef1f90dc6ede34684a47",
248+
commit = "0f920f422b8bbf1ca96a72cf01e18b95e266dc98",
257249
remote = "https://github.com/angular/dev-infra.git",
258250
)
259251

@@ -264,3 +256,10 @@ setup_dependencies_1()
264256
load("@devinfra//bazel:setup_dependencies_2.bzl", "setup_dependencies_2")
265257

266258
setup_dependencies_2()
259+
260+
register_toolchains(
261+
"@devinfra//bazel/git-toolchain:git_linux_toolchain",
262+
"@devinfra//bazel/git-toolchain:git_macos_x86_toolchain",
263+
"@devinfra//bazel/git-toolchain:git_macos_arm64_toolchain",
264+
"@devinfra//bazel/git-toolchain:git_windows_toolchain",
265+
)

goldens/BUILD.bazel

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
load("@aspect_bazel_lib//lib:copy_to_bin.bzl", "copy_to_bin")
2+
13
package(default_visibility = ["//visibility:public"])
24

3-
filegroup(
5+
copy_to_bin(
46
name = "public-api",
57
srcs = glob([
68
"public-api/**/*.md",

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@
4444
"devDependencies": {
4545
"@ampproject/remapping": "2.3.0",
4646
"@angular/animations": "19.2.0-rc.0",
47-
"@angular/bazel": "https://github.com/angular/bazel-builds.git#17b980a15a1adbff7f09dfad04236abadaa6cbe5",
48-
"@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#a6a996a69cfc03b3fbe538f11dd24b7bc4b30592",
47+
"@angular/bazel": "https://github.com/angular/bazel-builds.git#58e1a344eed2dfea489cd290a4b4a963f7e3ac65",
48+
"@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#d4727212a9d0f7eb63ae3116d73c769d9bd0bdc1",
4949
"@angular/cdk": "19.2.0-rc.0",
5050
"@angular/common": "19.2.0-rc.0",
5151
"@angular/compiler": "19.2.0-rc.0",
@@ -82,6 +82,7 @@
8282
"@listr2/prompt-adapter-inquirer": "2.0.18",
8383
"@rollup/plugin-alias": "^5.1.1",
8484
"@rollup/plugin-commonjs": "^28.0.0",
85+
"@rollup/plugin-json": "^6.1.0",
8586
"@rollup/plugin-node-resolve": "^13.0.5",
8687
"@stylistic/eslint-plugin": "^4.0.0",
8788
"@types/babel__core": "7.20.5",

packages/angular/build/BUILD.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
load("@npm//@angular/build-tooling/bazel/api-golden:index.bzl", "api_golden_test_npm_package")
1+
load("@@devinfra//bazel/api-golden:index_rjs.bzl", "api_golden_test_npm_package")
22
load("@npm2//:defs.bzl", "npm_link_all_packages")
33
load("//tools:defaults2.bzl", "copy_to_bin", "jasmine_test", "npm_package", "ts_project")
44
load("//tools:ts_json_schema.bzl", "ts_json_schema")

packages/ngtools/webpack/BUILD.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# Use of this source code is governed by an MIT-style license that can be
44
# found in the LICENSE file at https://angular.dev/license
55

6-
load("@npm//@angular/build-tooling/bazel/api-golden:index.bzl", "api_golden_test_npm_package")
6+
load("@devinfra//bazel/api-golden:index_rjs.bzl", "api_golden_test_npm_package")
77
load("@npm2//:defs.bzl", "npm_link_all_packages")
88
load("//tools:defaults2.bzl", "jasmine_test", "npm_package", "ts_project")
99

pnpm-lock.yaml

Lines changed: 16 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)