kind: pipeline type: kubernetes name: 'Packer Build' volumes: - name: output claim: name: flexvolsmb-drone-output - name: scratch claim: name: flexvolsmb-drone-scratch 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 - | export GIT_CREDENTIALS=${GIT_USERNAME}:${GIT_APIKEY} - | npx semantic-release \ --branches ${DRONE_BRANCH} \ --dry-run 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 # volumes: # - name: scratch # path: /scratch # - 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) # - | # 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 \ # ./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 \ # ./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) # - | # 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 \ # ./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 \ # ./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