--- # All of these are required variables: BUILT_IMAGE_SUFFIX: '{{env `BUILT_IMAGE_SUFFIX`}}' GOSRC: '{{env `GOSRC`}}' PACKER_BASE: '{{env `PACKER_BASE`}}' SCRIPT_BASE: '{{env `SCRIPT_BASE`}}' # Base-image names are required. Using image family-names breaks parallelism UBUNTU_BASE_IMAGE: '{{env `UBUNTU_BASE_IMAGE`}}' PRIOR_UBUNTU_BASE_IMAGE: '{{env `PRIOR_UBUNTU_BASE_IMAGE`}}' FEDORA_BASE_IMAGE: '{{env `FEDORA_BASE_IMAGE`}}' PRIOR_FEDORA_BASE_IMAGE: '{{env `PRIOR_FEDORA_BASE_IMAGE`}}' # Protected credentials, decrypted by Cirrus at runtime GCE_SSH_USERNAME: '{{env `GCE_SSH_USERNAME`}}' GCP_PROJECT_ID: '{{env `GCP_PROJECT_ID`}}' SERVICE_ACCOUNT: '{{env `SERVICE_ACCOUNT`}}' GOOGLE_APPLICATION_CREDENTIALS: '{{env `GOOGLE_APPLICATION_CREDENTIALS`}}' # Don't leak sensitive values in error messages / output sensitive-variables: - 'GCE_SSH_USERNAME' - 'GCP_PROJECT_ID' - 'SERVICE_ACCOUNT' # What images to produce in which cloud builders: # v----- is a YAML anchor, allows referencing this object by name (below) - &gce_hosted_image name: 'ubuntu-19' type: 'googlecompute' image_name: '{{build_name}}{{user `BUILT_IMAGE_SUFFIX`}}' image_family: '{{build_name}}-cache' source_image: '{{user `UBUNTU_BASE_IMAGE`}}' # precedence over family source_image_family: 'ubuntu-base' # for ref. only disk_size: 20 # REQUIRED: Runtime allocation > this value project_id: '{{user `GCP_PROJECT_ID`}}' service_account_email: '{{user `SERVICE_ACCOUNT`}}' communicator: 'ssh' ssh_username: '{{user `GCE_SSH_USERNAME`}}' ssh_pty: 'true' # The only supported zone in Cirrus-CI, as of addition of this comment zone: 'us-central1-a' # v----- is a YAML alias, allows partial re-use of the anchor object - <<: *gce_hosted_image name: 'ubuntu-18' source_image: '{{user `PRIOR_UBUNTU_BASE_IMAGE`}}' source_image_family: 'prior-ubuntu-base' - <<: *gce_hosted_image name: 'fedora-32' source_image: '{{user `FEDORA_BASE_IMAGE`}}' source_image_family: 'fedora-base' - <<: *gce_hosted_image name: 'fedora-31' source_image: '{{user `PRIOR_FEDORA_BASE_IMAGE`}}' source_image_family: 'prior-fedora-base' # The brains of the operation, making actual modifications to the base-image. provisioners: - type: 'file' source: '{{user `GOSRC`}}' destination: '/tmp/libpod' - type: 'shell' script: '{{user `GOSRC`}}/{{user `PACKER_BASE`}}/{{split build_name "-" 0}}_setup.sh' environment_vars: - 'PACKER_BUILDER_NAME={{build_name}}' - 'GOSRC=/tmp/libpod' - 'PACKER_BASE={{user `PACKER_BASE`}}' - 'SCRIPT_BASE={{user `SCRIPT_BASE`}}' post-processors: - type: 'manifest' # writes packer-manifest.json