Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions .github/workflows/build-cli-native-archives.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,20 +13,22 @@ on:
targets:
description: >
JSON array of target objects to build. Each object must have 'os', 'runner', and 'rids' keys.
Defaults to all platforms (linux-x64, win-x64, osx-arm64).
Defaults to all platforms (linux-x64, linux-arm64, win-x64, win-arm64, osx-arm64).
required: false
type: string
default: >-
[
{"os": "ubuntu-latest", "runner": "8-core-ubuntu-latest", "rids": "linux-x64"},
{"os": "ubuntu-latest", "runner": "ubuntu-24.04-arm", "rids": "linux-arm64"},
Copy link
Copy Markdown
Member

@JamesNK JamesNK Mar 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you have a plan for Grpc.Tools in Linux ARM64?

I believe the issue is this one: grpc/grpc#38538. Changing Grpc.Tools to version 2.68.1 should fix it. I don't believe there should be any negative side effect of using an older version, but some basic smoke testing of the dashboard after making the change would be good.

Alternatively, Grpc.Tools could be moved out of the build pipeline. Have the proto files in their own project, build a NuGet package, publish it, and then have dashboard/apphost projects reference the NuGet package.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I talked with gRPC person about this and a fix - grpc/grpc#41543 - might be in the latest preview. Try 2.80.0-pre1 and see whether that fixes it.

{"os": "windows-latest", "runner": "windows-latest", "rids": "win-x64"},
{"os": "windows-latest", "runner": "windows-11-arm", "rids": "win-arm64"},
{"os": "macos-latest", "runner": "macos-latest", "rids": "osx-arm64"}
Comment on lines 21 to 25
Copy link

Copilot AI Mar 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The default targets array now has multiple entries with the same os value (ubuntu-latest for both linux-x64/linux-arm64 and windows-latest for both win-x64/win-arm64). Since the matrix job name is Build CLI (${{ matrix.targets.os }}), this will create duplicate job names in the Actions UI, making it hard to tell which RID/runner failed. Consider changing the job name to include ${{ matrix.targets.rids }} (and/or ${{ matrix.targets.runner }}), or make the os field unique per target (or drop it if it’s only used for display).

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed — changed job name to Build CLI (${{ matrix.targets.rids }}) so each target gets a unique name like "Build CLI (linux-arm64)".

]

jobs:

build_cli_archives:
name: Build CLI (${{ matrix.targets.os }})
name: Build CLI (${{ matrix.targets.rids }})
runs-on: ${{ matrix.targets.runner }}
strategy:
matrix:
Expand Down
14 changes: 9 additions & 5 deletions .github/workflows/run-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -149,11 +149,15 @@ jobs:
shell: pwsh
run: |
$runnerOs = "${{ runner.os }}"
switch ($runnerOs) {
'Linux' { $rid = 'linux-x64' }
'macOS' { $rid = 'osx-arm64' }
'Windows' { $rid = 'win-x64' }
Default { Write-Error "Unknown runner.os '$runnerOs' for RID mapping"; exit 1 }
$runnerArch = "${{ runner.arch }}"
$rid = switch ("$runnerOs-$runnerArch") {
'Linux-X64' { 'linux-x64' }
'Linux-ARM64' { 'linux-arm64' }
'Windows-X64' { 'win-x64' }
'Windows-ARM64' { 'win-arm64' }
'macOS-ARM64' { 'osx-arm64' }
'macOS-X64' { 'osx-x64' }
Default { Write-Error "Unknown runner OS/arch '$runnerOs-$runnerArch' for RID mapping"; exit 1 }
}
Write-Host "Using RID=$rid"
"RID=$rid" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
Expand Down
16 changes: 16 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,13 @@ jobs:
versionOverrideArg: ${{ inputs.versionOverrideArg }}
targets: '[{"os": "ubuntu-latest", "runner": "8-core-ubuntu-latest", "rids": "linux-x64"}]'

build_cli_archive_linux_arm64:
name: Build native CLI archive (Linux ARM64)
uses: ./.github/workflows/build-cli-native-archives.yml
with:
versionOverrideArg: ${{ inputs.versionOverrideArg }}
targets: '[{"os": "ubuntu-latest", "runner": "ubuntu-24.04-arm", "rids": "linux-arm64"}]'

Comment on lines +52 to +56
Copy link

Copilot AI Mar 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the targets JSON, os is set to ubuntu-latest while the actual runner label is ubuntu-24.04-arm. Since the reusable workflow currently uses matrix.targets.os in the job name, this ends up mislabeling the ARM64 build as “ubuntu-latest” (and can contribute to duplicate names). Consider setting os to match the runner/actual platform, or updating the reusable workflow to use rids/runner for display instead of os.

This issue also appears on line 70 of the same file.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed — the reusable workflow job name now uses matrix.targets.rids instead of matrix.targets.os, so it displays correctly regardless of the os field value.

# Per-OS CLI archive builds produce RID-specific DCP and Dashboard NuGets.
# Split by OS so that test jobs can depend on just their platform's archive,
# allowing Linux tests to start as soon as the Linux archive completes
Expand All @@ -58,6 +65,13 @@ jobs:
versionOverrideArg: ${{ inputs.versionOverrideArg }}
targets: '[{"os": "windows-latest", "runner": "windows-latest", "rids": "win-x64"}]'

build_cli_archive_windows_arm64:
name: Build native CLI archive (Windows ARM64)
uses: ./.github/workflows/build-cli-native-archives.yml
with:
versionOverrideArg: ${{ inputs.versionOverrideArg }}
targets: '[{"os": "windows-latest", "runner": "windows-11-arm", "rids": "win-arm64"}]'

build_cli_archive_macos:
name: Build native CLI archive (macOS)
uses: ./.github/workflows/build-cli-native-archives.yml
Expand Down Expand Up @@ -226,7 +240,9 @@ jobs:
setup_for_tests,
build_packages,
build_cli_archive_linux,
build_cli_archive_linux_arm64,
build_cli_archive_windows,
build_cli_archive_windows_arm64,
build_cli_archive_macos,
extension_tests_win,
typescript_sdk_tests,
Expand Down
Loading