diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 55ae1f818..a4eee9a24 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -142,6 +142,9 @@ jobs: e2e-test: if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.owner.login == 'github' needs: [build-for-e2e-test] + permissions: + checks: write + contents: read strategy: fail-fast: false matrix: @@ -321,10 +324,12 @@ jobs: ./dist/ado2gh.*.win-x64.zip ./dist/ado2gh.*.win-x86.zip ./dist/ado2gh.*.linux-x64.tar.gz + ./dist/ado2gh.*.linux-arm64.tar.gz ./dist/ado2gh.*.osx-x64.tar.gz ./dist/win-x64/gei-windows-amd64.exe ./dist/win-x86/gei-windows-386.exe ./dist/linux-x64/gei-linux-amd64 + ./dist/linux-arm64/gei-linux-arm64 ./dist/osx-x64/gei-darwin-amd64 - name: Create gh-ado2gh Release @@ -337,6 +342,7 @@ jobs: ./dist/win-x86/ado2gh-windows-386.exe ./dist/win-x64/ado2gh-windows-amd64.exe ./dist/linux-x64/ado2gh-linux-amd64 + ./dist/linux-arm64/ado2gh-linux-arm64 ./dist/osx-x64/ado2gh-darwin-amd64 - name: Create gh-bbs2gh Release @@ -349,6 +355,7 @@ jobs: ./dist/win-x86/bbs2gh-windows-386.exe ./dist/win-x64/bbs2gh-windows-amd64.exe ./dist/linux-x64/bbs2gh-linux-amd64 + ./dist/linux-arm64/bbs2gh-linux-arm64 ./dist/osx-x64/bbs2gh-darwin-amd64 - name: Archive Release Notes diff --git a/RELEASENOTES.md b/RELEASENOTES.md index f154344c5..b77702b3e 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -1,2 +1,3 @@ +- Added support for linux-arm64 architecture for all CLI binaries (gei, ado2gh, bbs2gh), enabling users to run GEI on ARM-based systems including MacOS with Apple Silicon inside ARC runners - Fixed issue where alert migration commands (migrate-code-scanning-alerts, migrate-secret-alerts) required GH_PAT environment variable even when GitHub tokens were provided via command-line arguments (--github-source-pat, --github-target-pat). These commands now work correctly with CLI-only token authentication. - Added support for configurable multipart upload chunk size for GitHub-owned storage uploads via `GITHUB_OWNED_STORAGE_MULTIPART_MEBIBYTES` environment variable (minimum 5 MiB, default 100 MiB) to improve upload reliability in environments with proxies or slow connections diff --git a/publish.ps1 b/publish.ps1 index eabc434f9..1cd97b182 100755 --- a/publish.ps1 +++ b/publish.ps1 @@ -59,6 +59,21 @@ else { } Copy-Item ./dist/linux-x64/ado2gh ./dist/linux-x64/ado2gh-linux-amd64 + + # linux-arm64 build + dotnet publish src/ado2gh/ado2gh.csproj -c Release -o dist/linux-arm64/ -r linux-arm64 -p:PublishSingleFile=true -p:PublishTrimmed=true -p:TrimMode=partial --self-contained true /p:DebugType=None /p:IncludeNativeLibrariesForSelfExtract=true /p:VersionPrefix=$AssemblyVersion + + if ($LASTEXITCODE -ne 0) { + exit $LASTEXITCODE + } + + tar -cvzf ./dist/ado2gh.$AssemblyVersion.linux-arm64.tar.gz -C ./dist/linux-arm64 ado2gh + + if (Test-Path -Path ./dist/linux-arm64/ado2gh-linux-arm64) { + Remove-Item ./dist/linux-arm64/ado2gh-linux-arm64 + } + + Copy-Item ./dist/linux-arm64/ado2gh ./dist/linux-arm64/ado2gh-linux-arm64 } if ((Test-Path env:SKIP_MACOS) -And $env:SKIP_MACOS.ToUpper() -eq "TRUE") { @@ -126,6 +141,19 @@ else { } Rename-Item ./dist/linux-x64/gei gei-linux-amd64 + + # linux-arm64 build + dotnet publish src/gei/gei.csproj -c Release -o dist/linux-arm64/ -r linux-arm64 -p:PublishSingleFile=true -p:PublishTrimmed=true -p:TrimMode=partial --self-contained true /p:DebugType=None /p:IncludeNativeLibrariesForSelfExtract=true /p:VersionPrefix=$AssemblyVersion + + if ($LASTEXITCODE -ne 0) { + exit $LASTEXITCODE + } + + if (Test-Path -Path ./dist/linux-arm64/gei-linux-arm64) { + Remove-Item ./dist/linux-arm64/gei-linux-arm64 + } + + Rename-Item ./dist/linux-arm64/gei gei-linux-arm64 } if ((Test-Path env:SKIP_MACOS) -And $env:SKIP_MACOS.ToUpper() -eq "TRUE") { @@ -190,6 +218,19 @@ else { } Rename-Item ./dist/linux-x64/bbs2gh bbs2gh-linux-amd64 + + # linux-arm64 build + dotnet publish src/bbs2gh/bbs2gh.csproj -c Release -o dist/linux-arm64/ -r linux-arm64 -p:PublishSingleFile=true -p:PublishTrimmed=true -p:TrimMode=partial --self-contained true /p:DebugType=None /p:IncludeNativeLibrariesForSelfExtract=true /p:VersionPrefix=$AssemblyVersion + + if ($LASTEXITCODE -ne 0) { + exit $LASTEXITCODE + } + + if (Test-Path -Path ./dist/linux-arm64/bbs2gh-linux-arm64) { + Remove-Item ./dist/linux-arm64/bbs2gh-linux-arm64 + } + + Rename-Item ./dist/linux-arm64/bbs2gh bbs2gh-linux-arm64 } if ((Test-Path env:SKIP_MACOS) -And $env:SKIP_MACOS.ToUpper() -eq "TRUE") {