ci: use native ARM64 runners and add merge commit release notes#65
ci: use native ARM64 runners and add merge commit release notes#65supervoidcoder merged 4 commits intomainfrom
Conversation
Co-authored-by: supervoidcoder <88671013+supervoidcoder@users.noreply.github.com>
… echo off Co-authored-by: supervoidcoder <88671013+supervoidcoder@users.noreply.github.com>
Co-authored-by: supervoidcoder <88671013+supervoidcoder@users.noreply.github.com>
|
Important Review skippedBot user detected. To trigger a single review, invoke the You can disable this status message by setting the
Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
.github/workflows/release.yml (1)
300-345:⚠️ Potential issue | 🟠 MajorRelease build for arm64 still uses cross-compilation, inconsistent with build.yml.
The PR objective states to "use native windows-11-arm runners" and build.yml correctly uses
windows-11-armfor arm64 with nativevcvars_arch: arm64. However, this release workflow still runs all architectures onwindows-latestand cross-compiles arm64 usingx64_arm64.Consider aligning with the build.yml matrix approach:
♻️ Proposed fix to use native runners in release workflow
build: name: Build matrix for multiple Windows architectures needs: prepare if: needs.prepare.outputs.should_release == 'true' - runs-on: windows-latest strategy: matrix: - arch: [x64, x86, arm64] + include: + - arch: x64 + runner: windows-latest + vcvars_arch: x64 + - arch: x86 + runner: windows-latest + vcvars_arch: x64_x86 + - arch: arm64 + runner: windows-11-arm + vcvars_arch: arm64 + runs-on: ${{ matrix.runner }} steps: - uses: actions/checkout@v4 - name: Compile for ${{ matrix.arch }} shell: cmd run: | - `@echo` off - REM Find vcvarsall.bat dynamically - for /f "usebackq tokens=*" %%i in (`"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath`) do ( + REM Find vcvarsall.bat dynamically - check both possible vswhere.exe locations + set "VSWHERE_LEGACY=C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" + set "VSWHERE_NATIVE=C:\Program Files\Microsoft Visual Studio\Installer\vswhere.exe" + + if exist "%VSWHERE_LEGACY%" ( + set "VSWHERE_PATH=%VSWHERE_LEGACY%" + ) else if exist "%VSWHERE_NATIVE%" ( + set "VSWHERE_PATH=%VSWHERE_NATIVE%" + ) else ( + echo Error: vswhere.exe not found in either location. + exit /b 1 + ) + + for /f "usebackq tokens=*" %%i in (`"%VSWHERE_PATH%" -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath`) do ( set "VS_PATH=%%i" ) if not exist "%VS_PATH%\VC\Auxiliary\Build\vcvarsall.bat" ( echo Error: vcvarsall.bat not found. exit /b 1 ) - REM Map architecture for cross-compilation (host_target) - REM GitHub Actions windows-latest runners are x64, so we need x64_<target> for cross-compilation - set "TARGET_ARCH=${{ matrix.arch }}" - set "VCVARS_ARCH=%TARGET_ARCH%" - if "%TARGET_ARCH%"=="x86" set "VCVARS_ARCH=x64_x86" - if "%TARGET_ARCH%"=="arm64" set "VCVARS_ARCH=x64_arm64" REM Initialize environment for the target architecture - call "%VS_PATH%\VC\Auxiliary\Build\vcvarsall.bat" %VCVARS_ARCH% + call "%VS_PATH%\VC\Auxiliary\Build\vcvarsall.bat" ${{ matrix.vcvars_arch }}
🤖 Fix all issues with AI agents
In @.github/workflows/build.yml:
- Around line 6-19: The workflow's build matrix in the build-and-test job
includes a runner value "windows-11-arm" for ARM64 which is only available to
public repos; verify repository visibility and if this repo is private update
the matrix to use an appropriate paid/large ARM64 runner or a self-hosted ARM64
runner instead of "windows-11-arm" (or conditionally set the matrix entry based
on visibility), and ensure vcvars_arch stays correct for the chosen runner
(e.g., keep the entry with vcvars_arch: arm64 but swap runner to the paid ARM64
runner or self-hosted label).
🧹 Nitpick comments (2)
.github/workflows/release.yml (1)
315-315: Inconsistent use of@echo offbetween workflows.This file uses
@echo offat line 315, but build.yml removed it per commit message. Consider removing for consistency and better debugging output in CI logs.🔧 Proposed fix
run: | - `@echo` off REM Find vcvarsall.bat dynamically.github/workflows/build.yml (1)
53-54: Minor compiler flag inconsistency with release.yml.This workflow uses
/O2 /GLwhile release.yml uses/O2 /Ot /GL. The/Otflag favors fast code over small code. Consider aligning the flags between workflows for consistent build behavior, or intentionally differentiating (e.g., faster builds for PR checks).
Upgrades CI workflows to leverage native
windows-11-armrunners and enables custom release notes via merge commit body.Release Workflow (
release.yml)Build Workflow (
build.yml)windows-latestx64_x86onwindows-latest, tests run under WoW64windows-11-arm(eliminates cross-compilation)Architecture-specific binaries are produced (
win-witr-x64.exe, etc.) then copied to generic name for test execution.Original prompt
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.
Summary by CodeRabbit