7
7
include :
8
8
- main
9
9
- support/v1
10
- - task/move-to-deploy-stage
11
10
tags :
12
11
include :
13
12
- ' v*'
16
15
include :
17
16
- main
18
17
- support/v1
19
- - task/move-to-deploy-stage
20
18
21
19
variables :
22
20
buildPlatform : ' Any CPU'
23
21
buildConfiguration : ' Release'
24
22
ProductBinPath : ' $(Build.SourcesDirectory)\src\Microsoft.OpenApi\bin\$(BuildConfiguration)'
25
23
REGISTRY : ' msgraphpperegistry.azurecr.io'
26
24
IMAGE_NAME : ' public/openapi/hidi'
27
- PREVIEW_BRANCH : ' refs/heads/task/move-to-deploy-stage '
25
+ PREVIEW_BRANCH : ' refs/heads/main '
28
26
29
27
resources :
30
28
repositories :
@@ -55,6 +53,14 @@ extends:
55
53
displayName : ' Publish Artifact: RepoFiles'
56
54
artifactName : RepoFiles
57
55
targetPath : ' $(Build.ArtifactStagingDirectory)/RepoFiles'
56
+ - output : pipelineArtifact
57
+ displayName : ' Publish Artifact: DockerImage'
58
+ artifactName : DockerImage
59
+ targetPath : ' $(Build.ArtifactStagingDirectory)/DockerImage'
60
+ - output : pipelineArtifact
61
+ displayName : ' Publish Artifact: ImageConfig'
62
+ artifactName : ImageConfig
63
+ targetPath : ' $(Build.ArtifactStagingDirectory)/ImageConfig'
58
64
steps :
59
65
- task : UseDotNet@2
60
66
displayName : ' Use .NET 6'
@@ -230,21 +236,35 @@ extends:
230
236
# Extract run number
231
237
runNumber=$(echo "$(Build.BuildNumber)" | grep -o '[0-9]\+$' || date +"%S%N" | cut -c1-3)
232
238
echo "##vso[task.setvariable variable=RUNNUMBER]$runNumber"
239
+
240
+ # Create directories for Docker image artifacts and config
241
+ mkdir -p "$(Build.ArtifactStagingDirectory)/DockerImage"
242
+ mkdir -p "$(Build.ArtifactStagingDirectory)/ImageConfig"
243
+
244
+ # Save configuration for deploy stage
245
+ echo "$versionInfo" > "$(Build.ArtifactStagingDirectory)/ImageConfig/version.txt"
246
+ echo "$buildDate" > "$(Build.ArtifactStagingDirectory)/ImageConfig/builddate.txt"
247
+ echo "$runNumber" > "$(Build.ArtifactStagingDirectory)/ImageConfig/runnumber.txt"
248
+ echo "$(Build.SourceBranch)" > "$(Build.ArtifactStagingDirectory)/ImageConfig/sourcebranch.txt"
233
249
displayName: 'Extract version and build info'
234
250
235
251
- bash : |
236
252
# Create image tag based on branch/tag
237
253
if [[ "$(Build.SourceBranch)" == "$(PREVIEW_BRANCH)" ]]; then
238
254
# For main branch
239
255
IMAGE_TAGS="--tag $(REGISTRY)/$(IMAGE_NAME):nightly --tag $(REGISTRY)/$(IMAGE_NAME):$(VERSION).$(BUILDDATE)$(RUNNUMBER)"
256
+ echo "nightly" > "$(Build.ArtifactStagingDirectory)/ImageConfig/imagetype.txt"
240
257
elif [[ "$(Build.SourceBranch)" == refs/tags/v* ]]; then
241
258
# For release tags
242
259
IMAGE_TAGS="--tag $(REGISTRY)/$(IMAGE_NAME):latest --tag $(REGISTRY)/$(IMAGE_NAME):$(VERSION)"
260
+ echo "release" > "$(Build.ArtifactStagingDirectory)/ImageConfig/imagetype.txt"
243
261
else
244
262
# For other branches/PRs
245
263
IMAGE_TAGS="--tag $(REGISTRY)/$(IMAGE_NAME):$(VERSION).$(BUILDDATE)$(RUNNUMBER)"
264
+ echo "branch" > "$(Build.ArtifactStagingDirectory)/ImageConfig/imagetype.txt"
246
265
fi
247
266
267
+ echo "$IMAGE_TAGS" > "$(Build.ArtifactStagingDirectory)/ImageConfig/imagetags.txt"
248
268
echo "##vso[task.setvariable variable=IMAGE_TAGS]$IMAGE_TAGS"
249
269
displayName: 'Set Docker image tags'
250
270
@@ -261,11 +281,26 @@ extends:
261
281
# Build image with BuildX but don't push yet - save to local tar file
262
282
docker buildx build \
263
283
--platform linux/amd64,linux/arm64/v8 \
264
- --output "type=docker,dest=$(Build.ArtifactStagingDirectory)/docker-image.tar" \
284
+ --output "type=docker,dest=$(Build.ArtifactStagingDirectory)/DockerImage/ docker-image.tar" \
265
285
$(IMAGE_TAGS) \
266
286
$(Build.SourcesDirectory)
267
287
displayName: 'Build Docker image and save to artifact'
268
288
289
+ # Copy Docker image to staging directory using CopyFiles
290
+ - task : CopyFiles@2
291
+ displayName : ' Prepare Docker image for upload'
292
+ inputs :
293
+ sourceFolder : $(Build.ArtifactStagingDirectory)/DockerImage
294
+ contents : ' **/*'
295
+ targetFolder : $(Build.ArtifactStagingDirectory)/DockerImage
296
+
297
+ # Copy Docker image config to staging directory
298
+ - task : CopyFiles@2
299
+ displayName : ' Prepare Docker image config for upload'
300
+ inputs :
301
+ sourceFolder : $(Build.ArtifactStagingDirectory)/ImageConfig
302
+ contents : ' **/*'
303
+ targetFolder : $(Build.ArtifactStagingDirectory)/ImageConfig
269
304
- task : PublishPipelineArtifact@1
270
305
displayName : ' Publish Docker Image Artifact'
271
306
inputs :
@@ -425,7 +460,7 @@ extends:
425
460
- task : AzureCLI@2
426
461
displayName : ' Login to Azure Container Registry'
427
462
inputs :
428
- azureSubscription : ' ACR Images Push Service Connection '
463
+ azureSubscription : ' ACR Push Test '
429
464
scriptType : bash
430
465
scriptLocation : inlineScript
431
466
inlineScript : |
0 commit comments