kind: pipeline type: kubernetes name: 'Packer Build' volumes: - name: output claim: name: flexvolsmb-drone-output - name: scratch claim: name: flexvolsmb-drone-scratch trigger: event: exclude: - tag steps: - name: Debugging information image: bv11-cr01.bessems.eu/library/packer-extended pull: always commands: - ansible --version - ovftool --version - packer --version - yamllint --version - name: Linting depends_on: - Debugging information image: bv11-cr01.bessems.eu/library/packer-extended pull: always commands: - | yamllint -d "{extends: relaxed, rules: {line-length: disable}}" \ ansible \ packer/preseed/UbuntuServer22.04/user-data \ scripts - name: Semantic Release (Dry-run) depends_on: - Linting image: bv11-cr01.bessems.eu/proxy/library/node:20-slim pull: always commands: - | apt-get update - | apt-get install -y --no-install-recommends \ git-core \ ca-certificates - | npm install \ semantic-release \ @semantic-release/commit-analyzer \ @semantic-release/exec \ - | export GIT_CREDENTIALS=$${GIT_USERNAME}:$${GIT_APIKEY} - | npx semantic-release \ --package @semantic-release/exec \ --package semantic-release \ --branches ${DRONE_BRANCH} \ --tag-format K8s_1.25.9-v$${version} \ --dry-run \ --plugins @semantic-release/commit-analyzer,@semantic-release/exec \ --analyzeCommits @semantic-release/commit-analyzer \ --verifyRelease @semantic-release/exec \ --verifyReleaseCmd 'echo "$${nextRelease.version}" > .version' environment: GIT_APIKEY: from_secret: git_apikey GIT_USERNAME: djpbessems - name: Install Ansible Galaxy collections depends_on: - Semantic Release (Dry-run) image: bv11-cr01.bessems.eu/library/packer-extended pull: always commands: - | ansible-galaxy collection install \ -r ansible/requirements.yml \ -p ./ansible/collections - name: Kubernetes Bootstrap Appliance depends_on: - Install Ansible Galaxy collections image: bv11-cr01.bessems.eu/library/packer-extended pull: always commands: - | sed -i -e "s/<>/$${SSH_PASSWORD}/g" \ packer/preseed/UbuntuServer22.04/user-data - | export K8S_VERSION=$(yq '.components.clusterapi.workload.version.k8s' < ./ansible/vars/metacluster.yml) export NEXT_RELEASE_VERSION=$(cat .version) - | packer init -upgrade \ ./packer - | packer validate \ -only=vsphere-iso.bootstrap \ -var vm_name=${DRONE_BUILD_NUMBER}-${DRONE_COMMIT_SHA:0:10}-$(openssl rand -hex 3) \ -var docker_username=$${DOCKER_USERNAME} \ -var docker_password=$${DOCKER_PASSWORD} \ -var repo_username=$${REPO_USERNAME} \ -var repo_password=$${REPO_PASSWORD} \ -var ssh_password=$${SSH_PASSWORD} \ -var vsphere_password=$${VSPHERE_PASSWORD} \ -var k8s_version=$K8S_VERSION \ -var next_release_version=$NEXT_RELEASE_VERSION \ ./packer - | packer build \ -on-error=cleanup -timestamp-ui \ -only=vsphere-iso.bootstrap \ -var vm_name=${DRONE_BUILD_NUMBER}-${DRONE_COMMIT_SHA:0:10}-$(openssl rand -hex 3) \ -var docker_username=$${DOCKER_USERNAME} \ -var docker_password=$${DOCKER_PASSWORD} \ -var repo_username=$${REPO_USERNAME} \ -var repo_password=$${REPO_PASSWORD} \ -var ssh_password=$${SSH_PASSWORD} \ -var vsphere_password=$${VSPHERE_PASSWORD} \ -var k8s_version=$K8S_VERSION \ -var next_release_version=$NEXT_RELEASE_VERSION \ ./packer environment: DOCKER_USERNAME: from_secret: docker_username DOCKER_PASSWORD: from_secret: docker_password # PACKER_LOG: 1 REPO_USERNAME: from_secret: repo_username REPO_PASSWORD: from_secret: repo_password SSH_PASSWORD: from_secret: ssh_password VSPHERE_PASSWORD: from_secret: vsphere_password volumes: - name: output path: /output - name: scratch path: /scratch - name: Kubernetes Upgrade Appliance depends_on: - Install Ansible Galaxy collections image: bv11-cr01.bessems.eu/library/packer-extended pull: alwaysquery( commands: - | sed -i -e "s/<>/$${SSH_PASSWORD}/g" \ packer/preseed/UbuntuServer22.04/user-data - | export K8S_VERSION=$(yq '.components.clusterapi.workload.version.k8s' < ./ansible/vars/metacluster.yml) export NEXT_RELEASE_VERSION=$(cat .version) - | packer init -upgrade \ ./packer - | packer validate \ -only=vsphere-iso.upgrade \ -var vm_name=${DRONE_BUILD_NUMBER}-${DRONE_COMMIT_SHA:0:10}-$(openssl rand -hex 3) \ -var docker_username=$${DOCKER_USERNAME} \ -var docker_password=$${DOCKER_PASSWORD} \ -var repo_username=$${REPO_USERNAME} \ -var repo_password=$${REPO_PASSWORD} \ -var ssh_password=$${SSH_PASSWORD} \ -var vsphere_password=$${VSPHERE_PASSWORD} \ -var k8s_version=$K8S_VERSION \ -var next_release_version=$NEXT_RELEASE_VERSION \ ./packer - | packer build \ -on-error=cleanup -timestamp-ui \ -only=vsphere-iso.upgrade \ -var vm_name=${DRONE_BUILD_NUMBER}-${DRONE_COMMIT_SHA:0:10}-$(openssl rand -hex 3) \ -var docker_username=$${DOCKER_USERNAME} \ -var docker_password=$${DOCKER_PASSWORD} \ -var repo_username=$${REPO_USERNAME} \ -var repo_password=$${REPO_PASSWORD} \ -var ssh_password=$${SSH_PASSWORD} \ -var vsphere_password=$${VSPHERE_PASSWORD} \ -var k8s_version=$K8S_VERSION \ -var next_release_version=$NEXT_RELEASE_VERSION \ ./packer environment: DOCKER_USERNAME: from_secret: docker_username DOCKER_PASSWORD: from_secret: docker_password # PACKER_LOG: 1 REPO_USERNAME: from_secret: repo_username REPO_PASSWORD: from_secret: repo_password SSH_PASSWORD: from_secret: ssh_password VSPHERE_PASSWORD: from_secret: vsphere_password volumes: - name: output path: /output - name: scratch path: /scratch - name: Remove temporary resources depends_on: - Kubernetes Bootstrap Appliance - Kubernetes Upgrade Appliance image: bv11-cr01.bessems.eu/library/packer-extended commands: - | pwsh -file scripts/Remove-Resources.ps1 \ -VMName $DRONE_BUILD_NUMBER-${DRONE_COMMIT_SHA:0:10} \ -VSphereFQDN 'bv11-vc.bessems.lan' \ -VSphereUsername 'administrator@vsphere.local' \ -VSpherePassword $${VSPHERE_PASSWORD} environment: VSPHERE_PASSWORD: from_secret: vsphere_password volumes: - name: scratch path: /scratch when: status: - success - failure