mirror of
https://github.com/containers/podman.git
synced 2025-06-20 17:13:43 +08:00
Cirrus: Reveal magic, parallel system-testing
Previously, several magic strings were in place to affect cirrus-ci operations. Two were buried within scripts. One to optionally execute system-tests within a PR. Another to avoid re-building cache-images upon every merge. Move these magic strings out into the open, buy locating their logic up-front in the ``.cirrus.yml`` file. This improves readability and reduces surprise/astonishment at runtime. Signed-off-by: Chris Evich <cevich@redhat.com>
This commit is contained in:
51
.cirrus.yml
51
.cirrus.yml
@ -63,24 +63,55 @@ full_vm_testing_task:
|
||||
|
||||
integration_test_script: $SCRIPT_BASE/integration_test.sh
|
||||
|
||||
optional_system_test_script: $SCRIPT_BASE/optional_system_test.sh
|
||||
|
||||
success_script: $SCRIPT_BASE/success.sh
|
||||
|
||||
|
||||
# This task build new images for future PR testing, but only after a PR merge.
|
||||
# These images save needing to install/setup the same environment to test every
|
||||
# PR. The 'active' image for testing is selected by the 'image_name' items in
|
||||
# task above. Currently this requires manually updating them, but this could
|
||||
# be automated (see comment at end).
|
||||
# Because system tests are stored within the repository, it is sometimes
|
||||
# necessary to execute them within a PR to validate changes.
|
||||
|
||||
optional_system_testing_task:
|
||||
|
||||
# Only run system tests in PRs (not on merge) if magic string is present
|
||||
# in the PR description. Post-merge system testing is assumed to happen
|
||||
# later from OS distribution's build systems.
|
||||
only_if: >-
|
||||
$CIRRUS_BRANCH != 'master' &&
|
||||
$CIRRUS_CHANGE_MESSAGE =~ '\*\*\*\s*CIRRUS:\s*SYSTEM\s*TEST\s*\*\*\*'
|
||||
|
||||
gce_instance:
|
||||
matrix:
|
||||
image_name: "ubuntu-1804-bionic-v20180911-libpod-63a86a18"
|
||||
# TODO: Make these work (also build_images_task below)
|
||||
#image_name: "rhel-server-ec2-7-5-165-1-libpod-fce09afe"
|
||||
#image_name: "centos-7-v20180911-libpod-fce09afe"
|
||||
#image_name: "fedora-cloud-base-28-1-1-7-libpod-fce09afe"
|
||||
|
||||
timeout_in: 60m
|
||||
|
||||
setup_environment_script: $SCRIPT_BASE/setup_environment.sh
|
||||
verify_source_script: $SCRIPT_BASE/verify_source.sh
|
||||
unit_test_script: $SCRIPT_BASE/unit_test.sh
|
||||
integration_test_script: $SCRIPT_BASE/integration_test.sh
|
||||
system_test_script: $SCRIPT_BASE/optional_system_test.sh
|
||||
success_script: $SCRIPT_BASE/success.sh
|
||||
|
||||
|
||||
# This task builds new cache-images for future PR testing. These images save
|
||||
# time installing/setting up the environment while an engineer is waiting.
|
||||
# The 'active' cache-images for full_vm_testing are selected by the
|
||||
# 'image_name' keys. Updating those items requires manually modification,
|
||||
# but this could be automated (see comment at end of build_vm_images_task).
|
||||
|
||||
build_vm_images_task:
|
||||
# Only produce new images after a PR merge
|
||||
only_if: $CIRRUS_BRANCH == 'master'
|
||||
# Only produce new cache-images after a PR merge, and if a magic string
|
||||
# is present in the most recent commit-message.
|
||||
only_if: >-
|
||||
$CIRRUS_BRANCH == 'master' &&
|
||||
$CIRRUS_CHANGE_MESSAGE =~ '\*\*\*\s*CIRRUS:\s*REBUILD\s*IMAGES\s*\*\*\*'
|
||||
|
||||
# Require tests to pass first.
|
||||
depends_on:
|
||||
- test # i.e. 'test_task'
|
||||
- full_vm_testing # i.e. 'full_vm_testing_task'
|
||||
|
||||
env:
|
||||
# CSV of packer builder names to enable (see $PACKER_BASE/libpod_images.json)
|
||||
|
@ -22,8 +22,6 @@ SCRIPT_BASE $SCRIPT_BASE
|
||||
PACKER_BASE $PACKER_BASE
|
||||
"
|
||||
|
||||
require_regex '\*\*\*\s*CIRRUS:\s*REBUILD\s*IMAGES\s*\*\*\*' 'Not re-building VM images'
|
||||
|
||||
show_env_vars
|
||||
|
||||
# Everything here is running on the 'image-builder-image' GCE image
|
||||
|
@ -120,23 +120,6 @@ cdsudo() {
|
||||
sudo --preserve-env=GOPATH --non-interactive bash -c "$CMD"
|
||||
}
|
||||
|
||||
# Skip a build if $1 does not match in the PR Title/Description with message $2
|
||||
require_regex() {
|
||||
req_env_var "
|
||||
CIRRUS_CHANGE_MESSAGE $CIRRUS_CHANGE_MESSAGE
|
||||
1 $1
|
||||
2 $2
|
||||
"
|
||||
regex="$1"
|
||||
msg="$2"
|
||||
if ! echo "$CIRRUS_CHANGE_MESSAGE" | egrep -q "$regex"
|
||||
then
|
||||
echo "***** The PR Title/Description did not match the regular expression: $MAGIC_RE"
|
||||
echo "***** $msg"
|
||||
exit 0
|
||||
fi
|
||||
}
|
||||
|
||||
# Helper/wrapper script to only show stderr/stdout on non-zero exit
|
||||
install_ooe() {
|
||||
req_env_var "SCRIPT_BASE $SCRIPT_BASE"
|
||||
|
@ -3,14 +3,6 @@
|
||||
set -e
|
||||
source $(dirname $0)/lib.sh
|
||||
|
||||
MAGIC_RE='\*\*\*\s*CIRRUS:\s*SYSTEM\s*TEST\s*\*\*\*'
|
||||
if ! echo "$CIRRUS_CHANGE_MESSAGE" | egrep -q "$MAGIC_RE"
|
||||
then
|
||||
echo "Skipping system-testing because PR title or description"
|
||||
echo "does not match regular expression: $MAGIC_RE"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
req_env_var "
|
||||
GOSRC $GOSRC
|
||||
OS_RELEASE_ID $OS_RELEASE_ID
|
||||
|
Reference in New Issue
Block a user