Skip to content

Commit 5f97177

Browse files
Add .NET 8 target framework for building the agent (#4943)
1 parent 1a3d532 commit 5f97177

File tree

8 files changed

+110
-26
lines changed

8 files changed

+110
-26
lines changed

.azure-pipelines/build-job.yml

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ parameters:
1313
- name: container
1414
type: string
1515

16+
- name: targetFramework
17+
type: string
18+
1619
- name: timeoutInMinutes
1720
type: number
1821

@@ -78,6 +81,14 @@ jobs:
7881
displayName: ${{ parameters.displayName }}
7982
pool: ${{ parameters.pool }}
8083
timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
84+
${{ if eq(parameters.targetFramework, 'all') }}:
85+
strategy:
86+
matrix:
87+
NET6.0:
88+
targetFramework: 'net6.0'
89+
NET8.0:
90+
targetFramework: 'net8.0'
91+
8192

8293
${{ if ne(parameters.container, '') }}:
8394
container: ${{ parameters.container }}
@@ -100,6 +111,8 @@ jobs:
100111
DisableDockerDetector: true
101112
nugetMultiFeedWarnLevel: none
102113
CheckoutBranch: ${{ parameters.branch }}
114+
${{ if ne(parameters.targetFramework, 'all') }}:
115+
targetFramework: ${{ parameters.targetFramework }}
103116
templateContext:
104117
outputs:
105118
- ${{ if or(parameters.unitTests, parameters.functionalTests) }}:
@@ -150,7 +163,7 @@ jobs:
150163
- task: NuGetAuthenticate@1
151164

152165
# Build agent layout
153-
- script: ${{ variables.devCommand }} layout Release ${{ parameters.os }}-${{ parameters.arch }}
166+
- script: ${{ variables.devCommand }} layout $(targetFramework) Release ${{ parameters.os }}-${{ parameters.arch }}
154167
workingDirectory: src
155168
displayName: Build & Layout Release
156169
retryCountOnTaskFailure: 5
@@ -175,7 +188,7 @@ jobs:
175188
installationPath: 'C:\Program Files (x86)\dotnet'
176189
env:
177190
PROCESSOR_ARCHITECTURE: x86
178-
- script: ${{ variables.devCommand }} testl0 Debug ${{ parameters.os }}-${{ parameters.arch }}
191+
- script: ${{ variables.devCommand }} testl0 $(targetFramework) Debug ${{ parameters.os }}-${{ parameters.arch }}
179192
workingDirectory: src
180193
displayName: Unit tests
181194
timeoutInMinutes: 5
@@ -189,7 +202,7 @@ jobs:
189202
version: '6.0.424'
190203
packageType: sdk
191204
performMultiLevelLookup: true
192-
- script: ${{ variables.devCommand }} testl1 Debug ${{ parameters.os }}-${{ parameters.arch }}
205+
- script: ${{ variables.devCommand }} testl1 $(targetFramework) Debug ${{ parameters.os }}-${{ parameters.arch }}
193206
workingDirectory: src
194207
displayName: Functional tests
195208

@@ -242,11 +255,11 @@ jobs:
242255
flavor: ${{ parameters.arch }}
243256

244257
# Create agent package zip
245-
- script: "${{ variables.devCommand }} package Release ${{ parameters.os }}-${{ parameters.arch }}"
258+
- script: "${{ variables.devCommand }} package $(targetFramework) Release ${{ parameters.os }}-${{ parameters.arch }}"
246259
workingDirectory: src
247260
displayName: Package Release
248261

249-
- script: "${{ variables.devCommand }} hash Release ${{ parameters.os }}-${{ parameters.arch }}"
262+
- script: "${{ variables.devCommand }} hash $(targetFramework) Release ${{ parameters.os }}-${{ parameters.arch }}"
250263
workingDirectory: src
251264
displayName: Hash Package
252265

.azure-pipelines/build-jobs.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ parameters:
1515
type: string
1616
default: ''
1717

18+
- name: targetFramework
19+
type: string
20+
1821
- name: timeoutInMinutes
1922
type: number
2023
default: 120
@@ -81,6 +84,7 @@ jobs:
8184
verifySigning: ${{ parameters.verifySigning }}
8285
publishArtifact: ${{ parameters.publishArtifacts }}
8386
packageType: agent
87+
targetFramework: ${{ parameters.targetFramework }}
8488

8589
- ${{ if parameters.buildAlternatePackage }}:
8690
- template: /.azure-pipelines/build-job.yml@self
@@ -99,4 +103,5 @@ jobs:
99103
sign: ${{ parameters.sign }}
100104
verifySigning: ${{ parameters.verifySigning }}
101105
publishArtifact: ${{ parameters.publishArtifacts }}
102-
packageType: pipelines-agent
106+
packageType: pipelines-agent
107+
targetFramework: ${{ parameters.targetFramework }}

.azure-pipelines/pipeline.yml

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
# This Yaml Document has been converted by ESAI Yaml Pipeline Conversion Tool.
22
# This pipeline will be extended to the OneESPT template
33
parameters:
4+
- name: targetFramework
5+
type: string
6+
default: all
47
- name: preBuildStages
58
type: stageList
69
default: []
@@ -102,13 +105,22 @@ extends:
102105
- ${{ if parameters.testProxyAgent }}:
103106
- job: test_proxy_agent
104107
displayName: Test Proxy Agent
108+
${{ if eq(parameters.targetFramework, 'all') }}:
109+
strategy:
110+
matrix:
111+
NET6.0:
112+
targetFramework: 'net6.0'
113+
NET8.0:
114+
targetFramework: 'net8.0'
105115
pool:
106116
name: 1ES-ABTT-Shared-Pool
107117
image: abtt-ubuntu-2204
108118
os: linux
109119
variables:
110120
DisableDockerDetector: true
111121
nugetMultiFeedWarnLevel: none
122+
${{ if ne(parameters.targetFramework, 'all') }}:
123+
targetFramework: ${{ parameters.targetFramework }}
112124
timeoutInMinutes: 300
113125
steps:
114126
- template: /.azure-pipelines/get-pat.yml@self
@@ -120,12 +132,13 @@ extends:
120132
sourceBranch="$(Build.SourceBranch)"
121133
branch="${releaseBranch:-"${sourceBranch}"}"
122134
echo "Canary \"branch\" parameter: \"${branch}\""
135+
echo "Canary \"target_framework\" parameter: \"$(targetFramework)\""
123136
124137
node ./run-and-verify.js \
125138
--projectUrl "$(CANARY_PROJECT_URL)" \
126139
--pipelineId "$(CANARY_PIPELINE_ID)" \
127140
--token "$(ACCESS_TOKEN)" \
128-
--templateParameters "{ \"branch\": \"${branch}\" }"
141+
--templateParameters "{ \"branch\": \"${branch}\", \"target_framework\": \"$(targetFramework)\"}"
129142
displayName: Test Proxy Agent
130143
131144
# Windows (x64)
@@ -148,6 +161,7 @@ extends:
148161
verifySigning: ${{ parameters.sign }}
149162
publishArtifacts: ${{ parameters.publishArtifacts }}
150163
buildAlternatePackage: ${{ parameters.buildAlternatePackage }}
164+
targetFramework: ${{ parameters.targetFramework }}
151165

152166
# Windows (x86)
153167
- ${{ if parameters.win_x86 }}:
@@ -167,6 +181,7 @@ extends:
167181
sign: ${{ parameters.sign }}
168182
publishArtifacts: ${{ parameters.publishArtifacts }}
169183
buildAlternatePackage: ${{ parameters.buildAlternatePackage }}
184+
targetFramework: ${{ parameters.targetFramework }}
170185

171186
# Linux (x64)
172187
- ${{ if parameters.linux_x64 }}:
@@ -186,6 +201,7 @@ extends:
186201
sign: ${{ parameters.sign }}
187202
publishArtifacts: ${{ parameters.publishArtifacts }}
188203
buildAlternatePackage: ${{ parameters.buildAlternatePackage }}
204+
targetFramework: ${{ parameters.targetFramework }}
189205

190206
# Linux (ARM)
191207
- ${{ if parameters.linux_arm }}:
@@ -206,6 +222,7 @@ extends:
206222
sign: false
207223
publishArtifacts: ${{ parameters.publishArtifacts }}
208224
buildAlternatePackage: ${{ parameters.buildAlternatePackage }}
225+
targetFramework: ${{ parameters.targetFramework }}
209226

210227
# Linux (ARM64)
211228
- ${{ if parameters.linux_arm64 }}:
@@ -226,6 +243,7 @@ extends:
226243
sign: false
227244
publishArtifacts: ${{ parameters.publishArtifacts }}
228245
buildAlternatePackage: ${{ parameters.buildAlternatePackage }}
246+
targetFramework: ${{ parameters.targetFramework }}
229247

230248
# Alpine (x64)
231249
- ${{ if parameters.alpine_x64 }}:
@@ -246,6 +264,7 @@ extends:
246264
sign: false
247265
publishArtifacts: ${{ parameters.publishArtifacts }}
248266
buildAlternatePackage: false
267+
targetFramework: ${{ parameters.targetFramework }}
249268

250269
# Alpine (ARM64)
251270
- ${{ if parameters.alpine_arm64 }}:
@@ -266,6 +285,7 @@ extends:
266285
sign: false
267286
publishArtifacts: ${{ parameters.publishArtifacts }}
268287
buildAlternatePackage: false
288+
targetFramework: ${{ parameters.targetFramework }}
269289

270290
# macOS (x64)
271291
- ${{ if parameters.macOS_x64 }}:
@@ -286,6 +306,7 @@ extends:
286306
sign: ${{ parameters.sign }}
287307
publishArtifacts: ${{ parameters.publishArtifacts }}
288308
buildAlternatePackage: ${{ parameters.buildAlternatePackage }}
309+
targetFramework: ${{ parameters.targetFramework }}
289310

290311
# macOS (ARM64)
291312
- ${{ if parameters.macOS_arm64 }}:
@@ -306,4 +327,5 @@ extends:
306327
sign: ${{ parameters.sign }}
307328
publishArtifacts: ${{ parameters.publishArtifacts }}
308329
buildAlternatePackage: ${{ parameters.buildAlternatePackage }}
330+
targetFramework: ${{ parameters.targetFramework }}
309331
- ${{ parameters.postBuildStages }}

.vsts.release.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,13 @@ parameters:
3131
type: string
3232
displayName: Version
3333
default: 'NotSet'
34+
- name: targetFramework
35+
displayName: Target framework
36+
type: string
37+
default: net6.0
38+
values:
39+
- net6.0
40+
- net8.0
3441
- name: derivedFrom
3542
type: string
3643
displayName: Derived From Version
@@ -73,6 +80,7 @@ extends:
7380
test: ${{ not(parameters.skipTests) }}
7481
sign: true
7582
publishArtifacts: true
83+
targetFramework: ${{ parameters.targetFramework }}
7684
testProxyAgent: ${{ parameters.testProxyAgent }}
7785
stageDependencies:
7886
- Verify_release
@@ -138,6 +146,13 @@ extends:
138146
if ($agentVersion -eq 'NotSet') {
139147
Write-Error "Version parameter is required for manual release." -ErrorAction Stop
140148
}
149+
150+
## Verify target framework for specified version
151+
$majorVersion = $agentVersion.Split('.')[0]
152+
if ((${{ parameters.targetFramework }} -eq "net6.0" -and $majorVersion -ne "3") -or
153+
(${{ parameters.targetFramework }} -eq "net8.0" -and $majorVersion -ne "4")) {
154+
Write-Error "The major version should be 3 for net6.0 and 4 for net8.0" -ErrorAction Stop
155+
}
141156
}
142157
if ($isTestRun) {
143158
$agentVersion = '3.000.999'

src/Agent.Listener/ValidationHelper/VerificationException.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,11 @@ public VerificationException(string message, Exception ex)
1919
{
2020
}
2121

22+
#if NET6_0
2223
protected VerificationException(SerializationInfo info, StreamingContext context)
2324
: base(info, context)
2425
{
2526
}
27+
#endif
2628
}
2729
}

src/Common.props

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project>
22
<PropertyGroup>
3-
<TargetFramework>net6</TargetFramework>
4-
<RuntimeFrameworkVersion>6.0.32</RuntimeFrameworkVersion>
3+
<TargetFramework>$(NetTargetFramework)</TargetFramework>
4+
<RuntimeFrameworkVersion>$(RuntimeVersion)</RuntimeFrameworkVersion>
55
<RuntimeIdentifier Condition="'$(BuildingInsideVisualStudio)' != 'true'">$(PackageRuntime)</RuntimeIdentifier>
66
<SelfContained>true</SelfContained>
77
<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>

src/dev.sh

Lines changed: 38 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,27 @@
88

99
set -eo pipefail
1010

11+
# .NET version for agent build.
12+
NET_VERSIONS="
13+
net6.0-sdk=6.0.424
14+
net6.0-runtime=6.0.32
15+
16+
net8.0-sdk=8.0.401
17+
net8.0-runtime=8.0.8"
18+
1119
ALL_ARGS=("$@")
1220
DEV_CMD=$1
13-
DEV_CONFIG=$2
14-
DEV_RUNTIME_ID=$3
15-
DEV_TEST_FILTERS=$4
16-
DEV_ARGS=("${ALL_ARGS[@]:4}")
21+
TARGET_FRAMEWORK=$2
22+
DEV_CONFIG=$3
23+
DEV_RUNTIME_ID=$4
24+
DEV_TEST_FILTERS=$5
25+
DEV_ARGS=("${ALL_ARGS[@]:5}")
1726

1827
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
1928

2029
source "$SCRIPT_DIR/.helpers.sh"
2130

2231
REPO_ROOT="${SCRIPT_DIR}/.."
23-
DOTNETSDK_ROOT="${REPO_ROOT}/_dotnetsdk"
24-
DOTNETSDK_VERSION="6.0.424"
25-
DOTNETSDK_INSTALLDIR="$DOTNETSDK_ROOT/$DOTNETSDK_VERSION"
2632
AGENT_VERSION=$(cat "$SCRIPT_DIR/agentversion" | head -n 1 | tr -d "\n\r")
2733

2834
DOTNET_ERROR_PREFIX="##vso[task.logissue type=error]"
@@ -36,6 +42,27 @@ fi
3642

3743
pushd "$SCRIPT_DIR"
3844

45+
DEFAULT_TARGET_FRAMEWORK="net6.0"
46+
47+
if [[ $TARGET_FRAMEWORK == "" ]]; then
48+
TARGET_FRAMEWORK=$DEFAULT_TARGET_FRAMEWORK
49+
fi
50+
51+
function get_net_version ()
52+
{
53+
echo "$NET_VERSIONS" | grep -o "$1=[^ ]*" | cut -d '=' -f2
54+
}
55+
56+
DOTNETSDK_VERSION=$(get_net_version "${TARGET_FRAMEWORK}-sdk")
57+
DOTNETRUNTIME_VERSION=$(get_net_version "${TARGET_FRAMEWORK}-runtime")
58+
59+
if [[ ($DOTNETSDK_VERSION == "") || ($DOTNETRUNTIME_VERSION == "") ]]; then
60+
failed "Incorrect target framework is specified"
61+
fi
62+
63+
DOTNETSDK_ROOT="${REPO_ROOT}/_dotnetsdk"
64+
DOTNETSDK_INSTALLDIR="$DOTNETSDK_ROOT/$DOTNETSDK_VERSION"
65+
3966
BUILD_CONFIG="Debug"
4067
if [[ "$DEV_CONFIG" == "Release" ]]; then
4168
BUILD_CONFIG="Release"
@@ -97,12 +124,12 @@ function make_build (){
97124

98125
if [[ "$ADO_ENABLE_LOGISSUE" == "true" ]]; then
99126

100-
dotnet msbuild -t:"${TARGET}" -p:PackageRuntime="${RUNTIME_ID}" -p:PackageType="${PACKAGE_TYPE}" -p:BUILDCONFIG="${BUILD_CONFIG}" -p:AgentVersion="${AGENT_VERSION}" -p:LayoutRoot="${LAYOUT_DIR}" -p:CodeAnalysis="true" \
127+
dotnet msbuild -t:"${TARGET}" -p:PackageRuntime="${RUNTIME_ID}" -p:PackageType="${PACKAGE_TYPE}" -p:BUILDCONFIG="${BUILD_CONFIG}" -p:AgentVersion="${AGENT_VERSION}" -p:LayoutRoot="${LAYOUT_DIR}" -p:CodeAnalysis="true" -p:NetTargetFramework="${TARGET_FRAMEWORK}" -p:RuntimeVersion="${DOTNETRUNTIME_VERSION}" \
101128
| sed -e "/\: warning /s/^/${DOTNET_WARNING_PREFIX} /;" \
102129
| sed -e "/\: error /s/^/${DOTNET_ERROR_PREFIX} /;" \
103130
|| failed build
104131
else
105-
dotnet msbuild -t:"${TARGET}" -p:PackageRuntime="${RUNTIME_ID}" -p:PackageType="${PACKAGE_TYPE}" -p:BUILDCONFIG="${BUILD_CONFIG}" -p:AgentVersion="${AGENT_VERSION}" -p:LayoutRoot="${LAYOUT_DIR}" -p:CodeAnalysis="true" \
132+
dotnet msbuild -t:"${TARGET}" -p:PackageRuntime="${RUNTIME_ID}" -p:PackageType="${PACKAGE_TYPE}" -p:BUILDCONFIG="${BUILD_CONFIG}" -p:AgentVersion="${AGENT_VERSION}" -p:LayoutRoot="${LAYOUT_DIR}" -p:CodeAnalysis="true" -p:NetTargetFramework="${TARGET_FRAMEWORK}" -p:RuntimeVersion="${DOTNETRUNTIME_VERSION}" \
106133
|| failed build
107134
fi
108135

@@ -149,7 +176,7 @@ function cmd_test_l0 ()
149176
TestFilters="$TestFilters&$DEV_TEST_FILTERS"
150177
fi
151178

152-
dotnet msbuild -t:testl0 -p:PackageRuntime="${RUNTIME_ID}" -p:PackageType="${PACKAGE_TYPE}" -p:BUILDCONFIG="${BUILD_CONFIG}" -p:AgentVersion="${AGENT_VERSION}" -p:LayoutRoot="${LAYOUT_DIR}" -p:TestFilters="${TestFilters}" "${DEV_ARGS[@]}" || failed "failed tests"
179+
dotnet msbuild -t:testl0 -p:PackageRuntime="${RUNTIME_ID}" -p:PackageType="${PACKAGE_TYPE}" -p:BUILDCONFIG="${BUILD_CONFIG}" -p:AgentVersion="${AGENT_VERSION}" -p:LayoutRoot="${LAYOUT_DIR}" -p:TestFilters="${TestFilters}" -p:NetTargetFramework="${TARGET_FRAMEWORK}" "${DEV_ARGS[@]}" || failed "failed tests"
153180
}
154181

155182
function cmd_test_l1 ()
@@ -171,7 +198,7 @@ function cmd_test_l1 ()
171198
TestFilters="$TestFilters&$DEV_TEST_FILTERS"
172199
fi
173200

174-
dotnet msbuild -t:testl1 -p:PackageRuntime="${RUNTIME_ID}" -p:PackageType="${PACKAGE_TYPE}" -p:BUILDCONFIG="${BUILD_CONFIG}" -p:AgentVersion="${AGENT_VERSION}" -p:LayoutRoot="${LAYOUT_DIR}" -p:TestFilters="${TestFilters}" "${DEV_ARGS[@]}" || failed "failed tests"
201+
dotnet msbuild -t:testl1 -p:PackageRuntime="${RUNTIME_ID}" -p:PackageType="${PACKAGE_TYPE}" -p:BUILDCONFIG="${BUILD_CONFIG}" -p:AgentVersion="${AGENT_VERSION}" -p:LayoutRoot="${LAYOUT_DIR}" -p:TestFilters="${TestFilters}" -p:NetTargetFramework="${TARGET_FRAMEWORK}" -p:RuntimeVersion="${DOTNETRUNTIME_VERSION}" "${DEV_ARGS[@]}" || failed "failed tests"
175202
}
176203

177204
function cmd_test ()

0 commit comments

Comments
 (0)