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()
|