Skip to content

Commit 54b3202

Browse files
OnokaevEvans Aboge (from Dev Box)baywet
authored
ci: Migrate ACR Push pipeline to Azure Pipelines (#2213)
* Pipeline scafolding * Task: Bootstrap ACR Push * Test for hidi * Update pipeline * Update version check * Trigger for this branch * Get version from Directory.Build.props * Fix version ref * Fix variable ref * Use quotes around tags * Remove extra preview suffix * Fix trim * Remove build arg and add build date to tag * Publish to ppe first * Fix run number generation * Push to prod * Test PPE * Test push * Log in to right acr * Update yaml * Delete docker.yml * Fix indentation * Only trigger for main * Validate pipeline * Fix condition check * Fix run condition * Run stage in a windows environment * Cleanup * Cleanup * Cleanup * chore: Deletes .github/workflows/docker.yml --------- Co-authored-by: Evans Aboge (from Dev Box) <[email protected]> Co-authored-by: Vincent Biret <[email protected]>
1 parent 6022bdd commit 54b3202

File tree

2 files changed

+121
-54
lines changed

2 files changed

+121
-54
lines changed

.azure-pipelines/ci-build.yml

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,15 @@ pr:
1515
include:
1616
- main
1717
- support/v1
18+
1819
variables:
1920
buildPlatform: 'Any CPU'
2021
buildConfiguration: 'Release'
2122
ProductBinPath: '$(Build.SourcesDirectory)\src\Microsoft.OpenApi\bin\$(BuildConfiguration)'
23+
REGISTRY: 'msgraphprodregistry.azurecr.io'
24+
IMAGE_NAME: 'public/openapi/hidi'
25+
PREVIEW_BRANCH: 'refs/heads/main'
26+
2227
resources:
2328
repositories:
2429
- repository: 1ESPipelineTemplates
@@ -313,3 +318,119 @@ extends:
313318
assets: '$(Pipeline.Workspace)\**\*.exe'
314319
addChangeLog: false
315320

321+
- stage: Build_and_deploy_docker_images
322+
displayName: 'Build and deploy docker images'
323+
condition: or(eq(variables['build.sourceBranch'], 'refs/tags/v'), eq(variables['build.sourceBranch'], variables['PREVIEW_BRANCH']))
324+
dependsOn: build
325+
pool:
326+
name: Azure-Pipelines-1ESPT-ExDShared
327+
image: ubuntu-latest
328+
os: linux
329+
jobs:
330+
- job: buildAndPush
331+
steps:
332+
- task: AzureCLI@2
333+
displayName: 'Login to Azure Container Registry'
334+
inputs:
335+
azureSubscription: 'ACR Images Push Service Connection'
336+
scriptType: bash
337+
scriptLocation: inlineScript
338+
inlineScript: |
339+
az acr login --name msgraphprodregistry
340+
341+
- powershell: |
342+
$content = [XML](Get-Content ./Directory.Build.props)
343+
Write-Host "XML loaded, finding version..."
344+
345+
# Handle PropertyGroup as either a single element or array
346+
$version = $null
347+
if ($content.Project.PropertyGroup -is [array]) {
348+
Write-Host "PropertyGroup is an array, checking each entry..."
349+
foreach ($pg in $content.Project.PropertyGroup) {
350+
if ($pg.Version) {
351+
$version = $pg.Version.ToString().Trim()
352+
Write-Host "Found version in PropertyGroup array: $version"
353+
break
354+
}
355+
}
356+
} else {
357+
# Single PropertyGroup
358+
$version = $content.Project.PropertyGroup.Version
359+
if ($version) {
360+
$version = $version.ToString().Trim()
361+
Write-Host "Found version in PropertyGroup: $version"
362+
}
363+
}
364+
365+
if (-not $version) {
366+
Write-Host "##vso[task.logissue type=error]Version not found in Directory.Build.props"
367+
exit 1
368+
}
369+
370+
Write-Host "Version found: $version"
371+
Write-Host "##vso[task.setvariable variable=version;isoutput=true]$version"
372+
Write-Host "##vso[task.setvariable variable=VERSION]$version"
373+
displayName: 'Get version from csproj'
374+
name: getversion
375+
376+
- bash: |
377+
# Debug output to verify version variable
378+
echo "Version from previous step: $VERSION"
379+
displayName: 'Verify version variable'
380+
381+
- bash: |
382+
echo "Build Number: $(Build.BuildNumber)"
383+
# Extract the last 3 characters for the run number
384+
runnumber=$(echo "$(Build.BuildNumber)" | grep -o '[0-9]\+$')
385+
echo "Extracted Run Number: $runnumber"
386+
387+
# If extraction fails, set a default
388+
if [ -z "$runnumber" ]; then
389+
echo "Extraction failed, using default value"
390+
runnumber=$(date +"%S%N" | cut -c1-3)
391+
echo "Generated fallback run number: $runnumber"
392+
fi
393+
394+
# Set the variable for later steps
395+
echo "##vso[task.setvariable variable=RUNNUMBER]$runnumber"
396+
echo "##vso[task.setvariable variable=RUNNUMBER;isOutput=true]$runnumber"
397+
displayName: 'Get truncated run number'
398+
name: getrunnumber
399+
condition: eq(variables['Build.SourceBranch'], variables['PREVIEW_BRANCH'])
400+
401+
- bash: |
402+
date=$(date +'%Y%m%d')
403+
echo "Date value: $date"
404+
echo "##vso[task.setvariable variable=BUILDDATE;isOutput=true]$date"
405+
echo "##vso[task.setvariable variable=BUILDDATE]$date"
406+
displayName: 'Get current date'
407+
name: setdate
408+
condition: eq(variables['Build.SourceBranch'], variables['PREVIEW_BRANCH'])
409+
410+
- bash: |
411+
echo "Building Docker image..."
412+
echo "Using build date: ${BUILDDATE}"
413+
# Using quotes around tags to prevent flag interpretation
414+
docker build \
415+
-t "$(REGISTRY)/$(IMAGE_NAME):nightly" \
416+
-t "$(REGISTRY)/$(IMAGE_NAME):${VERSION}.${BUILDDATE}${RUNNUMBER}" \
417+
"$(Build.SourcesDirectory)"
418+
419+
echo "Pushing Docker image with nightly tag..."
420+
docker push "$(REGISTRY)/$(IMAGE_NAME):nightly"
421+
docker push "$(REGISTRY)/$(IMAGE_NAME):${VERSION}.${BUILDDATE}${RUNNUMBER}"
422+
displayName: 'Build and Push Nightly Image'
423+
condition: eq(variables['Build.SourceBranch'], variables['PREVIEW_BRANCH'])
424+
425+
- bash: |
426+
echo "Building Docker image for release..."
427+
docker build \
428+
-t "$(REGISTRY)/$(IMAGE_NAME):latest" \
429+
-t "$(REGISTRY)/$(IMAGE_NAME):${VERSION}.${BUILDDATE}${RUNNUMBER}" \
430+
"$(Build.SourcesDirectory)"
431+
432+
echo "Pushing Docker image with latest and version tags..."
433+
docker push "$(REGISTRY)/$(IMAGE_NAME):latest"
434+
docker push "$(REGISTRY)/$(IMAGE_NAME):${VERSION}.${BUILDDATE}${RUNNUMBER}"
435+
displayName: 'Build and Push Release Image'
436+
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags/v')

.github/workflows/docker.yml

Lines changed: 0 additions & 54 deletions
This file was deleted.

0 commit comments

Comments
 (0)