77 include :
88 - main
99 - support/v1
10- - task/move-to-deploy-stage
1110 tags :
1211 include :
1312 - ' v*'
1615 include :
1716 - main
1817 - support/v1
19- - task/move-to-deploy-stage
2018
2119variables :
2220 buildPlatform : ' Any CPU'
2321 buildConfiguration : ' Release'
2422 ProductBinPath : ' $(Build.SourcesDirectory)\src\Microsoft.OpenApi\bin\$(BuildConfiguration)'
2523 REGISTRY : ' msgraphpperegistry.azurecr.io'
2624 IMAGE_NAME : ' public/openapi/hidi'
27- PREVIEW_BRANCH : ' refs/heads/task/move-to-deploy-stage '
25+ PREVIEW_BRANCH : ' refs/heads/main '
2826
2927resources :
3028 repositories :
@@ -55,6 +53,14 @@ extends:
5553 displayName : ' Publish Artifact: RepoFiles'
5654 artifactName : RepoFiles
5755 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'
5864 steps :
5965 - task : UseDotNet@2
6066 displayName : ' Use .NET 6'
@@ -230,21 +236,35 @@ extends:
230236 # Extract run number
231237 runNumber=$(echo "$(Build.BuildNumber)" | grep -o '[0-9]\+$' || date +"%S%N" | cut -c1-3)
232238 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"
233249 displayName: 'Extract version and build info'
234250
235251 - bash : |
236252 # Create image tag based on branch/tag
237253 if [[ "$(Build.SourceBranch)" == "$(PREVIEW_BRANCH)" ]]; then
238254 # For main branch
239255 IMAGE_TAGS="--tag $(REGISTRY)/$(IMAGE_NAME):nightly --tag $(REGISTRY)/$(IMAGE_NAME):$(VERSION).$(BUILDDATE)$(RUNNUMBER)"
256+ echo "nightly" > "$(Build.ArtifactStagingDirectory)/ImageConfig/imagetype.txt"
240257 elif [[ "$(Build.SourceBranch)" == refs/tags/v* ]]; then
241258 # For release tags
242259 IMAGE_TAGS="--tag $(REGISTRY)/$(IMAGE_NAME):latest --tag $(REGISTRY)/$(IMAGE_NAME):$(VERSION)"
260+ echo "release" > "$(Build.ArtifactStagingDirectory)/ImageConfig/imagetype.txt"
243261 else
244262 # For other branches/PRs
245263 IMAGE_TAGS="--tag $(REGISTRY)/$(IMAGE_NAME):$(VERSION).$(BUILDDATE)$(RUNNUMBER)"
264+ echo "branch" > "$(Build.ArtifactStagingDirectory)/ImageConfig/imagetype.txt"
246265 fi
247266
267+ echo "$IMAGE_TAGS" > "$(Build.ArtifactStagingDirectory)/ImageConfig/imagetags.txt"
248268 echo "##vso[task.setvariable variable=IMAGE_TAGS]$IMAGE_TAGS"
249269 displayName: 'Set Docker image tags'
250270
@@ -261,11 +281,26 @@ extends:
261281 # Build image with BuildX but don't push yet - save to local tar file
262282 docker buildx build \
263283 --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" \
265285 $(IMAGE_TAGS) \
266286 $(Build.SourcesDirectory)
267287 displayName: 'Build Docker image and save to artifact'
268288
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
269304 - task : PublishPipelineArtifact@1
270305 displayName : ' Publish Docker Image Artifact'
271306 inputs :
@@ -425,7 +460,7 @@ extends:
425460 - task : AzureCLI@2
426461 displayName : ' Login to Azure Container Registry'
427462 inputs :
428- azureSubscription : ' ACR Images Push Service Connection '
463+ azureSubscription : ' ACR Push Test '
429464 scriptType : bash
430465 scriptLocation : inlineScript
431466 inlineScript : |
0 commit comments