51 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
		
		
			
		
	
	
			51 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| 
								 | 
							
								# Required pipeline variables:
							 | 
						||
| 
								 | 
							
								# - BUILD_POOL - Azure DevOps build pool to use
							 | 
						||
| 
								 | 
							
								# - CONTAINER_IMAGE - Dev container image URL to use. Should have Azure CLI, Packer and Ansible.
							 | 
						||
| 
								 | 
							
								# - AZURE_TENANT_ID - tenant ID
							 | 
						||
| 
								 | 
							
								# - AZURE_CLIENT_ID - Service principal ID
							 | 
						||
| 
								 | 
							
								# - AZURE_CLIENT_SECRET - Service principal secret
							 | 
						||
| 
								 | 
							
								# - AZURE_SUBSCRIPTION_ID - Subscription ID used by the pipeline
							 | 
						||
| 
								 | 
							
								# - KUBERNETES_VERSION - version of Kubernetes to build the image with, e.g. `1.16.2`
							 | 
						||
| 
								 | 
							
								# - OS - target of build e.g. `Ubuntu/Windows`
							 | 
						||
| 
								 | 
							
								# - OS_VERSION - target of build e.g. `18.04/2004/2019`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								jobs:
							 | 
						||
| 
								 | 
							
								- job: build_vhd
							 | 
						||
| 
								 | 
							
								  container: $[ variables['CONTAINER_IMAGE'] ]
							 | 
						||
| 
								 | 
							
								  timeoutInMinutes: 120
							 | 
						||
| 
								 | 
							
								  strategy:
							 | 
						||
| 
								 | 
							
								    maxParallel: 0
							 | 
						||
| 
								 | 
							
								  pool:
							 | 
						||
| 
								 | 
							
								    name: $(BUILD_POOL)
							 | 
						||
| 
								 | 
							
								  steps:
							 | 
						||
| 
								 | 
							
								  - template: k8s-config.yaml
							 | 
						||
| 
								 | 
							
								  - script: |
							 | 
						||
| 
								 | 
							
								      set -o pipefail
							 | 
						||
| 
								 | 
							
								      make deps-azure
							 | 
						||
| 
								 | 
							
								      os=$(echo "${OS}" | tr '[:upper:]' '[:lower:]')
							 | 
						||
| 
								 | 
							
								      version=$(echo "${OS_VERSION}" | tr '[:upper:]' '[:lower:]' | tr -d .)
							 | 
						||
| 
								 | 
							
								      export RESOURCE_GROUP_NAME="cluster-api-images"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      # timestamp is in RFC-3339 format to match kubetest
							 | 
						||
| 
								 | 
							
								      export TIMESTAMP="$(date -u '+%Y-%m-%dT%H:%M:%SZ')"
							 | 
						||
| 
								 | 
							
								      export JOB_NAME="${JOB_NAME:-"image-builder-vhd"}"
							 | 
						||
| 
								 | 
							
								      export TAGS="creationTimestamp=${TIMESTAMP} jobName=${JOB_NAME}"
							 | 
						||
| 
								 | 
							
								      printf "${TAGS}" | tee packer/azure/tags.out
							 | 
						||
| 
								 | 
							
								      make build-azure-vhd-$os-$version | tee packer/azure/packer.out
							 | 
						||
| 
								 | 
							
								    displayName: Building VHD
							 | 
						||
| 
								 | 
							
								    workingDirectory: '$(system.defaultWorkingDirectory)/images/capi'
							 | 
						||
| 
								 | 
							
								    env:
							 | 
						||
| 
								 | 
							
								      AZURE_CLIENT_SECRET: $(AZURE_CLIENT_SECRET)
							 | 
						||
| 
								 | 
							
								  - template: generate-sas.yaml
							 | 
						||
| 
								 | 
							
								  - template: vhd-publishing-info.yaml
							 | 
						||
| 
								 | 
							
								  - task: PublishPipelineArtifact@1
							 | 
						||
| 
								 | 
							
								    inputs:
							 | 
						||
| 
								 | 
							
								      artifact: 'publishing-info'
							 | 
						||
| 
								 | 
							
								      path: '$(system.defaultWorkingDirectory)/images/capi/packer/azure/vhd-publishing-info.json'
							 | 
						||
| 
								 | 
							
								    condition: eq(variables.CLEANUP, 'False')
							 | 
						||
| 
								 | 
							
								  - template: delete-storage-account.yaml
							 | 
						||
| 
								 | 
							
								  - script: |
							 | 
						||
| 
								 | 
							
								      chown -R $USER:$USER .
							 | 
						||
| 
								 | 
							
								    displayName: cleanup - chown all files in work directory
							 | 
						||
| 
								 | 
							
								    condition: always()
							 |