Skip to content

Commit b3a9e09

Browse files
kshyjufabiocav
authored andcommitted
Fix artifact generation to support multi TFM (#10107)
Fix artifact generation to support multi TFM
1 parent a7dc36c commit b3a9e09

File tree

2 files changed

+118
-23
lines changed

2 files changed

+118
-23
lines changed

azure-pipelines.yml

Lines changed: 103 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,6 @@
11
variables:
22
buildNumber: $[ counter('constant', 13000) ]
33
isReleaseBranch: $[contains(variables['Build.SourceBranch'], 'release/')]
4-
${{ if contains(variables['Build.SourceBranch'], 'release/inproc6/') }}:
5-
minorVersionPrefix: "6"
6-
${{ elseif contains(variables['Build.SourceBranch'], 'release/inproc8/') }}:
7-
minorVersionPrefix: "8"
8-
${{ else }}:
9-
minorVersionPrefix: ""
104
DOTNET_NOLOGO: 1
115
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
126
DOTNET_CLI_TELEMETRY_OPTOUT: 1
@@ -46,11 +40,16 @@ jobs:
4640
name: Initialize
4741
inputs:
4842
filePath: '$(Build.Repository.LocalPath)\build\initialize-pipeline.ps1'
49-
arguments: -minorVersionPrefix "$(minorVersionPrefix)"
5043
showWarnings: true
5144
pwsh: true
5245

5346
- job: BuildArtifacts
47+
strategy:
48+
matrix:
49+
net6:
50+
minorVersionPrefix: "6"
51+
net8:
52+
minorVersionPrefix: "8"
5453
dependsOn: InitializePipeline
5554
condition: and(succeeded(), or(ne(variables['Build.Reason'], 'PullRequest'), eq(dependencies.InitializePipeline.outputs['Initialize.BuildArtifacts'], true)))
5655
variables:
@@ -68,7 +67,7 @@ jobs:
6867
steps:
6968
- template: build/install-dotnet.yml
7069
- task: PowerShell@2
71-
displayName: "Build artifacts"
70+
displayName: "Build artifacts $(minorVersionPrefix)"
7271
inputs:
7372
filePath: '$(Build.Repository.LocalPath)\build\build-extensions.ps1'
7473
arguments: '-buildNumber "$(buildNumber)" -suffix "$(suffix)" -minorVersionPrefix "$(minorVersionPrefix)"'
@@ -81,12 +80,13 @@ jobs:
8180
SourceFolder: 'out/pub/WebJobs.Script.WebHost'
8281
Contents: '**/*.zip'
8382
TargetFolder: '$(Build.ArtifactStagingDirectory)'
83+
8484
- task: DotNetCoreCLI@2
8585
displayName: 'Build host packages'
8686
inputs:
8787
command: 'custom'
8888
custom: 'pack'
89-
arguments: -p:BuildNumber=$(buildNumber) -c Release $(packSuffixSwitch)
89+
arguments: '-p:BuildNumber=$(buildNumber) -c Release $(packSuffixSwitch) -p:MinorVersionPrefix="$(minorVersionPrefix)"'
9090
projects: |
9191
**\WebJobs.Script.csproj
9292
**\WebJobs.Script.WebHost.csproj
@@ -103,7 +103,7 @@ jobs:
103103
displayName: 'ESRP CodeSigning: Strong Name and Authenticode'
104104
inputs:
105105
ConnectedServiceName: 'ESRP Service'
106-
FolderPath: 'out/bin/WebJobs.Script.Abstractions/release'
106+
FolderPath: 'out/bin/WebJobs.Script.Abstractions'
107107
Pattern: Microsoft.Azure.WebJobs.Script.Abstractions*.dll
108108
signConfigType: inlineSignParams
109109
inlineOperation: |
@@ -257,8 +257,10 @@ jobs:
257257
inputs:
258258
BuildDropPath: '$(Build.ArtifactStagingDirectory)\SiteExtension'
259259
Verbosity: 'Information'
260+
260261
- publish: $(Build.ArtifactStagingDirectory)\SiteExtension
261-
artifact: SiteExtension
262+
artifact: _SiteExtension.net$(minorVersionPrefix)
263+
262264
- pwsh: |
263265
if ((test-path $(Build.ArtifactStagingDirectory)\ZippedPatchSiteExtension))
264266
{
@@ -272,23 +274,23 @@ jobs:
272274
BuildDropPath: '$(Build.ArtifactStagingDirectory)\ZippedPatchSiteExtension'
273275
Verbosity: 'Information'
274276
condition: and(succeeded(), eq(variables['isPatchVersion'], 'true'))
275-
- publish: $(Build.ArtifactStagingDirectory)\ZippedPatchSiteExtension
276-
artifact: PatchedSiteExtension
277-
condition: and(succeeded(), eq(variables['isPatchVersion'], 'true'))
278277
- task: ManifestGeneratorTask@0
279278
displayName: 'SBOM Generation Task - PrivateSiteExtension'
280279
inputs:
281280
BuildDropPath: '$(Build.ArtifactStagingDirectory)\PrivateSiteExtension'
282281
Verbosity: 'Information'
282+
283283
- publish: $(Build.ArtifactStagingDirectory)\PrivateSiteExtension
284-
artifact: PrivateSiteExtension
284+
artifact: _PrivateSiteExtension.net$(minorVersionPrefix)
285+
285286
- task: ManifestGeneratorTask@0
286287
displayName: 'SBOM Generation Task - Symbols'
287288
inputs:
288289
BuildDropPath: '$(Build.ArtifactStagingDirectory)\Symbols'
289290
Verbosity: 'Information'
290291
- publish: $(Build.ArtifactStagingDirectory)\Symbols
291-
artifact: Symbols
292+
artifact: _Symbols.net$(minorVersionPrefix)
293+
292294
- task: ManifestGeneratorTask@0
293295
displayName: 'SBOM Generation Task - NugetPackages'
294296
inputs:
@@ -558,3 +560,88 @@ jobs:
558560
inputs:
559561
filePath: '$(Build.Repository.LocalPath)\build\checkin-secrets.ps1'
560562
arguments: '-connectionString ''$(Storage-azurefunctionshostci0)'' -leaseBlob $(LeaseBlob) -leaseToken $(LeaseToken)'
563+
564+
- job: PublishArtifacts
565+
dependsOn: BuildArtifacts
566+
condition: succeeded()
567+
568+
steps:
569+
570+
- task: DownloadPipelineArtifact@2
571+
displayName: 'Download _SiteExtension.net6 Artifact'
572+
inputs:
573+
buildType: 'current'
574+
artifact: '_SiteExtension.net6'
575+
path: '$(Build.ArtifactStagingDirectory)/SiteExtension'
576+
577+
- task: DownloadPipelineArtifact@2
578+
displayName: 'Download _SiteExtension.net8 Artifact'
579+
inputs:
580+
buildType: 'current'
581+
artifact: '_SiteExtension.net8'
582+
path: '$(Build.ArtifactStagingDirectory)/SiteExtension'
583+
584+
- task: DownloadPipelineArtifact@2
585+
displayName: 'Download _PrivateSiteExtension.net6 Artifact'
586+
inputs:
587+
buildType: 'current'
588+
artifact: '_PrivateSiteExtension.net6'
589+
path: '$(Build.ArtifactStagingDirectory)/PrivateSiteExtension'
590+
591+
- task: DownloadPipelineArtifact@2
592+
displayName: 'Download _PrivateSiteExtension.net8 Artifact'
593+
inputs:
594+
buildType: 'current'
595+
artifact: '_PrivateSiteExtension.net8'
596+
path: '$(Build.ArtifactStagingDirectory)/PrivateSiteExtension'
597+
598+
- task: DownloadPipelineArtifact@2
599+
displayName: 'Download _Packages.net8 Artifact'
600+
inputs:
601+
buildType: 'current'
602+
artifact: '_Packages.net8'
603+
path: '$(Build.ArtifactStagingDirectory)/packages'
604+
605+
- task: DownloadPipelineArtifact@2
606+
displayName: 'Download Symbols6 Artifact'
607+
inputs:
608+
buildType: 'current'
609+
artifact: '_Symbols.net6'
610+
path: '$(Build.ArtifactStagingDirectory)/Symbols'
611+
612+
- task: DownloadPipelineArtifact@2
613+
displayName: 'Download Symbols8 Artifact'
614+
inputs:
615+
buildType: 'current'
616+
artifact: '_Symbols.net8'
617+
path: '$(Build.ArtifactStagingDirectory)/Symbols'
618+
619+
# Publish artifacts.
620+
621+
- task: PublishPipelineArtifact@1
622+
displayName: 'Publish SiteExtension Artifact'
623+
inputs:
624+
targetPath: '$(Build.ArtifactStagingDirectory)/SiteExtension'
625+
artifact: 'SiteExtension'
626+
publishLocation: 'pipeline'
627+
628+
- task: PublishPipelineArtifact@1
629+
displayName: 'Publish PrivateSiteExtension Artifact'
630+
inputs:
631+
targetPath: '$(Build.ArtifactStagingDirectory)/PrivateSiteExtension'
632+
artifact: 'PrivateSiteExtension'
633+
publishLocation: 'pipeline'
634+
635+
- task: PublishPipelineArtifact@1
636+
displayName: 'Publish Nuget packages Artifact'
637+
inputs:
638+
targetPath: '$(Build.ArtifactStagingDirectory)/packages'
639+
artifact: 'NugetPackages'
640+
publishLocation: 'pipeline'
641+
642+
- task: PublishPipelineArtifact@1
643+
displayName: 'Publish Symbols Artifact'
644+
inputs:
645+
targetPath: '$(Build.ArtifactStagingDirectory)/Symbols'
646+
artifact: 'Symbols'
647+
publishLocation: 'pipeline'

build/build-extensions.ps1

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,13 @@ $patchVersion = [int]$versionParts[2]
2020
$isPatch = $patchVersion -gt 0
2121
Write-Host "MajorMinorVersion is '$majorMinorVersion'. Patch version is '$patchVersion'. IsPatch: '$isPatch'"
2222

23+
# Based on the minorVersionPrefix value, set target framework to be used for building/publishing
24+
if ($minorVersionPrefix -eq "8") {
25+
$targetFramework = "net8.0"
26+
} else {
27+
$targetFramework = "net6.0"
28+
}
29+
2330
function ZipContent([string] $sourceDirectory, [string] $target) {
2431
$stopwatch = [System.Diagnostics.Stopwatch]::StartNew()
2532

@@ -41,17 +48,18 @@ function ZipContent([string] $sourceDirectory, [string] $target) {
4148
function BuildRuntime([string] $targetRid, [bool] $isSelfContained) {
4249
$stopwatch = [System.Diagnostics.Stopwatch]::StartNew()
4350

44-
$publishTarget = "$publishDir\release_$targetRid"
51+
$publishTarget = "$publishDir\release_$targetFramework" + "_$targetRid"
52+
4553
$projectPath = "$rootDir\src\WebJobs.Script.WebHost\WebJobs.Script.WebHost.csproj"
4654
if (-not (Test-Path $projectPath))
4755
{
4856
throw "Project path '$projectPath' does not exist."
4957
}
5058

51-
$cmd = "publish", $projectPath , "-r", "$targetRid", "--self-contained", "$isSelfContained", "-v", "m", "-c", "Release", "-p:IsPackable=false", "-p:BuildNumber=$buildNumber", "-p:MinorVersionPrefix=$minorVersionPrefix"
59+
$cmd = "publish", $projectPath , "-r", "$targetRid", "-f", "$targetFramework", "--self-contained", "$isSelfContained", "-v", "m", "-c", "Release", "-p:IsPackable=false", "-p:BuildNumber=$buildNumber", "-p:MinorVersionPrefix=$minorVersionPrefix"
5260

5361
Write-Host "======================================"
54-
Write-Host "Building $targetRid"
62+
Write-Host "Building $targetRid for target framework $targetFramework"
5563
Write-Host " Self-Contained: $isSelfContained"
5664
Write-Host " Publish Directory: $publishTarget"
5765
Write-Host ""
@@ -80,7 +88,7 @@ function BuildRuntime([string] $targetRid, [bool] $isSelfContained) {
8088
Write-Host ""
8189
CleanOutput $publishTarget
8290
Write-Host ""
83-
Write-Host "Done building $targetRid. Elapsed: $($stopwatch.Elapsed)"
91+
Write-Host "Done building $targetRid for target framework $targetFramework. Elapsed: $($stopwatch.Elapsed)"
8492
Write-Host "======================================"
8593
Write-Host ""
8694
}
@@ -219,8 +227,8 @@ function CreateSiteExtensions() {
219227

220228
Write-Host "======================================"
221229
Write-Host "Copying build to temp directory to prepare for zipping official site extension."
222-
Copy-Item -Path $publishDir\release_win-x86\ -Destination $officialSiteExtensionPath\32bit -Force -Recurse > $null
223-
Copy-Item -Path $publishDir\release_win-x64 -Destination $officialSiteExtensionPath\64bit -Force -Recurse > $null
230+
Copy-Item -Path "$publishDir\release_$targetFramework`_win-x86\" -Destination "$officialSiteExtensionPath\32bit" -Force -Recurse > $null
231+
Copy-Item -Path "$publishDir\release_$targetFramework`_win-x64\" -Destination "$officialSiteExtensionPath\64bit" -Force -Recurse > $null
224232
Copy-Item -Path $officialSiteExtensionPath\32bit\applicationHost.xdt -Destination $officialSiteExtensionPath -Force > $null
225233
Write-Host " Deleting workers directory: $officialSiteExtensionPath\32bit\workers"
226234
Remove-Item -Recurse -Force "$officialSiteExtensionPath\32bit\workers" -ErrorAction SilentlyContinue
@@ -290,7 +298,7 @@ function CreateSiteExtensions() {
290298
Write-Host "======================================"
291299
$stopwatch.Reset()
292300
Write-Host "Copying build to temp directory to prepare for zipping private site extension."
293-
Copy-Item -Path $publishDir\release_win-x86\ -Destination $siteExtensionPath\SiteExtensions\Functions\32bit -Force -Recurse > $null
301+
Copy-Item -Path $publishDir\release_$targetFramework`_win-x86\ -Destination $siteExtensionPath\SiteExtensions\Functions\32bit -Force -Recurse > $null
294302
Copy-Item -Path $siteExtensionPath\SiteExtensions\Functions\32bit\applicationHost.xdt -Destination $siteExtensionPath\SiteExtensions\Functions -Force > $null
295303
Write-Host "Done copying. Elapsed: $($stopwatch.Elapsed)"
296304
Write-Host "======================================"

0 commit comments

Comments
 (0)