Fix Cirrus/Packer VM image building

An invalid GCE value is being passed to packer, preventing it from
building VM images.  Fix this, and centralize the definition of the
image name suffix by setting it at ``setup_environment.sh`` call-time,
rather encoding inside packer's `libpod_images.json`.  This makes
the value available for use by other scripts.

Also, switch the unique component of the name, to be based on the
commit-sha being tested.  This will improve traceability, since the git
history is more permanent than the `CIRRUS_BUILD_ID` env. var.  The
later is subject to log-rotation, destroying evidence of the images
source state.

Signed-off-by: Chris Evich <cevich@redhat.com>
This commit is contained in:
Chris Evich
2018-10-08 09:06:10 -04:00
parent a75a888640
commit 02bc3c9962
5 changed files with 22 additions and 16 deletions

View File

@ -82,19 +82,21 @@ build_vm_images_task:
PACKER_BUILDS: "ubuntu-18" PACKER_BUILDS: "ubuntu-18"
# TODO: Make these work (also full_vm_testing_task above) # TODO: Make these work (also full_vm_testing_task above)
# PACKER_BUILDS: "rhel-7,centos-7,fedora-28,ubuntu-18" # PACKER_BUILDS: "rhel-7,centos-7,fedora-28,ubuntu-18"
# Command to register a RHEL VM
RHSM_COMMAND: ENCRYPTED[fec01433222af1ed0b8e40e89e7d18f6ee2fa9f49a1e721dc72f7eed3c740661215d1bd05cb54ac66a1a62116b92bdce]
# Additional environment variables needed to build GCE images, within a GCE VM
SERVICE_ACCOUNT: ENCRYPTED[02e03838b1156eb9516c7cc1e888e287910759842275f3c7bc2b4d56075cc6740e29ffa0ab71ebdbbd079673361dd8c9]
GCE_SSH_USERNAME: ENCRYPTED[a19a4ec62423e3e0fe4e7d1a5c9f11eda8fde321b9047ab5ed5590c2b1d7a2d12091c2be1531f949eae927059c2ae531]
GCP_PROJECT_ID: ENCRYPTED[77cb2d392bbc8d17412547d7d91f8d190089bf6e6b96eab9927994bbff6ab2c691ba0329ac7a650ba6182fbbab9fb68d]
# Existing base values to use, output images get epoc stamped names
PACKER_VER: "1.3.1"
# low-level base VM image name inputs to packer
CENTOS_BASE_IMAGE: "centos-7-v20180911" CENTOS_BASE_IMAGE: "centos-7-v20180911"
RHEL_BASE_IMAGE: "rhel-server-ec2-7-5-165-1" RHEL_BASE_IMAGE: "rhel-server-ec2-7-5-165-1"
FEDORA_BASE_IMAGE: "fedora-cloud-base-28-1-1-7" FEDORA_BASE_IMAGE: "fedora-cloud-base-28-1-1-7"
UBUNTU_BASE_IMAGE: "ubuntu-1804-bionic-v20180911" UBUNTU_BASE_IMAGE: "ubuntu-1804-bionic-v20180911"
# low-level base VM image name inputs to packer
# Command to register a RHEL VM
RHSM_COMMAND: ENCRYPTED[5caa5ff8c5370c3d25c7a1a28168501ab0fa2e5e3b627926f6eaba02b3fed965a7638a6151657809661f8c905c7dc187]
# Additional environment variables needed to build GCE images, within a GCE VM
SERVICE_ACCOUNT: ENCRYPTED[99e9a0b1c23f8dd29e83dfdf164f064cfd17afd9b895ca3b5e4c41170bd4290a8366fe2ad8e7a210b9f751711d1d002a]
GCE_SSH_USERNAME: ENCRYPTED[a7706b9e4b8bbb47f76358df7407f4fffa2e8552531190cc0b3315180c4b50588f560c4f85731e99cb5f43a396778277]
GCP_PROJECT_ID: ENCRYPTED[7c80e728e046b1c76147afd156a32c1c57d4a1ac1eab93b7e68e718c61ca8564fc61fef815952b8ae0a64e7034b8fe4f]
# Version of packer to use
PACKER_VER: "1.3.1"
gce_instance: gce_instance:
image_name: "image-builder-image" # Simply CentOS 7 + packer dependencies image_name: "image-builder-image" # Simply CentOS 7 + packer dependencies

View File

@ -13,7 +13,7 @@ UBUNTU_BASE_IMAGE $UBUNTU_BASE_IMAGE
FEDORA_BASE_IMAGE $FEDORA_BASE_IMAGE FEDORA_BASE_IMAGE $FEDORA_BASE_IMAGE
RHEL_BASE_IMAGE $RHEL_BASE_IMAGE RHEL_BASE_IMAGE $RHEL_BASE_IMAGE
RHSM_COMMAND $RHSM_COMMAND RHSM_COMMAND $RHSM_COMMAND
CIRRUS_BUILD_ID $CIRRUS_BUILD_ID BUILT_IMAGE_SUFFIX $BUILT_IMAGE_SUFFIX
SERVICE_ACCOUNT $SERVICE_ACCOUNT SERVICE_ACCOUNT $SERVICE_ACCOUNT
GCE_SSH_USERNAME $GCE_SSH_USERNAME GCE_SSH_USERNAME $GCE_SSH_USERNAME
GCP_PROJECT_ID $GCP_PROJECT_ID GCP_PROJECT_ID $GCP_PROJECT_ID

View File

@ -35,8 +35,11 @@ req_env_var() {
# and useful variables. # and useful variables.
# ref: https://cirrus-ci.org/guide/writing-tasks/#environment-variables # ref: https://cirrus-ci.org/guide/writing-tasks/#environment-variables
show_env_vars() { show_env_vars() {
# This is almost always multi-line, print it separately
echo "export CIRRUS_CHANGE_MESSAGE=$CIRRUS_CHANGE_MESSAGE"
echo " echo "
BUILDTAGS $BUILDTAGS BUILDTAGS $BUILDTAGS
BUILT_IMAGE_SUFFIX $BUILT_IMAGE_SUFFIX
CI $CI CI $CI
CIRRUS_CI $CIRRUS_CI CIRRUS_CI $CIRRUS_CI
CI_NODE_INDEX $CI_NODE_INDEX CI_NODE_INDEX $CI_NODE_INDEX
@ -47,7 +50,6 @@ CIRRUS_BASE_SHA $CIRRUS_BASE_SHA
CIRRUS_BRANCH $CIRRUS_BRANCH CIRRUS_BRANCH $CIRRUS_BRANCH
CIRRUS_BUILD_ID $CIRRUS_BUILD_ID CIRRUS_BUILD_ID $CIRRUS_BUILD_ID
CIRRUS_CHANGE_IN_REPO $CIRRUS_CHANGE_IN_REPO CIRRUS_CHANGE_IN_REPO $CIRRUS_CHANGE_IN_REPO
CIRRUS_CHANGE_MESSAGE $CIRRUS_CHANGE_MESSAGE
CIRRUS_CLONE_DEPTH $CIRRUS_CLONE_DEPTH CIRRUS_CLONE_DEPTH $CIRRUS_CLONE_DEPTH
CIRRUS_DEFAULT_BRANCH $CIRRUS_DEFAULT_BRANCH CIRRUS_DEFAULT_BRANCH $CIRRUS_DEFAULT_BRANCH
CIRRUS_PR $CIRRUS_PR CIRRUS_PR $CIRRUS_PR
@ -66,6 +68,7 @@ CIRRUS_USER_PERMISSION $CIRRUS_USER_PERMISSION
CIRRUS_WORKING_DIR $CIRRUS_WORKING_DIR CIRRUS_WORKING_DIR $CIRRUS_WORKING_DIR
CIRRUS_HTTP_CACHE_HOST $CIRRUS_HTTP_CACHE_HOST CIRRUS_HTTP_CACHE_HOST $CIRRUS_HTTP_CACHE_HOST
$(go env) $(go env)
PACKER_BUILDS $PACKER_BUILDS
" | while read NAME VALUE " | while read NAME VALUE
do do
[[ -z "$NAME" ]] || echo "export $NAME=\"$VALUE\"" [[ -z "$NAME" ]] || echo "export $NAME=\"$VALUE\""

View File

@ -15,7 +15,7 @@
"SERVICE_ACCOUNT": "{{env `SERVICE_ACCOUNT`}}", "SERVICE_ACCOUNT": "{{env `SERVICE_ACCOUNT`}}",
"GCP_PROJECT_ID": "{{env `GCP_PROJECT_ID`}}", "GCP_PROJECT_ID": "{{env `GCP_PROJECT_ID`}}",
"CIRRUS_BUILD_ID": "{{env `CIRRUS_BUILD_ID`}}", "BUILT_IMAGE_SUFFIX": "{{env `BUILT_IMAGE_SUFFIX`}}",
"GCE_SSH_USERNAME": "{{env `GCE_SSH_USERNAME`}}", "GCE_SSH_USERNAME": "{{env `GCE_SSH_USERNAME`}}",
"RHSM_COMMAND": "{{env `RHSM_COMMAND`}}" "RHSM_COMMAND": "{{env `RHSM_COMMAND`}}"
}, },
@ -29,7 +29,7 @@
"project_id": "{{user `GCP_PROJECT_ID`}}", "project_id": "{{user `GCP_PROJECT_ID`}}",
"zone": "us-central1-a", "zone": "us-central1-a",
"source_image": "{{user `RHEL_BASE_IMAGE`}}", "source_image": "{{user `RHEL_BASE_IMAGE`}}",
"image_name": "{{user `RHEL_BASE_IMAGE`}}-libpod-{{user `CIRRUS_BUILD_ID`}}", "image_name": "{{user `RHEL_BASE_IMAGE`}}{{user `BUILT_IMAGE_SUFFIX`}}",
"image_family": "{{user `RHEL_BASE_IMAGE`}}-libpod", "image_family": "{{user `RHEL_BASE_IMAGE`}}-libpod",
"service_account_email": "{{user `SERVICE_ACCOUNT`}}", "service_account_email": "{{user `SERVICE_ACCOUNT`}}",
"communicator": "ssh", "communicator": "ssh",
@ -41,7 +41,7 @@
"project_id": "{{user `GCP_PROJECT_ID`}}", "project_id": "{{user `GCP_PROJECT_ID`}}",
"zone": "us-central1-a", "zone": "us-central1-a",
"source_image": "{{user `CENTOS_BASE_IMAGE`}}", "source_image": "{{user `CENTOS_BASE_IMAGE`}}",
"image_name": "{{user `CENTOS_BASE_IMAGE`}}-libpod-{{user `CIRRUS_BUILD_ID`}}", "image_name": "{{user `CENTOS_BASE_IMAGE`}}{{user `BUILT_IMAGE_SUFFIX`}}",
"image_family": "{{user `CENTOS_BASE_IMAGE`}}-libpod", "image_family": "{{user `CENTOS_BASE_IMAGE`}}-libpod",
"service_account_email": "{{user `SERVICE_ACCOUNT`}}", "service_account_email": "{{user `SERVICE_ACCOUNT`}}",
"communicator": "ssh", "communicator": "ssh",
@ -53,7 +53,7 @@
"project_id": "{{user `GCP_PROJECT_ID`}}", "project_id": "{{user `GCP_PROJECT_ID`}}",
"zone": "us-central1-a", "zone": "us-central1-a",
"source_image": "{{user `FEDORA_BASE_IMAGE`}}", "source_image": "{{user `FEDORA_BASE_IMAGE`}}",
"image_name": "{{user `FEDORA_BASE_IMAGE`}}-libpod-{{user `CIRRUS_BUILD_ID`}}", "image_name": "{{user `FEDORA_BASE_IMAGE`}}{{user `BUILT_IMAGE_SUFFIX`}}",
"image_family": "{{user `FEDORA_BASE_IMAGE`}}-libpod", "image_family": "{{user `FEDORA_BASE_IMAGE`}}-libpod",
"service_account_email": "{{user `SERVICE_ACCOUNT`}}", "service_account_email": "{{user `SERVICE_ACCOUNT`}}",
"communicator": "ssh", "communicator": "ssh",
@ -65,7 +65,7 @@
"project_id": "{{user `GCP_PROJECT_ID`}}", "project_id": "{{user `GCP_PROJECT_ID`}}",
"zone": "us-central1-a", "zone": "us-central1-a",
"source_image": "{{user `UBUNTU_BASE_IMAGE`}}", "source_image": "{{user `UBUNTU_BASE_IMAGE`}}",
"image_name": "{{user `UBUNTU_BASE_IMAGE`}}-libpod-{{user `CIRRUS_BUILD_ID`}}", "image_name": "{{user `UBUNTU_BASE_IMAGE`}}{{user `BUILT_IMAGE_SUFFIX`}}",
"image_family": "{{user `UBUNTU_BASE_IMAGE`}}-libpod", "image_family": "{{user `UBUNTU_BASE_IMAGE`}}-libpod",
"service_account_email": "{{user `SERVICE_ACCOUNT`}}", "service_account_email": "{{user `SERVICE_ACCOUNT`}}",
"communicator": "ssh", "communicator": "ssh",

View File

@ -41,6 +41,7 @@ then
"export OS_RELEASE_ID=\"$(os_release_id)\"" \ "export OS_RELEASE_ID=\"$(os_release_id)\"" \
"export OS_RELEASE_VER=\"$(os_release_ver)\"" \ "export OS_RELEASE_VER=\"$(os_release_ver)\"" \
"export OS_REL_VER=\"${OS_RELEASE_ID}-${OS_RELEASE_VER}\"" \ "export OS_REL_VER=\"${OS_RELEASE_ID}-${OS_RELEASE_VER}\"" \
"export BUILT_IMAGE_SUFFIX=\"-$CIRRUS_REPO_NAME-${CIRRUS_CHANGE_IN_REPO:0:8}\"" \
"export GOPATH=\"/go\"" \ "export GOPATH=\"/go\"" \
'export PATH="$HOME/bin:$GOPATH/bin:/usr/local/bin:$PATH"' \ 'export PATH="$HOME/bin:$GOPATH/bin:/usr/local/bin:$PATH"' \
'export LD_LIBRARY_PATH="/usr/local/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"' 'export LD_LIBRARY_PATH="/usr/local/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"'