diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 8c2cf47ad43e60..e527bc05f45173 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -27,7 +27,7 @@ ] }, "microsoft.dotnet.helix.jobmonitor": { - "version": "12.0.0-beta.26463.105", + "version": "12.0.0-beta.26465.103", "commands": [ "dotnet-helix-job-monitor" ] diff --git a/eng/Version.Details.props b/eng/Version.Details.props index 36d06a62c741bb..576bc1eefbb9a9 100644 --- a/eng/Version.Details.props +++ b/eng/Version.Details.props @@ -6,88 +6,88 @@ This file should be imported by eng/Versions.props - 5.12.0-1.26463.105 - 5.12.0-1.26463.105 - 5.12.0-1.26463.105 - 5.12.0-1.26463.105 - 12.0.100-alpha.1.26463.105 - 12.0.100-alpha.1.26463.105 - 12.0.0-beta.26463.105 - 12.0.0-beta.26463.105 - 12.0.0-beta.26463.105 - 12.0.0-beta.26463.105 - 12.0.0-beta.26463.105 - 12.0.0-beta.26463.105 - 12.0.0-beta.26463.105 - 12.0.0-beta.26463.105 - 0.11.5-preview.26463.105 - 12.0.0-beta.26463.105 - 12.0.0-beta.26463.105 - 12.0.100-alpha.1.26463.105 - 12.0.0-beta.26463.105 - 12.0.0-beta.26463.105 - 12.0.0-beta.26463.105 - 12.0.0-beta.26463.105 - 12.0.0-beta.26463.105 - 12.0.0-beta.26463.105 - 12.0.0-beta.26463.105 - 2.9.3-beta.26463.105 - 12.0.0-beta.26463.105 - 5.12.0-1.26463.105 - 12.0.0-alpha.1.26463.105 - 12.0.0-alpha.1.26463.105 - 12.0.0-alpha.1.26463.105 - 12.0.0-alpha.1.26463.105 - 7.12.0-rc.46405 - 7.12.0-rc.46405 - 7.12.0-rc.46405 - 7.12.0-rc.46405 - 12.0.0-alpha.1.26463.105 - 4.0.0-alpha.1.26463.105 - 12.0.0-alpha.1.26463.105 - 12.0.0-alpha.1.26463.105 - 12.0.0-alpha.1.26463.105 + 5.12.0-1.26465.103 + 5.12.0-1.26465.103 + 5.12.0-1.26465.103 + 5.12.0-1.26465.103 + 12.0.100-alpha.1.26465.103 + 12.0.100-alpha.1.26465.103 + 12.0.0-beta.26465.103 + 12.0.0-beta.26465.103 + 12.0.0-beta.26465.103 + 12.0.0-beta.26465.103 + 12.0.0-beta.26465.103 + 12.0.0-beta.26465.103 + 12.0.0-beta.26465.103 + 12.0.0-beta.26465.103 + 0.11.5-preview.26465.103 + 12.0.0-beta.26465.103 + 12.0.0-beta.26465.103 + 12.0.100-alpha.1.26465.103 + 12.0.0-beta.26465.103 + 12.0.0-beta.26465.103 + 12.0.0-beta.26465.103 + 12.0.0-beta.26465.103 + 12.0.0-beta.26465.103 + 12.0.0-beta.26465.103 + 12.0.0-beta.26465.103 + 2.9.3-beta.26465.103 + 12.0.0-beta.26465.103 + 5.12.0-1.26465.103 + 12.0.0-alpha.1.26465.103 + 12.0.0-alpha.1.26465.103 + 12.0.0-alpha.1.26465.103 + 12.0.0-alpha.1.26465.103 + 7.12.0-rc.46603 + 7.12.0-rc.46603 + 7.12.0-rc.46603 + 7.12.0-rc.46603 + 12.0.0-alpha.1.26465.103 + 4.0.0-alpha.1.26465.103 + 12.0.0-alpha.1.26465.103 + 12.0.0-alpha.1.26465.103 + 12.0.0-alpha.1.26465.103 11.0.0-alpha.1.26418.1 - 23.1.0-alpha.1.26420.1 - 23.1.0-alpha.1.26420.1 - 23.1.0-alpha.1.26420.1 - 23.1.0-alpha.1.26420.1 - 23.1.0-alpha.1.26420.1 - 23.1.0-alpha.1.26420.1 - 23.1.0-alpha.1.26420.1 - 23.1.0-alpha.1.26420.1 - 23.1.0-alpha.1.26420.1 - 23.1.0-alpha.1.26420.1 - 23.1.0-alpha.1.26420.1 - 23.1.0-alpha.1.26420.1 - 23.1.0-alpha.1.26420.1 - 23.1.0-alpha.1.26420.1 - 23.1.0-alpha.1.26420.1 - 23.1.0-alpha.1.26420.1 - 23.1.0-alpha.1.26420.1 - 23.1.0-alpha.1.26420.1 - 23.1.0-alpha.1.26420.1 - 23.1.0-alpha.1.26420.1 - 23.1.0-alpha.1.26420.1 - 23.1.0-alpha.1.26420.1 - 23.1.0-alpha.1.26420.1 - 23.1.0-alpha.1.26420.1 - 23.1.0-alpha.1.26420.1 - 23.1.0-alpha.1.26420.1 - 23.1.0-alpha.1.26420.1 - 23.1.0-alpha.1.26420.1 - 23.1.0-alpha.1.26420.1 + 23.1.0-alpha.1.26457.1 + 23.1.0-alpha.1.26457.1 + 23.1.0-alpha.1.26457.1 + 23.1.0-alpha.1.26457.1 + 23.1.0-alpha.1.26457.1 + 23.1.0-alpha.1.26457.1 + 23.1.0-alpha.1.26457.1 + 23.1.0-alpha.1.26457.1 + 23.1.0-alpha.1.26457.1 + 23.1.0-alpha.1.26457.1 + 23.1.0-alpha.1.26457.1 + 23.1.0-alpha.1.26457.1 + 23.1.0-alpha.1.26457.1 + 23.1.0-alpha.1.26457.1 + 23.1.0-alpha.1.26457.1 + 23.1.0-alpha.1.26457.1 + 23.1.0-alpha.1.26457.1 + 23.1.0-alpha.1.26457.1 + 23.1.0-alpha.1.26457.1 + 23.1.0-alpha.1.26457.1 + 23.1.0-alpha.1.26457.1 + 23.1.0-alpha.1.26457.1 + 23.1.0-alpha.1.26457.1 + 23.1.0-alpha.1.26457.1 + 23.1.0-alpha.1.26457.1 + 23.1.0-alpha.1.26457.1 + 23.1.0-alpha.1.26457.1 + 23.1.0-alpha.1.26457.1 + 23.1.0-alpha.1.26457.1 - 11.0.0-alpha.1.26418.1 - 11.0.0-alpha.1.26418.1 - 11.0.0-alpha.1.26418.1 - 11.0.0-alpha.1.26418.1 - 11.0.0-alpha.1.26418.1 - 11.0.0-alpha.1.26418.1 - 11.0.0-alpha.1.26418.1 - 11.0.0-alpha.1.26418.1 + 11.0.0-alpha.1.26459.1 + 11.0.0-alpha.1.26459.1 + 11.0.0-alpha.1.26459.1 + 11.0.0-alpha.1.26459.1 + 11.0.0-alpha.1.26459.1 + 11.0.0-alpha.1.26459.1 + 11.0.0-alpha.1.26459.1 + 11.0.0-alpha.1.26459.1 1.0.0-prerelease.26451.1 1.0.0-prerelease.26451.1 diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index a0f28c9e67d93d..8d1ba53be14039 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,127 +1,127 @@ - + https://github.com/dotnet/icu c6131fd7b7cebcef44c17f381b2fe325cb331964 - + https://github.com/dotnet/llvm-project - 32664a0f03b10a2f35eae1fa2a680e7620d82c8b + d9efae02c571d39f4e2a50971af239603c37b0d0 - + https://github.com/dotnet/llvm-project - 32664a0f03b10a2f35eae1fa2a680e7620d82c8b + d9efae02c571d39f4e2a50971af239603c37b0d0 - + https://github.com/dotnet/llvm-project - 32664a0f03b10a2f35eae1fa2a680e7620d82c8b + d9efae02c571d39f4e2a50971af239603c37b0d0 - + https://github.com/dotnet/llvm-project - 32664a0f03b10a2f35eae1fa2a680e7620d82c8b + d9efae02c571d39f4e2a50971af239603c37b0d0 - + https://github.com/dotnet/llvm-project - 32664a0f03b10a2f35eae1fa2a680e7620d82c8b + d9efae02c571d39f4e2a50971af239603c37b0d0 - + https://github.com/dotnet/llvm-project - 32664a0f03b10a2f35eae1fa2a680e7620d82c8b + d9efae02c571d39f4e2a50971af239603c37b0d0 - + https://github.com/dotnet/llvm-project - 32664a0f03b10a2f35eae1fa2a680e7620d82c8b + d9efae02c571d39f4e2a50971af239603c37b0d0 - + https://github.com/dotnet/llvm-project - 32664a0f03b10a2f35eae1fa2a680e7620d82c8b + d9efae02c571d39f4e2a50971af239603c37b0d0 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 https://github.com/dotnet/runtime-assets @@ -175,117 +175,117 @@ https://github.com/dotnet/runtime-assets 13b701d371826c168b26d581351422c031089faa - + https://github.com/dotnet/llvm-project - 32664a0f03b10a2f35eae1fa2a680e7620d82c8b + d9efae02c571d39f4e2a50971af239603c37b0d0 - + https://github.com/dotnet/llvm-project - 32664a0f03b10a2f35eae1fa2a680e7620d82c8b + d9efae02c571d39f4e2a50971af239603c37b0d0 - + https://github.com/dotnet/llvm-project - 32664a0f03b10a2f35eae1fa2a680e7620d82c8b + d9efae02c571d39f4e2a50971af239603c37b0d0 - + https://github.com/dotnet/llvm-project - 32664a0f03b10a2f35eae1fa2a680e7620d82c8b + d9efae02c571d39f4e2a50971af239603c37b0d0 - + https://github.com/dotnet/llvm-project - 32664a0f03b10a2f35eae1fa2a680e7620d82c8b + d9efae02c571d39f4e2a50971af239603c37b0d0 - + https://github.com/dotnet/llvm-project - 32664a0f03b10a2f35eae1fa2a680e7620d82c8b + d9efae02c571d39f4e2a50971af239603c37b0d0 - + https://github.com/dotnet/llvm-project - 32664a0f03b10a2f35eae1fa2a680e7620d82c8b + d9efae02c571d39f4e2a50971af239603c37b0d0 - + https://github.com/dotnet/llvm-project - 32664a0f03b10a2f35eae1fa2a680e7620d82c8b + d9efae02c571d39f4e2a50971af239603c37b0d0 - + https://github.com/dotnet/llvm-project - 32664a0f03b10a2f35eae1fa2a680e7620d82c8b + d9efae02c571d39f4e2a50971af239603c37b0d0 - + https://github.com/dotnet/llvm-project - 32664a0f03b10a2f35eae1fa2a680e7620d82c8b + d9efae02c571d39f4e2a50971af239603c37b0d0 - + https://github.com/dotnet/llvm-project - 32664a0f03b10a2f35eae1fa2a680e7620d82c8b + d9efae02c571d39f4e2a50971af239603c37b0d0 - + https://github.com/dotnet/llvm-project - 32664a0f03b10a2f35eae1fa2a680e7620d82c8b + d9efae02c571d39f4e2a50971af239603c37b0d0 - + https://github.com/dotnet/llvm-project - 32664a0f03b10a2f35eae1fa2a680e7620d82c8b + d9efae02c571d39f4e2a50971af239603c37b0d0 - + https://github.com/dotnet/llvm-project - 32664a0f03b10a2f35eae1fa2a680e7620d82c8b + d9efae02c571d39f4e2a50971af239603c37b0d0 - + https://github.com/dotnet/llvm-project - 32664a0f03b10a2f35eae1fa2a680e7620d82c8b + d9efae02c571d39f4e2a50971af239603c37b0d0 - + https://github.com/dotnet/llvm-project - 32664a0f03b10a2f35eae1fa2a680e7620d82c8b + d9efae02c571d39f4e2a50971af239603c37b0d0 - + https://github.com/dotnet/llvm-project - 32664a0f03b10a2f35eae1fa2a680e7620d82c8b + d9efae02c571d39f4e2a50971af239603c37b0d0 - + https://github.com/dotnet/llvm-project - 32664a0f03b10a2f35eae1fa2a680e7620d82c8b + d9efae02c571d39f4e2a50971af239603c37b0d0 - + https://github.com/dotnet/llvm-project - 32664a0f03b10a2f35eae1fa2a680e7620d82c8b + d9efae02c571d39f4e2a50971af239603c37b0d0 - + https://github.com/dotnet/llvm-project - 32664a0f03b10a2f35eae1fa2a680e7620d82c8b + d9efae02c571d39f4e2a50971af239603c37b0d0 - + https://github.com/dotnet/llvm-project - 32664a0f03b10a2f35eae1fa2a680e7620d82c8b + d9efae02c571d39f4e2a50971af239603c37b0d0 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 https://github.com/dotnet/xharness @@ -299,9 +299,9 @@ https://github.com/dotnet/xharness f10844a1593bd12a5b59046798831ead3eeef2e0 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 https://dev.azure.com/dnceng/internal/_git/dotnet-optimization @@ -323,33 +323,33 @@ https://github.com/dotnet/runtime-assets 13b701d371826c168b26d581351422c031089faa - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 https://dev.azure.com/dnceng/internal/_git/dotnet-optimization @@ -361,53 +361,53 @@ - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 - + https://github.com/dotnet/node - c11a7ade99acf4b7981546cde3ac1827b961afc1 + 4ae8e1c1d08d09e5025db77e22a832051c56fd28 - + https://github.com/dotnet/node - c11a7ade99acf4b7981546cde3ac1827b961afc1 + 4ae8e1c1d08d09e5025db77e22a832051c56fd28 - + https://github.com/dotnet/node - c11a7ade99acf4b7981546cde3ac1827b961afc1 + 4ae8e1c1d08d09e5025db77e22a832051c56fd28 - + https://github.com/dotnet/node - c11a7ade99acf4b7981546cde3ac1827b961afc1 + 4ae8e1c1d08d09e5025db77e22a832051c56fd28 - + https://github.com/dotnet/node - c11a7ade99acf4b7981546cde3ac1827b961afc1 + 4ae8e1c1d08d09e5025db77e22a832051c56fd28 - + https://github.com/dotnet/node - c11a7ade99acf4b7981546cde3ac1827b961afc1 + 4ae8e1c1d08d09e5025db77e22a832051c56fd28 - + https://github.com/dotnet/node - c11a7ade99acf4b7981546cde3ac1827b961afc1 + 4ae8e1c1d08d09e5025db77e22a832051c56fd28 - + https://github.com/dotnet/node - c11a7ade99acf4b7981546cde3ac1827b961afc1 + 4ae8e1c1d08d09e5025db77e22a832051c56fd28 https://github.com/dotnet/runtime-assets @@ -417,9 +417,9 @@ https://github.com/dotnet/runtime-assets 13b701d371826c168b26d581351422c031089faa - + https://github.com/dotnet/dotnet - 9da2930951f4498751b02ecf8546f6bde759ef9d + 62f3d29f24b39b1368b02b9449e8b974f8e6c132 diff --git a/eng/common/core-templates/job/helix-job-monitor.yml b/eng/common/core-templates/job/helix-job-monitor.yml index 53bbf74927e7cc..7417afdf3ea48d 100644 --- a/eng/common/core-templates/job/helix-job-monitor.yml +++ b/eng/common/core-templates/job/helix-job-monitor.yml @@ -52,11 +52,23 @@ parameters: type: string default: https://helix.dot.net/ -# Helix API access token forwarded to the tool via the HELIX_ACCESSTOKEN environment variable. +# Helix API access token forwarded via HELIX_ACCESSTOKEN. Not forwarded when +# useEntraAuthentication is true. - name: helixAccessToken type: string default: '' +# Use a refreshable Entra credential instead of a PAT or anonymous access. +- name: useEntraAuthentication + type: boolean + default: false + +# Azure service connection ID authorized for Helix. Required when +# useEntraAuthentication is true. +- name: azureSubscription + type: string + default: '' + # Polling interval in seconds (--polling-interval-seconds). - name: pollingIntervalSeconds type: number @@ -141,6 +153,26 @@ jobs: - checkout: self fetchDepth: 1 + - ${{ if and(eq(parameters.useEntraAuthentication, true), eq(parameters.azureSubscription, '')) }}: + - pwsh: throw "azureSubscription must be set when useEntraAuthentication is true." + displayName: Validate Helix Entra authentication + + - ${{ if eq(parameters.useEntraAuthentication, true) }}: + - task: AzureCLI@2 + displayName: Initialize Helix Entra authentication + inputs: + azureSubscription: ${{ parameters.azureSubscription }} + addSpnToEnvironment: true + scriptType: pscore + scriptLocation: inlineScript + inlineScript: | + if ([string]::IsNullOrWhiteSpace($env:servicePrincipalId) -or [string]::IsNullOrWhiteSpace($env:tenantId)) { + throw "The Helix Azure service connection did not provide a service principal or tenant ID." + } + + Write-Host "##vso[task.setvariable variable=HelixEntraClientId]$env:servicePrincipalId" + Write-Host "##vso[task.setvariable variable=HelixEntraTenantId]$env:tenantId" + - ${{ if ne(parameters.toolNupkgArtifactName, '') }}: - task: DownloadPipelineArtifact@2 displayName: Download Helix Job Monitor artifact @@ -214,6 +246,7 @@ jobs: toolArgs=( --helix-base-uri '${{ parameters.helixBaseUri }}' + --use-entra-authentication '${{ parameters.useEntraAuthentication }}' --polling-interval-seconds '${{ parameters.pollingIntervalSeconds }}' --fail-on-failed-tests '${{ parameters.failWorkItemsWithFailedTests }}' --allow-no-helix-jobs '${{ parameters.allowNoHelixJobs }}' @@ -275,4 +308,9 @@ jobs: displayName: Monitor Helix Jobs env: SYSTEM_ACCESSTOKEN: $(System.AccessToken) - HELIX_ACCESSTOKEN: ${{ parameters.helixAccessToken }} + ${{ if eq(parameters.useEntraAuthentication, false) }}: + HELIX_ACCESSTOKEN: ${{ parameters.helixAccessToken }} + ${{ if eq(parameters.useEntraAuthentication, true) }}: + AZURESUBSCRIPTION_CLIENT_ID: $(HelixEntraClientId) + AZURESUBSCRIPTION_TENANT_ID: $(HelixEntraTenantId) + AZURESUBSCRIPTION_SERVICE_CONNECTION_ID: ${{ parameters.azureSubscription }} diff --git a/eng/common/core-templates/job/job.yml b/eng/common/core-templates/job/job.yml index 2716ecd18fbb3b..5b070260f0e8fe 100644 --- a/eng/common/core-templates/job/job.yml +++ b/eng/common/core-templates/job/job.yml @@ -126,7 +126,8 @@ jobs: - name: MSBUILDDEBUGPATH value: $(Build.ArtifactStagingDirectory)/AstredCapture/binlogs - # DotNet-HelixApi-Access provides 'HelixApiAccessToken' for internal builds + # DotNet-HelixApi-Access provides 'HelixApiAccessToken' for internal builds. + # Entra-enabled Helix templates do not forward this value to their processes. - ${{ if and(eq(parameters.enableTelemetry, 'true'), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - group: DotNet-HelixApi-Access diff --git a/eng/common/core-templates/steps/send-to-helix.yml b/eng/common/core-templates/steps/send-to-helix.yml index ec7a20003992c2..62cce4d4ea2a90 100644 --- a/eng/common/core-templates/steps/send-to-helix.yml +++ b/eng/common/core-templates/steps/send-to-helix.yml @@ -4,7 +4,9 @@ parameters: HelixType: 'tests/default/' # required -- Helix telemetry which identifies what type of data this is; should include "test" for clarity and must end in '/' HelixBuild: $(Build.BuildNumber) # required -- the build number Helix will use to identify this -- automatically set to the AzDO build number HelixTargetQueues: '' # required -- semicolon-delimited list of Helix queues to test on; see https://helix.dot.net/ for a list of queues - HelixAccessToken: '' # required -- access token to make Helix API requests; should be provided by the appropriate variable group + HelixAccessToken: '' # optional -- legacy access token; not forwarded when HelixUseEntraAuthentication is true + HelixUseEntraAuthentication: false # optional -- use refreshable Entra authentication instead of a PAT or anonymous access + HelixAzureSubscription: '' # required when HelixUseEntraAuthentication is true -- Azure service connection ID authorized for Helix HelixProjectPath: 'eng/common/helixpublish.proj' # optional -- path to the project file to build relative to BUILD_SOURCESDIRECTORY HelixProjectArguments: '' # optional -- arguments passed to the build command HelixConfiguration: '' # optional -- additional property attached to a job @@ -32,12 +34,35 @@ parameters: continueOnError: false # optional -- determines whether to continue the build if the step errors; defaults to false steps: + - ${{ if and(eq(parameters.HelixUseEntraAuthentication, true), eq(parameters.HelixAzureSubscription, '')) }}: + - pwsh: throw "HelixAzureSubscription must be set when HelixUseEntraAuthentication is true." + displayName: Validate Helix Entra authentication + condition: ${{ parameters.condition }} + + - ${{ if eq(parameters.HelixUseEntraAuthentication, true) }}: + - task: AzureCLI@2 + displayName: Initialize Helix Entra authentication + inputs: + azureSubscription: ${{ parameters.HelixAzureSubscription }} + addSpnToEnvironment: true + scriptType: pscore + scriptLocation: inlineScript + inlineScript: | + if ([string]::IsNullOrWhiteSpace($env:servicePrincipalId) -or [string]::IsNullOrWhiteSpace($env:tenantId)) { + throw "The Helix Azure service connection did not provide a service principal or tenant ID." + } + + Write-Host "##vso[task.setvariable variable=HelixEntraClientId]$env:servicePrincipalId" + Write-Host "##vso[task.setvariable variable=HelixEntraTenantId]$env:tenantId" + condition: ${{ parameters.condition }} + - powershell: > $(Build.SourcesDirectory)\eng\common\msbuild.ps1 $(Build.SourcesDirectory)/${{ parameters.HelixProjectPath }} /restore /p:TreatWarningsAsErrors=false /p:EnableHelixJobMonitor=${{ parameters.UseHelixMonitor }} + /p:HelixUseEntraAuthentication=${{ parameters.HelixUseEntraAuthentication }} ${{ parameters.HelixProjectArguments }} /t:Test /bl:$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/SendToHelix.binlog @@ -49,7 +74,12 @@ steps: HelixBuild: ${{ parameters.HelixBuild }} HelixConfiguration: ${{ parameters.HelixConfiguration }} HelixTargetQueues: ${{ parameters.HelixTargetQueues }} - HelixAccessToken: ${{ parameters.HelixAccessToken }} + ${{ if eq(parameters.HelixUseEntraAuthentication, false) }}: + HelixAccessToken: ${{ parameters.HelixAccessToken }} + ${{ if eq(parameters.HelixUseEntraAuthentication, true) }}: + AZURESUBSCRIPTION_CLIENT_ID: $(HelixEntraClientId) + AZURESUBSCRIPTION_TENANT_ID: $(HelixEntraTenantId) + AZURESUBSCRIPTION_SERVICE_CONNECTION_ID: ${{ parameters.HelixAzureSubscription }} HelixPreCommands: ${{ parameters.HelixPreCommands }} HelixPostCommands: ${{ parameters.HelixPostCommands }} WorkItemDirectory: ${{ parameters.WorkItemDirectory }} @@ -76,6 +106,7 @@ steps: /restore /p:TreatWarningsAsErrors=false /p:EnableHelixJobMonitor=${{ parameters.UseHelixMonitor }} + /p:HelixUseEntraAuthentication=${{ parameters.HelixUseEntraAuthentication }} ${{ parameters.HelixProjectArguments }} /t:Test /bl:$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/SendToHelix.binlog @@ -87,7 +118,12 @@ steps: HelixBuild: ${{ parameters.HelixBuild }} HelixConfiguration: ${{ parameters.HelixConfiguration }} HelixTargetQueues: ${{ parameters.HelixTargetQueues }} - HelixAccessToken: ${{ parameters.HelixAccessToken }} + ${{ if eq(parameters.HelixUseEntraAuthentication, false) }}: + HelixAccessToken: ${{ parameters.HelixAccessToken }} + ${{ if eq(parameters.HelixUseEntraAuthentication, true) }}: + AZURESUBSCRIPTION_CLIENT_ID: $(HelixEntraClientId) + AZURESUBSCRIPTION_TENANT_ID: $(HelixEntraTenantId) + AZURESUBSCRIPTION_SERVICE_CONNECTION_ID: ${{ parameters.HelixAzureSubscription }} HelixPreCommands: ${{ parameters.HelixPreCommands }} HelixPostCommands: ${{ parameters.HelixPostCommands }} WorkItemDirectory: ${{ parameters.WorkItemDirectory }} @@ -108,4 +144,3 @@ steps: SYSTEM_ACCESSTOKEN: $(System.AccessToken) condition: and(${{ parameters.condition }}, ne(variables['Agent.Os'], 'Windows_NT')) continueOnError: ${{ parameters.continueOnError }} - diff --git a/global.json b/global.json index 9ef8385b8e9c8a..e60302e9534350 100644 --- a/global.json +++ b/global.json @@ -13,11 +13,11 @@ "dotnet": "11.0.100-rc.1.26420.103" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "12.0.0-beta.26463.105", - "Microsoft.DotNet.Helix.Sdk": "12.0.0-beta.26463.105", - "Microsoft.DotNet.SharedFramework.Sdk": "12.0.0-beta.26463.105", + "Microsoft.DotNet.Arcade.Sdk": "12.0.0-beta.26465.103", + "Microsoft.DotNet.Helix.Sdk": "12.0.0-beta.26465.103", + "Microsoft.DotNet.SharedFramework.Sdk": "12.0.0-beta.26465.103", "Microsoft.Build.NoTargets": "3.7.0", "Microsoft.Build.Traversal": "3.4.0", - "Microsoft.NET.Sdk.IL": "12.0.0-alpha.1.26463.105" + "Microsoft.NET.Sdk.IL": "12.0.0-alpha.1.26465.103" } }