Skip to content

Commit 62373c5

Browse files
authored
Update host and consolidation CI pipelines (#4488)
1 parent 70f8aad commit 62373c5

File tree

7 files changed

+98
-122
lines changed

7 files changed

+98
-122
lines changed

eng/ci/host-artifacts-build.yml

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,38 @@ extends:
4545
stages:
4646
- stage: BuildCoreToolsHost
4747
jobs:
48-
- template: /eng/ci/templates/official/jobs/host-build-pack.yml@self
48+
- template: /eng/ci/templates/official/jobs/host-build-pack.yml@self
49+
50+
- stage: Merge
51+
dependsOn: 'BuildCoreToolsHost'
52+
53+
jobs:
54+
- job: MergeArtifacts
55+
displayName: 'Merge artifacts'
56+
57+
templateContext:
58+
type: artifactJob
59+
60+
inputs:
61+
- input: pipelineArtifact
62+
artifactName: func-host-windows-signed
63+
targetPath: $(Build.ArtifactStagingDirectory)/func-cli-host/windows
64+
65+
- input: pipelineArtifact
66+
artifactName: func-host-linux-signed
67+
targetPath: $(Build.ArtifactStagingDirectory)/func-cli-host/linux
68+
69+
outputs:
70+
- output: pipelineArtifact
71+
targetPath: $(Build.ArtifactStagingDirectory)/func-cli-host
72+
artifactName: 'func-cli-host'
73+
74+
- stage: UploadToNightlyFeed
75+
dependsOn: 'Merge'
76+
condition: and(succeeded(), eq(variables['Build.Reason'], 'schedule'))
77+
78+
jobs:
79+
- template: /eng/ci/templates/official/jobs/upload-artifact-to-feed.yml@self
80+
parameters:
81+
artifactName: 'func-cli-host'
82+
packageName: 'func-cli-host'

eng/ci/official-build.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,12 @@ extends:
6666
condition: and(succeeded(), eq(variables['Build.Reason'], 'schedule'))
6767

6868
jobs:
69-
- template: /eng/ci/templates/official/jobs/upload-cli-to-feed.yml@self
69+
- template: /eng/ci/templates/official/jobs/upload-artifact-to-feed.yml@self
70+
parameters:
71+
artifactName: 'func-cli'
72+
packageName: 'func-cli'
7073

74+
# Test Stages
7175
- stage: E2ETestWindows
7276
dependsOn: ''
7377

eng/ci/templates/official/jobs/consolidate-cli-artifacts.yml

Lines changed: 41 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -9,29 +9,24 @@ parameters:
99
jobs:
1010
- job: AssembleArtifact${{ parameters.displayName }}
1111
displayName: "Assemble ${{ parameters.arch }}"
12+
1213
templateContext:
1314
${{ if eq(parameters.isNightlyBuild, false) }}:
1415
inputs:
1516
- input: pipelineArtifact
1617
pipeline: core-tools-host
17-
artifactName: func-host-linux-signed
18-
targetPath: $(Pipeline.Workspace)/core-tools-host/func-host-linux-signed
19-
- input: pipelineArtifact
20-
pipeline: core-tools-host
21-
artifactName: func-host-windows-signed
22-
targetPath: $(Pipeline.Workspace)/core-tools-host/func-host-windows-signed
23-
- input: pipelineArtifact
24-
pipeline: core-tools-inproc
25-
artifactName: func-cli-inproc6
26-
targetPath: $(Pipeline.Workspace)/core-tools-inproc/func-cli-inproc6
18+
artifactName: func-cli-host
19+
targetPath: $(Pipeline.Workspace)/func-cli-host/
20+
2721
- input: pipelineArtifact
2822
pipeline: core-tools-inproc
29-
artifactName: func-cli-inproc8
30-
targetPath: $(Pipeline.Workspace)/core-tools-inproc/func-cli-inproc8
23+
artifactName: func-cli-inproc
24+
targetPath: $(Pipeline.Workspace)/func-cli-inproc/
25+
3126
- input: pipelineArtifact
3227
pipeline: core-tools-default
3328
artifactName: func-cli
34-
targetPath: $(Pipeline.Workspace)/core-tools-default/func-cli
29+
targetPath: $(Pipeline.Workspace)/func-cli-default/func-cli
3530

3631
outputParentDirectory: $(Build.ArtifactStagingDirectory)
3732
outputs:
@@ -48,54 +43,34 @@ jobs:
4843
steps:
4944
- checkout: self
5045

51-
# Conditional download of artifacts based on isNightlyBuild parameter
46+
# Conditional download of artifacts based on isNightlyBuild parameter from ADO feed
5247
- ${{ if eq(parameters.isNightlyBuild, true) }}:
53-
# Download from ADO feed for nightly builds
54-
- task: DownloadPackage@1
55-
displayName: 'Download core-tools-host (Linux signed) from feed'
56-
inputs:
57-
packageType: 'upack'
58-
feed: 'internal/core-tools-nightly-build'
59-
definition: 'func-host-linux-signed'
60-
version: '*'
61-
downloadPath: '$(Pipeline.Workspace)/core-tools-host/func-host-linux-signed'
62-
63-
- task: DownloadPackage@1
64-
displayName: 'Download core-tools-host (Windows) from feed'
65-
inputs:
66-
packageType: 'upack'
67-
feed: 'internal/core-tools-nightly-build'
68-
definition: 'func-host-windows-signed'
69-
version: '*'
70-
downloadPath: '$(Pipeline.Workspace)/core-tools-host/func-host-windows-signed'
71-
7248
- task: DownloadPackage@1
73-
displayName: 'Download core-tools-inproc6 from feed'
49+
displayName: 'Download func-cli-host from feed'
7450
inputs:
7551
packageType: 'upack'
7652
feed: 'internal/core-tools-nightly-build'
77-
definition: 'func-cli-inproc6'
53+
definition: 'func-cli-host'
7854
version: '*'
79-
downloadPath: '$(Pipeline.Workspace)/core-tools-inproc/func-cli-inproc6'
55+
downloadPath: '$(Pipeline.Workspace)/func-cli-host'
8056

8157
- task: DownloadPackage@1
82-
displayName: 'Download core-tools-inproc8 from feed'
58+
displayName: 'Download func-cli-inproc from feed'
8359
inputs:
8460
packageType: 'upack'
8561
feed: 'internal/core-tools-nightly-build'
86-
definition: 'func-cli-inproc8'
62+
definition: 'func-cli-inproc'
8763
version: '*'
88-
downloadPath: '$(Pipeline.Workspace)/core-tools-inproc/func-cli-inproc8'
64+
downloadPath: '$(Pipeline.Workspace)/func-cli-inproc'
8965

9066
- task: DownloadPackage@1
91-
displayName: 'Download core-tools-default from feed'
67+
displayName: 'Download func-cli from feed'
9268
inputs:
9369
packageType: 'upack'
9470
feed: 'internal/core-tools-nightly-build'
9571
definition: 'func-cli'
9672
version: '*'
97-
downloadPath: '$(Pipeline.Workspace)/core-tools-default/func-cli'
98-
73+
downloadPath: '$(Pipeline.Workspace)/func-cli-default/func-cli'
9974

10075
- task: DotNetCoreCLI@2
10176
displayName: "Run ArtifactAssembler"
@@ -104,29 +79,31 @@ jobs:
10479
projects: "$(Build.SourcesDirectory)/src/Cli/ArtifactAssembler/Azure.Functions.Cli.ArtifactAssembler.csproj"
10580
arguments: '-c release -- "Azure.Functions.Cli.${{ parameters.arch }}"'
10681
workingDirectory: '$(Pipeline.Workspace)'
107-
108-
- ${{ if eq(parameters.arch, 'min.win-x64') }}: # what about the other min.* architectures?
109-
- task: PowerShell@2
110-
displayName: 'Generate metadata.json file'
111-
inputs:
112-
targetType: filePath
113-
filePath: '$(Build.SourcesDirectory)/eng/scripts/artifact-assembler/generate-metadata-file.ps1'
114-
arguments: '-StagingDirectory "$(Pipeline.Workspace)/staging"'
115-
workingDirectory: '$(Pipeline.Workspace)'
82+
env:
83+
# Directory names containing the artifacts
84+
OUT_OF_PROC_ARTIFACT_ALIAS: 'func-cli-default'
85+
IN_PROC_ARTIFACT_ALIAS: 'func-cli-inproc'
86+
CORETOOLS_HOST_ARTIFACT_ALIAS: 'func-cli-host'
87+
# Subdirectory names for the artifacts
88+
OUT_OF_PROC_ARTIFACT_NAME: 'func-cli'
89+
IN_PROC6_ARTIFACT_NAME: 'inproc6'
90+
IN_PROC8_ARTIFACT_NAME: 'inproc8'
91+
CORETOOLS_HOST_WINDOWS_ARTIFACT_NAME: 'windows'
92+
CORETOOLS_HOST_LINUX_ARTIFACT_NAME: 'linux'
11693

11794
- ${{ if startsWith(parameters.arch, 'win-x') }}:
11895
- task: PowerShell@2
11996
displayName: 'Generate MSI files'
12097
inputs:
12198
targetType: filePath
12299
filePath: '$(Build.SourcesDirectory)/eng/scripts/generate-msi-files.ps1'
123-
arguments: '-ArtifactsPath "$(Pipeline.Workspace)/staging/coretools-cli"'
100+
arguments: '-ArtifactsPath "$(Pipeline.Workspace)/staging/func-cli"'
124101
workingDirectory: '$(Build.SourcesDirectory)/build'
125102

126103
- template: ci/sign-files.yml@eng
127104
parameters:
128105
displayName: Sign MSI files
129-
folderPath: $(Pipeline.Workspace)/staging/coretools-cli
106+
folderPath: $(Pipeline.Workspace)/staging/func-cli
130107
pattern: '*.msi'
131108
signType: 'inline'
132109
inlineOperation: |
@@ -159,25 +136,15 @@ jobs:
159136
inputs:
160137
targetType: filePath
161138
filePath: '$(Build.SourcesDirectory)/eng/scripts/artifact-assembler/test-vs-artifacts.ps1'
162-
arguments: '-StagingDirectory "$(Pipeline.Workspace)/staging/coretools-visualstudio"'
139+
arguments: '-StagingDirectory "$(Pipeline.Workspace)/staging/func-cli-visualstudio"'
163140

164141
- ${{ if startsWith(parameters.arch, 'win') }}:
165142
- task: PowerShell@2
166143
displayName: 'Test Artifacts'
167144
inputs:
168145
targetType: filePath
169146
filePath: '$(Build.SourcesDirectory)/eng/scripts/artifact-assembler/test-artifacts.ps1'
170-
arguments: '-StagingDirectory "$(Pipeline.Workspace)/staging/coretools-cli"'
171-
env:
172-
DirectoryToLogTo: $(Build.SourcesDirectory)/TestLogs
173-
174-
- task: 1ES.PublishPipelineArtifact@1
175-
condition: succeededOrFailed()
176-
continueOnError: true
177-
inputs:
178-
targetPath: '$(Build.SourcesDirectory)/TestLogs'
179-
artifactName: 'TestLogs_$(System.JobId)_$(System.JobAttempt)'
180-
artifactType: 'pipeline'
147+
arguments: '-StagingDirectory "$(Pipeline.Workspace)/staging/func-cli"'
181148

182149
- task: DotNetCoreCLI@2
183150
displayName: 'Zip Artifacts'
@@ -198,10 +165,18 @@ jobs:
198165
displayName: 'Copy Files to Artifact Staging Directory'
199166
inputs:
200167
SourceFolder: '$(Pipeline.Workspace)/staging'
201-
Contents: 'coretools-*/**'
168+
Contents: 'func-cli-*/**'
202169
TargetFolder: '$(Build.ArtifactStagingDirectory)/core-tools'
203170

204171
- ${{ if eq(parameters.arch, 'min.win-x64') }}:
172+
- task: PowerShell@2
173+
displayName: 'Generate metadata.json file'
174+
inputs:
175+
targetType: filePath
176+
filePath: '$(Build.SourcesDirectory)/eng/scripts/artifact-assembler/generate-metadata-file.ps1'
177+
arguments: '-StagingDirectory "$(Pipeline.Workspace)/staging"'
178+
workingDirectory: '$(Pipeline.Workspace)'
179+
205180
- task: CopyFiles@2
206181
displayName: 'Copy metadata.json to Artifact Staging Directory'
207182
inputs:

eng/ci/templates/official/jobs/host-build-pack.yml

Lines changed: 1 addition & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -116,24 +116,6 @@ jobs:
116116
nethost.dll
117117
TargetFolder: $(Build.ArtifactStagingDirectory)/_coreToolsHostPackages/win-arm64
118118

119-
- ${{ if eq(variables['Build.Reason'], 'Schedule') }}:
120-
- task: PowerShell@2
121-
displayName: 'Generate nightly build package version for feed'
122-
inputs:
123-
targetType: filePath
124-
filePath: '$(Build.SourcesDirectory)/eng/scripts/generate-nightly-build-version.ps1'
125-
126-
- task: UniversalPackages@0
127-
displayName: Publish
128-
inputs:
129-
command: publish
130-
publishDirectory: '$(Build.ArtifactStagingDirectory)/_coreToolsHostPackages'
131-
vstsFeedPublish: 'internal/core-tools-nightly-build'
132-
vstsFeedPackagePublish: 'func-host-windows-signed'
133-
versionOption: custom
134-
versionPublish: '$(NightlyBuildVersion)'
135-
packagePublishDescription: 'Core tools host build (windows)'
136-
137119
templateContext:
138120
outputParentDirectory: $(Build.ArtifactStagingDirectory)
139121
outputs:
@@ -239,34 +221,9 @@ jobs:
239221
libnethost.so
240222
TargetFolder: $(Build.ArtifactStagingDirectory)/_coreToolsHostPackages/linux-x64
241223

242-
- ${{ if eq(variables['Build.Reason'], 'Schedule') }}:
243-
- task: PowerShell@2
244-
displayName: 'Generate nightly build package version for feed'
245-
inputs:
246-
targetType: filePath
247-
filePath: '$(Build.SourcesDirectory)/eng/scripts/generate-nightly-build-version.ps1'
248-
249-
- task: PowerShell@2
250-
displayName: 'Print NightlyBuildVersion'
251-
inputs:
252-
targetType: 'inline'
253-
script: |
254-
Write-Host "NightlyBuildVersion value: $(NightlyBuildVersion)"
255-
256-
- task: UniversalPackages@0
257-
displayName: Publish
258-
inputs:
259-
command: publish
260-
publishDirectory: '$(Build.ArtifactStagingDirectory)/_coreToolsHostPackages'
261-
vstsFeedPublish: 'internal/core-tools-nightly-build'
262-
vstsFeedPackagePublish: 'func-host-linux-signed'
263-
versionOption: custom
264-
versionPublish: '$(NightlyBuildVersion)'
265-
packagePublishDescription: 'Core tools host build (linux)'
266-
267224
templateContext:
268225
outputParentDirectory: $(Build.ArtifactStagingDirectory)
269226
outputs:
270227
- output: pipelineArtifact
271228
path: $(Build.ArtifactStagingDirectory)/_coreToolsHostPackages
272-
artifact: func-host-linux-signed
229+
artifact: func-host-linux-signed

eng/ci/templates/official/jobs/publish-cli.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ jobs:
8181
signPatterns: '*.osx-*.zip'
8282

8383
# arm64 MSI signing is not supported yet, so we skip it for now. We also do not generate MSI for .min versions.
84-
- ${{ if and(contains(parameters.runtime, 'win'), not(contains(parameters.runtime, 'arm64')), not(contains(parameters.runtime, 'min'))) }}:
84+
- ${{ if startsWith(parameters.runtime, 'win-x') }}:
8585
- pwsh: >
8686
./eng/scripts/generate-msi-files.ps1
8787
-artifactsPath "$(Build.Repository.LocalPath)/artifacts"

eng/ci/templates/official/jobs/upload-cli-to-feed.yml renamed to eng/ci/templates/official/jobs/upload-artifact-to-feed.yml

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
1+
parameters:
2+
- name: artifactName
3+
type: string
4+
- name: packageName
5+
type: string
6+
17
jobs:
2-
- job: UploadCliToFeed
3-
displayName: 'Upload CLI to Feed'
8+
- job: UploadArtifactToFeed
9+
displayName: 'Upload artifact to Feed'
410
timeoutInMinutes: "180"
511

612
pool:
@@ -10,18 +16,18 @@ jobs:
1016

1117
steps:
1218
- task: DownloadPipelineArtifact@2
13-
displayName: Download CLI artifacts
19+
displayName: Download artifact
1420
inputs:
15-
artifact: 'func-cli-$(Build.BuildNumber)'
16-
path: $(Build.ArtifactStagingDirectory)/func-cli
21+
artifact: '{{ parameters.artifactName }}'
22+
path: $(Build.ArtifactStagingDirectory)/drop
1723

1824
- task: UniversalPackages@0
1925
displayName: Publish to feed
2026
inputs:
2127
command: publish
22-
publishDirectory: '$(Build.ArtifactStagingDirectory)/func-cli'
28+
publishDirectory: '$(Build.ArtifactStagingDirectory)/drop'
2329
vstsFeedPublish: 'internal/core-tools-nightly-build'
24-
vstsFeedPackagePublish: 'func-cli'
30+
vstsFeedPackagePublish: '{{ parameters.packageName }}'
2531
versionOption: custom
2632
versionPublish: '$(Build.BuildNumber)'
2733
packagePublishDescription: 'Core tools default nightly build'

src/Cli/ArtifactAssembler/Constants.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ internal static class Constants
99
internal const string InProc8DirectoryName = "in-proc8";
1010
internal const string InProc6DirectoryName = "in-proc6";
1111
internal const string CoreToolsHostDirectoryName = "host";
12-
internal const string VisualStudioOutputArtifactDirectoryName = "coretools-visualstudio";
1312
internal const string InProcOutputArtifactNameSuffix = "_inproc";
1413
internal const string CoreToolsProductVersionPattern = @"(\d+\.\d+\.\d+(?:-[0-9A-Za-z\-\.]+)?(?:\+[0-9A-Za-z\-\.]+)?)$";
1514
internal const string ArtifactNameRegexPattern = @"^(.*?)(\d+\.\d+\.\d+)$";
1615
internal const string OutOfProcDirectoryName = "default";
17-
internal const string CliOutputArtifactDirectoryName = "coretools-cli";
16+
internal const string CliOutputArtifactDirectoryName = "func-cli";
17+
internal const string VisualStudioOutputArtifactDirectoryName = "func-cli-visualstudio";
1818
}
1919
}

0 commit comments

Comments
 (0)