From 4ca4f049a48110b211fac8ae468a40903b67a445 Mon Sep 17 00:00:00 2001 From: Ivan Duplenskikh <115665590+ivanduplenskikh@users.noreply.github.com> Date: Thu, 14 Nov 2024 18:46:53 +0100 Subject: [PATCH 1/4] Add support for AzureLinux 3 to installdependencies (#5036) * Add Azure Linux if condition * Add non empty check for is_sles --- src/Misc/layoutbin/installdependencies.sh | 24 ++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/Misc/layoutbin/installdependencies.sh b/src/Misc/layoutbin/installdependencies.sh index 4587d4acc9..cd2ed3adef 100644 --- a/src/Misc/layoutbin/installdependencies.sh +++ b/src/Misc/layoutbin/installdependencies.sh @@ -271,7 +271,7 @@ then is_sles=1 fi - if ([[ -n $OSTYPE ]] && ([[ $OSTYPE == *"suse"* ]] || [[$is_sles == 1]])) + if ([[ -n $OSTYPE ]] && ([[ $OSTYPE == *"suse"* ]] || ([[ -n $is_sles ]] && [[ $is_sles == 1 ]]))) then echo "The current OS is SUSE based" command -v zypper @@ -317,6 +317,28 @@ then print_errormessage exit 1 fi + elif [ -e /etc/azurelinux-release ] + then + echo "The current OS is Azure Linux based" + echo "--------Azure Linux Version--------" + cat /etc/azurelinux-release + echo "------------------------------" + + command -v tdnf + if [ $? -eq 0 ] + then + tdnf install -y icu + if [ $? -ne 0 ] + then + echo "'tdnf' failed with exit code '$?'" + print_errormessage + exit 1 + fi + else + echo "Can not find 'tdnf'" + print_errormessage + exit 1 + fi else echo "Can't detect current OS type based on $filepath." print_errormessage From bbd4855cd69684b018e0e632497e6935a496c673 Mon Sep 17 00:00:00 2001 From: Mantavya Dhingra <145761344+MantavyaDh@users.noreply.github.com> Date: Mon, 18 Nov 2024 16:58:04 +0530 Subject: [PATCH 2/4] Mask base64 values of secrets in pipeline logs (#5030) Co-authored-by: Evgenii Dergachev <84813671+DergachevE@users.noreply.github.com> --- src/Agent.Worker/Worker.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/Agent.Worker/Worker.cs b/src/Agent.Worker/Worker.cs index cef1e00b46..a0fed0475f 100644 --- a/src/Agent.Worker/Worker.cs +++ b/src/Agent.Worker/Worker.cs @@ -174,6 +174,20 @@ private void InitializeSecretMasker(Pipelines.AgentJobRequestMessage message) var escapedSecret2 = variable.Value.Value.Replace("\r", "%0D") .Replace("\n", "%0A"); AddUserSuppliedSecret(escapedSecret2); + // We need to mask the base 64 value of the secret as well + var base64Secret = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(variable.Value.Value)); + // Add the base64 secret to the secret masker + AddUserSuppliedSecret(base64Secret); + // also, we escape some characters for variables when we print them out in debug mode. We need to + // add the escaped version of these secrets as well + var escapedSecret3 = base64Secret.Replace("%", "%AZP25") + .Replace("\r", "%0D") + .Replace("\n", "%0A"); + AddUserSuppliedSecret(escapedSecret3); + // Since % escaping may be turned off, also mask a version escaped with just newlines + var escapedSecret4 = base64Secret.Replace("\r", "%0D") + .Replace("\n", "%0A"); + AddUserSuppliedSecret(escapedSecret4); } } From 912662d37bd471d86cb70c8773d8bbfc85208588 Mon Sep 17 00:00:00 2001 From: Aditya Mankal <137275420+AdityaMankal-MS@users.noreply.github.com> Date: Tue, 19 Nov 2024 09:43:59 +0000 Subject: [PATCH 3/4] [Agent] Support for Windows ARM 64 - AB#2143637 (#5021) * [Agent] Support for Windows ARM-64 * Fixed syntax error in dev.sh script * Fixed syntax error in dev.sh script * Added Arch Echo * Added AMD64 Check * Added win-arm64 to _VALID_RIDS * Added win-arm64 to tool installer * Fixed Dependencies * Fixed Dependencies * Fixed Externals.sh * Fixed Externals.sh * Fixed Build * Fixed Externals.sh * Fixed Build * Fixed Build * Fixed Build * Fixed Build * Fixed Build * Install .NET for ARM for Unit Tests * Revert: Install .NET for ARM for Unit Tests * Disabled Unit and Functional Tests for Win ARM 64 * Formatting/Comment Corrections * Corrected OS Arch Prop * Corrected OS Arch Prop & Added Logs * Corrected OS arch in Common.props * retrigger checks --- .azure-pipelines/build-job.yml | 2 +- .azure-pipelines/pipeline.yml | 23 +++++++++++ README.md | 2 + assets.json | 12 ++++++ releaseNote.md | 9 +++++ src/Common.props | 10 ++++- src/Misc/InstallAgentPackage.template.xml | 10 +++++ src/Misc/Publish.template.ps1 | 4 ++ src/Misc/UpdateAgentPackage.template.xml | 10 +++++ src/Misc/externals.sh | 47 ++++++++++++++++++++++- src/Test/L0/ConstantGenerationL0.cs | 1 + src/dev.sh | 12 +++++- src/dir.proj | 10 ++--- 13 files changed, 142 insertions(+), 10 deletions(-) diff --git a/.azure-pipelines/build-job.yml b/.azure-pipelines/build-job.yml index 02c5233de2..76d4b4977f 100644 --- a/.azure-pipelines/build-job.yml +++ b/.azure-pipelines/build-job.yml @@ -149,7 +149,7 @@ jobs: ) # 1ES images used on the ARM pool doesn't contain unzip tool, so we need to install it before starting the build - - ${{ if and(eq(parameters.arch, 'arm64'), ne(parameters.os, 'osx')) }}: + - ${{ if and(eq(parameters.arch, 'arm64'), ne(parameters.os, 'osx'), ne(parameters.os, 'win')) }}: - script: sudo dnf -y update && sudo dnf -y install unzip displayName: Install unzip retryCountOnTaskFailure: 5 diff --git a/.azure-pipelines/pipeline.yml b/.azure-pipelines/pipeline.yml index cdb2d004ce..162ee936dd 100644 --- a/.azure-pipelines/pipeline.yml +++ b/.azure-pipelines/pipeline.yml @@ -42,6 +42,9 @@ parameters: - name: win_x86 type: boolean default: true +- name: win_arm64 + type: boolean + default: true - name: linux_x64 type: boolean default: true @@ -182,6 +185,26 @@ extends: publishArtifacts: ${{ parameters.publishArtifacts }} buildAlternatePackage: ${{ parameters.buildAlternatePackage }} targetFramework: ${{ parameters.targetFramework }} + + # Windows (ARM) + - ${{ if parameters.win_arm64 }}: + - template: /.azure-pipelines/build-jobs.yml@self + parameters: + jobName: build_windows_arm64 + displayName: Windows (ARM64) + pool: + name: 1ES-ABTT-Shared-Pool + image: abtt-windows-2022 + os: windows + os: win + arch: arm64 + branch: ${{ parameters.branch }} + unitTests: false + functionalTests: false + sign: ${{ parameters.sign }} + publishArtifacts: ${{ parameters.publishArtifacts }} + buildAlternatePackage: ${{ parameters.buildAlternatePackage }} + targetFramework: ${{ parameters.targetFramework }} # Linux (x64) - ${{ if parameters.linux_x64 }}: diff --git a/README.md b/README.md index be37a52a33..9caee7bf6c 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ Written for .NET Core in C#. |---|:-----:| |![Win-x64](docs/res/win_med.png) **Windows x64**|[![Build & Test][win-x64-build-badge]][build]| |![Win-x86](docs/res/win_med.png) **Windows x86**|[![Build & Test][win-x86-build-badge]][build]| +|![Win-arm64](docs/res/win_med.png) **Windows ARM64**|[![Build & Test][win-arm64-build-badge]][build]| |![macOS](docs/res/apple_med.png) **macOS**|[![Build & Test][macOS-build-badge]][build]| |![Linux-x64](docs/res/linux_med.png) **Linux x64**|[![Build & Test][linux-x64-build-badge]][build]| |![Linux-arm](docs/res/linux_med.png) **Linux ARM**|[![Build & Test][linux-arm-build-badge]][build]| @@ -27,6 +28,7 @@ Written for .NET Core in C#. [win-x64-build-badge]: https://mseng.visualstudio.com/pipelinetools/_apis/build/status/VSTS.Agent/azure-pipelines-agent.ci?branchName=master&jobname=Windows%20(x64) [win-x86-build-badge]: https://mseng.visualstudio.com/pipelinetools/_apis/build/status/VSTS.Agent/azure-pipelines-agent.ci?branchName=master&jobname=Windows%20(x86) +[win-arm64-build-badge]: https://mseng.visualstudio.com/pipelinetools/_apis/build/status/VSTS.Agent/azure-pipelines-agent.ci?branchName=master&jobname=Windows%20(arm64) [macOS-build-badge]: https://mseng.visualstudio.com/pipelinetools/_apis/build/status/VSTS.Agent/azure-pipelines-agent.ci?branchName=master&jobname=macOS%20(x64) [linux-x64-build-badge]: https://mseng.visualstudio.com/pipelinetools/_apis/build/status/VSTS.Agent/azure-pipelines-agent.ci?branchName=master&jobname=Linux%20(x64) [linux-arm-build-badge]: https://mseng.visualstudio.com/pipelinetools/_apis/build/status/VSTS.Agent/azure-pipelines-agent.ci?branchName=master&jobname=Linux%20(ARM) diff --git a/assets.json b/assets.json index de0750d57f..c8c2f1f21e 100644 --- a/assets.json +++ b/assets.json @@ -23,6 +23,18 @@ "version": "", "downloadUrl": "https://vstsagentpackage.azureedge.net/agent//pipelines-agent-win-x86-.zip" }, + { + "name": "vsts-agent-win-arm64-.zip", + "platform": "win-arm64", + "version": "", + "downloadUrl": "https://vstsagentpackage.azureedge.net/agent//vsts-agent-win-arm64-.zip" + }, + { + "name": "pipelines-agent-win-arm64-.zip", + "platform": "win-arm64", + "version": "", + "downloadUrl": "https://vstsagentpackage.azureedge.net/agent//pipelines-agent-win-arm64-.zip" + }, { "name": "vsts-agent-osx-x64-.tar.gz", "platform": "osx-x64", diff --git a/releaseNote.md b/releaseNote.md index 49ef82ef32..0108c6cc8f 100644 --- a/releaseNote.md +++ b/releaseNote.md @@ -5,6 +5,7 @@ | -------------- | ------- | ------- | | Windows x64 | [vsts-agent-win-x64-.zip](https://vstsagentpackage.azureedge.net/agent//vsts-agent-win-x64-.zip) | | | Windows x86 | [vsts-agent-win-x86-.zip](https://vstsagentpackage.azureedge.net/agent//vsts-agent-win-x86-.zip) | | +| Windows ARM64 | [vsts-agent-win-arm64-.zip](https://vstsagentpackage.azureedge.net/agent//vsts-agent-win-arm64-.zip) | | | macOS x64 | [vsts-agent-osx-x64-.tar.gz](https://vstsagentpackage.azureedge.net/agent//vsts-agent-osx-x64-.tar.gz) | | | macOS ARM64 | [vsts-agent-osx-arm64-.tar.gz](https://vstsagentpackage.azureedge.net/agent//vsts-agent-osx-arm64-.tar.gz) | | | Linux x64 | [vsts-agent-linux-x64-.tar.gz](https://vstsagentpackage.azureedge.net/agent//vsts-agent-linux-x64-.tar.gz) | | @@ -29,6 +30,13 @@ C:\> mkdir myagent && cd myagent C:\myagent> Add-Type -AssemblyName System.IO.Compression.FileSystem ; [System.IO.Compression.ZipFile]::ExtractToDirectory("$HOME\Downloads\vsts-agent-win-x86-.zip", "$PWD") ``` +## Windows ARM64 + +``` bash +C:\> mkdir myagent && cd myagent +C:\myagent> Add-Type -AssemblyName System.IO.Compression.FileSystem ; [System.IO.Compression.ZipFile]::ExtractToDirectory("$HOME\Downloads\vsts-agent-win-arm64-.zip", "$PWD") +``` + ## macOS x64 ``` bash @@ -91,6 +99,7 @@ See [notes](docs/node6.md) on Node version support for more details. | ----------- | ------- | ------- | | Windows x64 | [pipelines-agent-win-x64-.zip](https://vstsagentpackage.azureedge.net/agent//pipelines-agent-win-x64-.zip) | | | Windows x86 | [pipelines-agent-win-x86-.zip](https://vstsagentpackage.azureedge.net/agent//pipelines-agent-win-x86-.zip) | | +| Windows ARM64 | [pipelines-agent-win-arm64-.zip](https://vstsagentpackage.azureedge.net/agent//pipelines-agent-win-arm64-.zip) | | | macOS x64 | [pipelines-agent-osx-x64-.tar.gz](https://vstsagentpackage.azureedge.net/agent//pipelines-agent-osx-x64-.tar.gz) | | | macOS ARM64 | [pipelines-agent-osx-arm64-.tar.gz](https://vstsagentpackage.azureedge.net/agent//pipelines-agent-osx-arm64-.tar.gz) | | | Linux x64 | [pipelines-agent-linux-x64-.tar.gz](https://vstsagentpackage.azureedge.net/agent//pipelines-agent-linux-x64-.tar.gz) | | diff --git a/src/Common.props b/src/Common.props index 8b1b645a91..2f037412e7 100644 --- a/src/Common.props +++ b/src/Common.props @@ -38,6 +38,13 @@ X86 + + ARM64 + + + ARM64 + + X64 @@ -65,7 +72,8 @@ win-x64 win-x86 - + win-arm64 + $(OSPlatform);$(OSArchitecture);$(DebugConstant);TRACE diff --git a/src/Misc/InstallAgentPackage.template.xml b/src/Misc/InstallAgentPackage.template.xml index 4c60a4f9bf..1581c8bae8 100644 --- a/src/Misc/InstallAgentPackage.template.xml +++ b/src/Misc/InstallAgentPackage.template.xml @@ -73,6 +73,16 @@ + + + + + + + + + + diff --git a/src/Misc/Publish.template.ps1 b/src/Misc/Publish.template.ps1 index 5d71b86336..64caf44c99 100644 --- a/src/Misc/Publish.template.ps1 +++ b/src/Misc/Publish.template.ps1 @@ -8,6 +8,8 @@ if ($pwd -notlike '*tfsgheus20') { Add-DistributedTaskPackage -PackageType agent -Platform win-x86 -Version -DownloadUrl https://vstsagentpackage.azureedge.net/agent//vsts-agent-win-x86-.zip -HashValue -InfoUrl https://go.microsoft.com/fwlink/?LinkId=798199 -Filename vsts-agent-win-x86-.zip + Add-DistributedTaskPackage -PackageType agent -Platform win-arm64 -Version -DownloadUrl https://vstsagentpackage.azureedge.net/agent//vsts-agent-win-arm64-.zip -HashValue -InfoUrl https://go.microsoft.com/fwlink/?LinkId=798199 -Filename vsts-agent-win-arm64-.zip + Add-DistributedTaskPackage -PackageType agent -Platform osx-x64 -Version -DownloadUrl https://vstsagentpackage.azureedge.net/agent//vsts-agent-osx-x64-.tar.gz -HashValue -InfoUrl https://go.microsoft.com/fwlink/?LinkId=798199 -Filename vsts-agent-osx-x64-.tar.gz Add-DistributedTaskPackage -PackageType agent -Platform linux-x64 -Version -DownloadUrl https://vstsagentpackage.azureedge.net/agent//vsts-agent-linux-x64-.tar.gz -HashValue -InfoUrl https://go.microsoft.com/fwlink/?LinkId=798199 -Filename vsts-agent-linux-x64-.tar.gz @@ -28,6 +30,8 @@ if ($pwd -notlike '*tfsgheus20') { Add-DistributedTaskPackage -PackageType pipelines-agent -Platform win-x86 -Version -DownloadUrl https://vstsagentpackage.azureedge.net/agent//pipelines-agent-win-x86-.zip -HashValue -InfoUrl https://go.microsoft.com/fwlink/?LinkId=798199 -Filename pipelines-agent-win-x86-.zip + Add-DistributedTaskPackage -PackageType pipelines-agent -Platform win-arm64 -Version -DownloadUrl https://vstsagentpackage.azureedge.net/agent//pipelines-agent-win-arm64-.zip -HashValue -InfoUrl https://go.microsoft.com/fwlink/?LinkId=798199 -Filename pipelines-agent-win-arm64-.zip + Add-DistributedTaskPackage -PackageType pipelines-agent -Platform osx-x64 -Version -DownloadUrl https://vstsagentpackage.azureedge.net/agent//pipelines-agent-osx-x64-.tar.gz -HashValue -InfoUrl https://go.microsoft.com/fwlink/?LinkId=798199 -Filename pipelines-agent-osx-x64-.tar.gz Add-DistributedTaskPackage -PackageType pipelines-agent -Platform linux-x64 -Version -DownloadUrl https://vstsagentpackage.azureedge.net/agent//pipelines-agent-linux-x64-.tar.gz -HashValue -InfoUrl https://go.microsoft.com/fwlink/?LinkId=798199 -Filename pipelines-agent-linux-x64-.tar.gz diff --git a/src/Misc/UpdateAgentPackage.template.xml b/src/Misc/UpdateAgentPackage.template.xml index 571c07e99b..27d7c87679 100644 --- a/src/Misc/UpdateAgentPackage.template.xml +++ b/src/Misc/UpdateAgentPackage.template.xml @@ -42,6 +42,11 @@ + + + + + @@ -77,5 +82,10 @@ + + + + + diff --git a/src/Misc/externals.sh b/src/Misc/externals.sh index 01c984ff77..0cc7f73bbc 100644 --- a/src/Misc/externals.sh +++ b/src/Misc/externals.sh @@ -10,14 +10,22 @@ INCLUDE_NODE10=${INCLUDE_NODE10:-true} CONTAINER_URL=https://vstsagenttools.blob.core.windows.net/tools NODE_URL=https://nodejs.org/dist +NODE_UNOFFICIAL_URL=https://unofficial-builds.nodejs.org/download/release + if [[ "$PACKAGERUNTIME" == "linux-musl-x64" ]]; then NODE_URL=https://unofficial-builds.nodejs.org/download/release INCLUDE_NODE6=false fi +if [[ "$PACKAGERUNTIME" == "win-arm64" ]]; then + INCLUDE_NODE6=false + INCLUDE_NODE10=false; +fi + NODE_VERSION="6.17.1" NODE10_VERSION="10.24.1" NODE16_VERSION="16.20.2" +NODE16_WIN_ARM64_VERSION="16.9.1" NODE20_VERSION="20.17.0" MINGIT_VERSION="2.47.0.2" LFS_VERSION="3.4.0" @@ -155,13 +163,14 @@ function acquireExternalTool() { fi } +echo "PACKAGE RUNTIME: $PACKAGERUNTIME" + if [[ "$PACKAGERUNTIME" == "win-x"* ]]; then # Download external tools for Windows. BIT="32" if [[ "$PACKAGERUNTIME" == "win-x64" ]]; then BIT="64" - acquireExternalTool "$CONTAINER_URL/azcopy/1/azcopy.zip" azcopy acquireExternalTool "$CONTAINER_URL/vstshost/m122_887c6659_binding_redirect_patched/vstshost.zip" vstshost acquireExternalTool "$CONTAINER_URL/vstsom/m153_47c0856d_adhoc/vstsom.zip" vstsom @@ -187,6 +196,42 @@ if [[ "$PACKAGERUNTIME" == "win-x"* ]]; then acquireExternalTool "${NODE_URL}/v${NODE16_VERSION}/${PACKAGERUNTIME}/node.lib" node16/bin acquireExternalTool "${NODE_URL}/v${NODE20_VERSION}/${PACKAGERUNTIME}/node.exe" node20_1/bin acquireExternalTool "${NODE_URL}/v${NODE20_VERSION}/${PACKAGERUNTIME}/node.lib" node20_1/bin +elif [[ "$PACKAGERUNTIME" == "win-arm64" || "$PACKAGERUNTIME" == "win-arm32" ]]; then + # Download external tools for Windows ARM + + BIT="32" + if [[ "$PACKAGERUNTIME" == "win-arm64" ]]; then + BIT="64" + + # acquireExternalTool "$CONTAINER_URL/azcopy/1/azcopy.zip" azcopy # Unavailable for Win ARM 64 - https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azcopy-v10?tabs=dnf#download-the-azcopy-portable-binary + acquireExternalTool "$CONTAINER_URL/vstshost/m122_887c6659_binding_redirect_patched/vstshost.zip" vstshost # Custom package. Will the same work for Win ARM 64? + acquireExternalTool "$CONTAINER_URL/vstsom/m153_47c0856d_adhoc/vstsom.zip" vstsom # Custom package. Will the same work for Win ARM 64? + fi + + acquireExternalTool "$CONTAINER_URL/mingit/${MINGIT_VERSION}/MinGit-${MINGIT_VERSION}-${BIT}-bit.zip" git # Unavailable for Win ARM 64 - https://github.com/git-for-windows/git/releases + acquireExternalTool "$CONTAINER_URL/git-lfs/${LFS_VERSION}/win-arm${BIT}/git-lfs.exe" "git/mingw${BIT}/bin" + acquireExternalTool "$CONTAINER_URL/pdbstr/win-arm${BIT}/1/pdbstr.zip" pdbstr + acquireExternalTool "$CONTAINER_URL/symstore/win-arm${BIT}/1/symstore.zip" symstore + acquireExternalTool "$CONTAINER_URL/vstsom/m153_47c0856d_adhoc/vstsom.zip" tf + acquireExternalTool "$CONTAINER_URL/vswhere/2_8_4/vswhere.zip" vswhere + acquireExternalTool "https://dist.nuget.org/win-x86-commandline/v3.4.4/nuget.exe" nuget + + if [[ "$INCLUDE_NODE6" == "true" ]]; then + acquireExternalTool "${NODE_URL}/v${NODE_VERSION}/${PACKAGERUNTIME}/node.exe" node/bin # Not available for Windows ARM + acquireExternalTool "${NODE_URL}/v${NODE_VERSION}/${PACKAGERUNTIME}/node.lib" node/bin # Not available for Windows ARM + fi + if [[ "$INCLUDE_NODE10" == "true" ]]; then + acquireExternalTool "${NODE_URL}/v${NODE10_VERSION}/${PACKAGERUNTIME}/node.exe" node10/bin # Not available for Windows ARM + acquireExternalTool "${NODE_URL}/v${NODE10_VERSION}/${PACKAGERUNTIME}/node.lib" node10/bin # Not available for Windows ARM + fi + + # Unofficial distribution of Node contains Node 16 for Windows ARM + acquireExternalTool "${NODE_UNOFFICIAL_URL}/v${NODE16_WIN_ARM64_VERSION}/${PACKAGERUNTIME}/node.exe" node16/bin + acquireExternalTool "${NODE_UNOFFICIAL_URL}/v${NODE16_WIN_ARM64_VERSION}/${PACKAGERUNTIME}/node.lib" node16/bin + + # Official distribution of Node contains Node 20 for Windows ARM + acquireExternalTool "${NODE_URL}/v${NODE20_VERSION}/${PACKAGERUNTIME}/node.exe" node20_1/bin + acquireExternalTool "${NODE_URL}/v${NODE20_VERSION}/${PACKAGERUNTIME}/node.lib" node20_1/bin else # Download external tools for Linux and OSX. diff --git a/src/Test/L0/ConstantGenerationL0.cs b/src/Test/L0/ConstantGenerationL0.cs index 64d2f3a085..9d46b838b1 100644 --- a/src/Test/L0/ConstantGenerationL0.cs +++ b/src/Test/L0/ConstantGenerationL0.cs @@ -17,6 +17,7 @@ public void BuildConstantGenerateSucceed() { "win-x64", "win-x86", + "win-arm64", "linux-x64", "linux-arm", "linux-arm64", diff --git a/src/dev.sh b/src/dev.sh index d292ac5106..86a3d0ceec 100755 --- a/src/dev.sh +++ b/src/dev.sh @@ -91,6 +91,11 @@ function restore_sdk_and_runtime() { dotnet_windows_dir=${dotnet_windows_dir:0:1}:${dotnet_windows_dir:1} local architecture architecture=$(echo "$RUNTIME_ID" | cut -d "-" -f2) + + # We compile on an x64 machine, even when targeting ARM64. Thereby we are installing the x64 version of .NET instead of the arm64 version. + if [[ "$architecture" == "arm64" ]]; then + architecture="x64" + fi printf "\nInstalling SDK...\n" powershell -NoLogo -Sta -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command "& \"${DOTNET_INSTALL_SCRIPT_PATH}\" -Version ${DOTNET_SDK_VERSION} -InstallDir \"${dotnet_windows_dir}\" -Architecture ${architecture} -NoPath; exit \$LastExitCode;" || checkRC "${DOTNET_INSTALL_SCRIPT_NAME} (SDK)" @@ -113,11 +118,14 @@ function detect_platform_and_runtime_id() { if [[ ($(uname) == "Linux") || ($(uname) == "Darwin") ]]; then CURRENT_PLATFORM=$(uname | awk '{print tolower($0)}') fi - + + echo "Detected Process Arch: $PROCESSOR_ARCHITECTURE" if [[ "$CURRENT_PLATFORM" == 'windows' ]]; then DETECTED_RUNTIME_ID='win-x64' if [[ "$PROCESSOR_ARCHITECTURE" == 'x86' ]]; then DETECTED_RUNTIME_ID='win-x86' + elif [[ "$PROCESSOR_ARCHITECTURE" == 'ARM64' ]]; then + DETECTED_RUNTIME_ID='win-arm64' fi elif [[ "$CURRENT_PLATFORM" == 'linux' ]]; then DETECTED_RUNTIME_ID="linux-x64" @@ -370,7 +378,7 @@ else RUNTIME_ID=$DETECTED_RUNTIME_ID fi -_VALID_RIDS='linux-x64:linux-arm:linux-arm64:linux-musl-x64:linux-musl-arm64:osx-x64:osx-arm64:win-x64:win-x86' +_VALID_RIDS='linux-x64:linux-arm:linux-arm64:linux-musl-x64:linux-musl-arm64:osx-x64:osx-arm64:win-x64:win-x86:win-arm64' if [[ ":$_VALID_RIDS:" != *:$RUNTIME_ID:* ]]; then failed "must specify a valid target runtime ID (one of: $_VALID_RIDS)" fi diff --git a/src/dir.proj b/src/dir.proj index af6cfc142b..d4368522f4 100644 --- a/src/dir.proj +++ b/src/dir.proj @@ -74,7 +74,7 @@ SkipNonExistentProjects="false" StopOnFirstFailure="true" Properties="Configuration=$(BUILDCONFIG);PackageRuntime=$(PackageRuntime);Version=$(AgentVersion);RuntimeIdentifier=$(PackageRuntime);PublishDir=$(LayoutRoot)/bin;TreatWarningsAsErrors=$(TreatWarningsAsErrors)" /> - + @@ -110,10 +110,10 @@ - - - - + + + + From 71326127e31a747eff0c98de7b93fa047af85dc0 Mon Sep 17 00:00:00 2001 From: Aditya Mankal <137275420+AdityaMankal-MS@users.noreply.github.com> Date: Tue, 19 Nov 2024 11:56:52 +0000 Subject: [PATCH 4/4] [Agent] CI Trigger for Windows ARM 64 (#5046) --- .azure-pipelines/pipeline.yml | 2 +- .vsts.ci.yml | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.azure-pipelines/pipeline.yml b/.azure-pipelines/pipeline.yml index 162ee936dd..ea29d6d1b5 100644 --- a/.azure-pipelines/pipeline.yml +++ b/.azure-pipelines/pipeline.yml @@ -186,7 +186,7 @@ extends: buildAlternatePackage: ${{ parameters.buildAlternatePackage }} targetFramework: ${{ parameters.targetFramework }} - # Windows (ARM) + # Windows (ARM64) - ${{ if parameters.win_arm64 }}: - template: /.azure-pipelines/build-jobs.yml@self parameters: diff --git a/.vsts.ci.yml b/.vsts.ci.yml index c3f4bfe6a2..7d2bcb3bb3 100644 --- a/.vsts.ci.yml +++ b/.vsts.ci.yml @@ -14,6 +14,10 @@ parameters: type: boolean displayName: Windows (x86) default: true +- name: win_arm64 + type: boolean + displayName: Windows (ARM64) + default: true - name: linux_x64 type: boolean displayName: Linux (x64) @@ -59,6 +63,7 @@ extends: testProxyAgent: ${{ parameters.testProxyAgent }} win_x64: ${{ parameters.win_x64 }} win_x86: ${{ parameters.win_x86 }} + win_arm64: ${{ parameters.win_arm64 }} linux_x64: ${{ parameters.linux_x64 }} linux_arm: ${{ parameters.linux_arm }} linux_arm64: ${{ parameters.linux_arm64 }}