mirror of
https://github.com/containers/podman
synced 2024-10-20 09:13:46 +00:00
3e3afb942a
The release-task ***must*** always execute last, in order to guarantee a consistent cache of release archives from dependent tasks. It accomplishes this by verifying it's task-number matches one-less than the total number of tasks. Previous to this commit, a YAML anchor/alias was used to avoid duplication of the dependency list between 'success' and 'release' However, it's been observed that this opens the possibility for 'release' and 'success' tasks to race when running on a PR. Because YAML anchor/aliases cannot be used to modify lists, duplication is required to make 'release' actually depend upon 'success'. This duplication will introduce an additional maintenance burden. Though when adding a new task, it's already very easy to forget to update the 'depends_on' list. Assist both cases by the addition unit-tests to verify ``.cirrus.yml`` dependency contents and structure. Signed-off-by: Chris Evich <cevich@redhat.com>
575 lines
19 KiB
YAML
575 lines
19 KiB
YAML
---
|
|
|
|
# Only github users with write-access can define or use encrypted variables
|
|
# This credential represents a service account with access to manage both VMs
|
|
# and storage.
|
|
gcp_credentials: ENCRYPTED[885c6e4297dd8d6f67593c42b810353af0c505a7a670e2c6fd830c56e86bbb2debcc3c18f942d0d46ab36b63521061d4]
|
|
|
|
# Default timeout for each task
|
|
timeout_in: 120m
|
|
|
|
# Main collection of env. vars to set for all tasks and scripts.
|
|
env:
|
|
####
|
|
#### Global variables used for all tasks
|
|
####
|
|
# Name of the ultimate destination branch for this CI run, PR or post-merge.
|
|
DEST_BRANCH: "master"
|
|
# Overrides default location (/tmp/cirrus) for repo clone
|
|
GOPATH: "/var/tmp/go"
|
|
GOSRC: "/var/tmp/go/src/github.com/containers/libpod"
|
|
CIRRUS_WORKING_DIR: "/var/tmp/go/src/github.com/containers/libpod"
|
|
# The default is 'sh' if unspecified
|
|
CIRRUS_SHELL: "/bin/bash"
|
|
# Save a little typing (path relative to $CIRRUS_WORKING_DIR)
|
|
SCRIPT_BASE: "./contrib/cirrus"
|
|
# Command to prefix output lines with timing information
|
|
# (can't do inline awk script, Cirrus-CI or YAML mangles quoting)
|
|
TIMESTAMP: "awk --file ${CIRRUS_WORKING_DIR}/${SCRIPT_BASE}/timestamp.awk"
|
|
|
|
####
|
|
#### Cache-image names to test with
|
|
###
|
|
FEDORA_CACHE_IMAGE_NAME: "fedora-30-libpod-5479475851034624"
|
|
PRIOR_FEDORA_CACHE_IMAGE_NAME: "fedora-29-libpod-5479475851034624"
|
|
UBUNTU_CACHE_IMAGE_NAME: "ubuntu-18-libpod-5479475851034624"
|
|
|
|
####
|
|
#### Variables for composing new cache-images (used in PR testing) from
|
|
#### base-images (pre-existing in GCE)
|
|
####
|
|
BUILT_IMAGE_SUFFIX: "-${CIRRUS_REPO_NAME}-${CIRRUS_BUILD_ID}"
|
|
# Special image w/ nested-libvirt + tools for creating new cache and base images
|
|
IMAGE_BUILDER_CACHE_IMAGE_NAME: "image-builder-image-1541772081"
|
|
|
|
####
|
|
#### Default to NOT operating in any special-case testing mode
|
|
####
|
|
SPECIALMODE: "none" # don't do anything special
|
|
TEST_REMOTE_CLIENT: false # don't test remote client by default
|
|
|
|
####
|
|
#### Credentials and other secret-sauces, decrypted at runtime when authorized.
|
|
####
|
|
# Freenode IRC credentials for posting status messages
|
|
IRCID: ENCRYPTED[e87bba62a8e924dc70bdb2b66b16f6ab4a60d2870e6e5534ae9e2b0076f483c71c84091c655ca239101e6816c5ec0883]
|
|
# Needed to build GCE images, within a GCE VM
|
|
SERVICE_ACCOUNT: ENCRYPTED[99e9a0b1c23f8dd29e83dfdf164f064cfd17afd9b895ca3b5e4c41170bd4290a8366fe2ad8e7a210b9f751711d1d002a]
|
|
# User ID for cirrus to ssh into VMs
|
|
GCE_SSH_USERNAME: cirrus-ci
|
|
# Name where this repositories cloud resources are located
|
|
GCP_PROJECT_ID: ENCRYPTED[7c80e728e046b1c76147afd156a32c1c57d4a1ac1eab93b7e68e718c61ca8564fc61fef815952b8ae0a64e7034b8fe4f]
|
|
|
|
|
|
# Default VM to use unless set or modified by task
|
|
gce_instance:
|
|
image_project: "libpod-218412"
|
|
zone: "us-central1-a" # Required by Cirrus for the time being
|
|
cpu: 2
|
|
memory: "4Gb"
|
|
disk: 200
|
|
# A matrix could be used here, for now just one VM
|
|
image_name: "${FEDORA_CACHE_IMAGE_NAME}"
|
|
|
|
|
|
# Every *_task runs in parallel in separate VMsd. The name prefix only for reference
|
|
# in WebUI, and will be followed by matrix details. This task gates all others with
|
|
# quick format, lint, and unit tests on the standard platform.
|
|
gating_task:
|
|
|
|
env:
|
|
CIRRUS_WORKING_DIR: "/usr/src/libpod"
|
|
GOPATH: "/go"
|
|
GOSRC: "/go/src/github.com/containers/libpod"
|
|
|
|
# Runs within Cirrus's "community cluster"
|
|
container:
|
|
image: "quay.io/libpod/gate:latest"
|
|
cpu: 4
|
|
memory: 12
|
|
|
|
timeout_in: 20m
|
|
|
|
networking_script: # Don't bother going further if something is down
|
|
- 'while read host port; do nc -zv -w 13 $host $port || exit 1; done < ${CIRRUS_WORKING_DIR}/${SCRIPT_BASE}/required_host_ports.txt'
|
|
|
|
gate_script:
|
|
# N/B: entrypoint.sh resets $GOSRC (same as make clean)
|
|
- '/usr/local/bin/entrypoint.sh install.tools |& ${TIMESTAMP}'
|
|
- '/usr/local/bin/entrypoint.sh validate |& ${TIMESTAMP}'
|
|
- '/usr/local/bin/entrypoint.sh golangci-lint |& ${TIMESTAMP}'
|
|
|
|
# This task builds Podman with different buildtags to ensure the build does
|
|
# not break. It also verifies all sub-commands have man pages.
|
|
build_script:
|
|
- '/usr/local/bin/entrypoint.sh podman |& ${TIMESTAMP}'
|
|
- 'cd $GOSRC && ./hack/podman-commands.sh |& ${TIMESTAMP}'
|
|
# N/B: need 'clean' so some commited files are re-generated.
|
|
- '/usr/local/bin/entrypoint.sh clean podman-remote |& ${TIMESTAMP}'
|
|
- '/usr/local/bin/entrypoint.sh clean podman BUILDTAGS="exclude_graphdriver_devicemapper selinux seccomp" |& ${TIMESTAMP}'
|
|
- '/usr/local/bin/entrypoint.sh podman-remote-darwin |& ${TIMESTAMP}'
|
|
- '/usr/local/bin/entrypoint.sh podman-remote-windows |& ${TIMESTAMP}'
|
|
|
|
# Verify expected bash environment (-o pipefail)
|
|
pipefail_enabledscript: 'if /bin/false | /bin/true; then echo "pipefail fault" && exit 72; fi'
|
|
|
|
on_failure:
|
|
failed_branch_script: '$CIRRUS_WORKING_DIR/$SCRIPT_BASE/notice_branch_failure.sh'
|
|
|
|
|
|
# This task runs `make vendor` followed by ./hack/tree_status.sh to check
|
|
# whether the git tree is clean. The reasoning for that is to make sure
|
|
# that the vendor.conf, the code and the vendored packages in ./vendor are
|
|
# in sync at all times.
|
|
vendor_task:
|
|
|
|
only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\*\*\*\s*CIRRUS:\s*TEST\s*IMAGES\s*\*\*\*.*'
|
|
|
|
depends_on:
|
|
- "gating"
|
|
|
|
env:
|
|
CIRRUS_WORKING_DIR: "/usr/src/libpod"
|
|
GOPATH: "/go"
|
|
GOSRC: "/go/src/github.com/containers/libpod"
|
|
|
|
# Runs within Cirrus's "community cluster"
|
|
container:
|
|
image: "quay.io/libpod/gate:latest"
|
|
cpu: 4
|
|
memory: 12
|
|
|
|
timeout_in: 30m
|
|
|
|
vendor_script:
|
|
- '/usr/local/bin/entrypoint.sh vendor |& ${TIMESTAMP}'
|
|
- 'cd ${GOSRC} && ./hack/tree_status.sh |& ${TIMESTAMP}'
|
|
|
|
on_failure:
|
|
failed_branch_script: '$CIRRUS_WORKING_DIR/$SCRIPT_BASE/notice_branch_failure.sh |& ${TIMESTAMP}'
|
|
|
|
|
|
# This task runs `make varlink_api_generate` followed by ./hack/tree_status.sh to check
|
|
# whether the git tree is clean.
|
|
varlink_api_task:
|
|
|
|
only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\*\*\*\s*CIRRUS:\s*TEST\s*IMAGES\s*\*\*\*.*'
|
|
|
|
depends_on:
|
|
- "gating"
|
|
|
|
env:
|
|
CIRRUS_WORKING_DIR: "/usr/src/libpod"
|
|
GOPATH: "/go"
|
|
GOSRC: "/go/src/github.com/containers/libpod"
|
|
# Used by tree_status.sh
|
|
SUGGESTION: 'remove API.md, then "make varlink_api_generate" and commit changes.'
|
|
|
|
# Runs within Cirrus's "community cluster"
|
|
container:
|
|
image: "quay.io/libpod/gate:latest"
|
|
cpu: 4
|
|
memory: 12
|
|
|
|
timeout_in: 10m
|
|
|
|
api_md_script:
|
|
- '/usr/local/bin/entrypoint.sh varlink_api_generate |& ${TIMESTAMP}'
|
|
- 'cd ${GOSRC} && ./hack/tree_status.sh |& ${TIMESTAMP}'
|
|
|
|
on_failure:
|
|
failed_branch_script: '$CIRRUS_WORKING_DIR/$SCRIPT_BASE/notice_branch_failure.sh'
|
|
|
|
|
|
build_each_commit_task:
|
|
|
|
depends_on:
|
|
- "gating"
|
|
- "vendor"
|
|
- "varlink_api"
|
|
|
|
only_if: $CIRRUS_BRANCH != $DEST_BRANCH &&
|
|
$CIRRUS_CHANGE_MESSAGE !=~ '.*\*\*\*\s*CIRRUS:\s*TEST\s*IMAGES\s*\*\*\*.*'
|
|
|
|
gce_instance:
|
|
image_project: "libpod-218412"
|
|
zone: "us-central1-a" # Required by Cirrus for the time being
|
|
cpu: 8
|
|
memory: "8Gb"
|
|
disk: 200
|
|
image_name: "${FEDORA_CACHE_IMAGE_NAME}"
|
|
|
|
timeout_in: 30m
|
|
|
|
setup_environment_script: '$SCRIPT_BASE/setup_environment.sh |& ${TIMESTAMP}'
|
|
build_each_commit_script:
|
|
# set -x by default, no need to spew contents of lib.sh
|
|
- 'source $SCRIPT_BASE/lib.sh &> /dev/null'
|
|
- 'git fetch --depth 50 origin $DEST_BRANCH |& ${TIMESTAMP}'
|
|
- 'make build-all-new-commits GIT_BASE_BRANCH=origin/$DEST_BRANCH |& ${TIMESTAMP}'
|
|
|
|
on_failure:
|
|
failed_branch_script: '$CIRRUS_WORKING_DIR/$SCRIPT_BASE/notice_branch_failure.sh'
|
|
|
|
|
|
build_without_cgo_task:
|
|
|
|
depends_on:
|
|
- "gating"
|
|
- "vendor"
|
|
- "varlink_api"
|
|
|
|
only_if: $CIRRUS_BRANCH != $DEST_BRANCH &&
|
|
$CIRRUS_CHANGE_MESSAGE !=~ '.*\*\*\*\s*CIRRUS:\s*TEST\s*IMAGES\s*\*\*\*.*'
|
|
|
|
gce_instance:
|
|
image_project: "libpod-218412"
|
|
zone: "us-central1-a" # Required by Cirrus for the time being
|
|
cpu: 8
|
|
memory: "8Gb"
|
|
disk: 200
|
|
image_name: "${FEDORA_CACHE_IMAGE_NAME}"
|
|
|
|
timeout_in: 30m
|
|
|
|
setup_environment_script: '$SCRIPT_BASE/setup_environment.sh |& ${TIMESTAMP}'
|
|
build_without_cgo_script:
|
|
- 'source $SCRIPT_BASE/lib.sh'
|
|
- 'make build-no-cgo'
|
|
|
|
on_failure:
|
|
failed_branch_script: '$CIRRUS_WORKING_DIR/$SCRIPT_BASE/notice_branch_failure.sh'
|
|
|
|
|
|
# Update metadata on VM images referenced by this repository state
|
|
meta_task:
|
|
|
|
depends_on:
|
|
- "gating"
|
|
- "vendor"
|
|
- "varlink_api"
|
|
- "build_each_commit"
|
|
- "build_without_cgo"
|
|
|
|
container:
|
|
image: "quay.io/libpod/imgts:latest" # see contrib/imgts
|
|
cpu: 1
|
|
memory: 1
|
|
|
|
env: &meta_env_vars
|
|
# Space-separated list of images used by this repository state
|
|
IMGNAMES: >-
|
|
${FEDORA_CACHE_IMAGE_NAME}
|
|
${PRIOR_FEDORA_CACHE_IMAGE_NAME}
|
|
${UBUNTU_CACHE_IMAGE_NAME}
|
|
${IMAGE_BUILDER_CACHE_IMAGE_NAME}
|
|
BUILDID: "${CIRRUS_BUILD_ID}"
|
|
REPOREF: "${CIRRUS_CHANGE_IN_REPO}"
|
|
GCPJSON: ENCRYPTED[950d9c64ad78f7b1f0c7e499b42dc058d2b23aa67e38b315e68f557f2aba0bf83068d4734f7b1e1bdd22deabe99629df]
|
|
GCPNAME: ENCRYPTED[b05d469a0dba8cb479cb00cc7c1f6747c91d17622fba260a986b976aa6c817d4077eacffd4613d6d5f23afc4084fab1d]
|
|
GCPPROJECT: ENCRYPTED[7c80e728e046b1c76147afd156a32c1c57d4a1ac1eab93b7e68e718c61ca8564fc61fef815952b8ae0a64e7034b8fe4f]
|
|
|
|
timeout_in: 10m
|
|
|
|
# Cirrus-CI ignores entrypoint defined in image
|
|
script: '/usr/local/bin/entrypoint.sh |& ${TIMESTAMP}'
|
|
|
|
|
|
# Remove old and disused images based on labels set by meta_task
|
|
image_prune_task:
|
|
|
|
# Do not run this frequently
|
|
only_if: $CIRRUS_BRANCH == 'master'
|
|
|
|
depends_on:
|
|
- "meta"
|
|
|
|
container:
|
|
image: "quay.io/cevich/imgprune:latest" # see contrib/imgprune
|
|
cpu: 1
|
|
memory: 1
|
|
|
|
env:
|
|
<<: *meta_env_vars
|
|
GCPJSON: ENCRYPTED[4c11d8e09c904c30fc70eecb95c73dec0ddf19976f9b981a0f80f3f6599e8f990bcef93c253ac0277f200850d98528e7]
|
|
GCPNAME: ENCRYPTED[7f54557ba6e5a437f11283a53e71baec9ca546f48a9835538cc54d297f79968eb1337d4596a1025b14f9d1c5723fbd29]
|
|
|
|
timeout_in: 10m
|
|
|
|
script: '/usr/local/bin/entrypoint.sh |& ${TIMESTAMP}'
|
|
|
|
|
|
# This task does the unit and integration testing for every platform
|
|
testing_task:
|
|
|
|
depends_on:
|
|
- "gating"
|
|
- "vendor"
|
|
- "varlink_api"
|
|
- "build_each_commit"
|
|
- "build_without_cgo"
|
|
|
|
# Only test build cache-images, if that's what's requested
|
|
only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\*\*\*\s*CIRRUS:\s*TEST\s*IMAGES\s*\*\*\*.*'
|
|
|
|
gce_instance:
|
|
matrix:
|
|
# Images are generated separately, from build_images_task (below)
|
|
image_name: "${FEDORA_CACHE_IMAGE_NAME}"
|
|
image_name: "${PRIOR_FEDORA_CACHE_IMAGE_NAME}"
|
|
image_name: "${UBUNTU_CACHE_IMAGE_NAME}"
|
|
|
|
timeout_in: 120m
|
|
|
|
env:
|
|
matrix:
|
|
TEST_REMOTE_CLIENT: true
|
|
TEST_REMOTE_CLIENT: false
|
|
|
|
setup_environment_script: '$SCRIPT_BASE/setup_environment.sh |& ${TIMESTAMP}'
|
|
unit_test_script: '$SCRIPT_BASE/unit_test.sh |& ${TIMESTAMP}'
|
|
integration_test_script: '$SCRIPT_BASE/integration_test.sh |& ${TIMESTAMP}'
|
|
system_test_script: '$SCRIPT_BASE/system_test.sh |& ${TIMESTAMP}'
|
|
cache_release_archive_script: >-
|
|
[[ "$TEST_REMOTE_CLIENT" == "false" ]] || \
|
|
$SCRIPT_BASE/cache_release_archive.sh |& ${TIMESTAMP}
|
|
|
|
on_failure:
|
|
failed_branch_script: '$CIRRUS_WORKING_DIR/$SCRIPT_BASE/notice_branch_failure.sh'
|
|
|
|
always: &standardlogs
|
|
ginkgo_node_logs_script: '$SCRIPT_BASE/logcollector.sh ginkgo'
|
|
df_script: '$SCRIPT_BASE/logcollector.sh df'
|
|
audit_log_script: '$SCRIPT_BASE/logcollector.sh audit'
|
|
journal_script: '$SCRIPT_BASE/logcollector.sh journal'
|
|
|
|
|
|
# This task executes tests under unique environments/conditions
|
|
special_testing_rootless_task:
|
|
|
|
depends_on:
|
|
- "gating"
|
|
- "varlink_api"
|
|
- "vendor"
|
|
- "build_each_commit"
|
|
- "build_without_cgo"
|
|
|
|
only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\*\*\*\s*CIRRUS:\s*TEST\s*IMAGES\s*\*\*\*.*'
|
|
|
|
env:
|
|
SPECIALMODE: 'rootless' # See docs
|
|
|
|
matrix:
|
|
TEST_REMOTE_CLIENT: true
|
|
TEST_REMOTE_CLIENT: false
|
|
|
|
timeout_in: 60m
|
|
|
|
setup_environment_script: '$SCRIPT_BASE/setup_environment.sh |& ${TIMESTAMP}'
|
|
integration_test_script: '$SCRIPT_BASE/integration_test.sh |& ${TIMESTAMP}'
|
|
system_test_script: '$SCRIPT_BASE/system_test.sh |& ${TIMESTAMP}'
|
|
|
|
on_failure:
|
|
failed_branch_script: '$CIRRUS_WORKING_DIR/$SCRIPT_BASE/notice_branch_failure.sh'
|
|
|
|
always:
|
|
<<: *standardlogs
|
|
|
|
|
|
special_testing_in_podman_task:
|
|
|
|
depends_on:
|
|
- "gating"
|
|
- "varlink_api"
|
|
- "vendor"
|
|
- "build_each_commit"
|
|
- "build_without_cgo"
|
|
|
|
only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\*\*\*\s*CIRRUS:\s*TEST\s*IMAGES\s*\*\*\*.*'
|
|
|
|
env:
|
|
SPECIALMODE: 'in_podman' # See docs
|
|
|
|
timeout_in: 60m
|
|
|
|
setup_environment_script: '$SCRIPT_BASE/setup_environment.sh |& ${TIMESTAMP}'
|
|
integration_test_script: '$SCRIPT_BASE/integration_test.sh |& ${TIMESTAMP}'
|
|
|
|
on_failure:
|
|
failed_branch_script: '$CIRRUS_WORKING_DIR/$SCRIPT_BASE/notice_branch_failure.sh'
|
|
|
|
always:
|
|
<<: *standardlogs
|
|
|
|
|
|
special_testing_cross_task:
|
|
|
|
depends_on:
|
|
- "gating"
|
|
- "varlink_api"
|
|
- "vendor"
|
|
|
|
only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\*\*\*\s*CIRRUS:\s*TEST\s*IMAGES\s*\*\*\*.*'
|
|
|
|
env:
|
|
matrix:
|
|
SPECIALMODE: 'windows' # See docs
|
|
SPECIALMODE: 'darwin'
|
|
|
|
timeout_in: 20m
|
|
|
|
setup_environment_script: '$SCRIPT_BASE/setup_environment.sh |& ${TIMESTAMP}'
|
|
cache_release_archive_script: '$SCRIPT_BASE/cache_release_archive.sh |& ${TIMESTAMP}'
|
|
|
|
on_failure:
|
|
failed_branch_script: '$CIRRUS_WORKING_DIR/$SCRIPT_BASE/notice_branch_failure.sh'
|
|
|
|
|
|
# Test building of new cache-images for future PR testing, in this PR.
|
|
test_build_cache_images_task:
|
|
|
|
only_if: >-
|
|
$CIRRUS_BRANCH != $DEST_BRANCH &&
|
|
$CIRRUS_CHANGE_MESSAGE =~ '.*\*\*\*\s*CIRRUS:\s*TEST\s*IMAGES\s*\*\*\*.*' &&
|
|
$CIRRUS_CHANGE_MESSAGE !=~ '.*\*\*\*\s*CIRRUS:\s*SYSTEM\s*TEST\s*\*\*\*.*'
|
|
|
|
depends_on:
|
|
- "gating"
|
|
|
|
# VMs created by packer are not cleaned up by cirrus, must allow task to complete
|
|
auto_cancellation: $CI != "true"
|
|
|
|
gce_instance:
|
|
image_project: "libpod-218412"
|
|
zone: "us-central1-a"
|
|
cpu: 4
|
|
memory: "4Gb"
|
|
disk: 200
|
|
image_name: "${IMAGE_BUILDER_CACHE_IMAGE_NAME}"
|
|
scopes: # required for image building
|
|
- compute
|
|
- devstorage.full_control
|
|
|
|
environment_script: '$SCRIPT_BASE/setup_environment.sh |& ${TIMESTAMP}'
|
|
build_vm_images_script: '$SCRIPT_BASE/build_vm_images.sh |& ${TIMESTAMP}'
|
|
df_script: '${DFCMD}'
|
|
journalctl_b_script: 'journalctl -b'
|
|
|
|
on_failure:
|
|
failed_df_script: '${DFCMD}'
|
|
failed_journalctl_b_script: 'journalctl -b || echo "Uh oh, journalctl -b failed"'
|
|
|
|
|
|
# Test building of new cache-images for future PR testing, in this PR.
|
|
verify_test_built_images_task:
|
|
|
|
only_if: >-
|
|
$CIRRUS_BRANCH != $DEST_BRANCH &&
|
|
$CIRRUS_CHANGE_MESSAGE =~ '.*\*\*\*\s*CIRRUS:\s*TEST\s*IMAGES\s*\*\*\*.*' &&
|
|
$CIRRUS_CHANGE_MESSAGE !=~ '.*\*\*\*\s*CIRRUS:\s*SYSTEM\s*TEST\s*\*\*\*.*'
|
|
|
|
|
|
depends_on:
|
|
- "gating"
|
|
- "test_build_cache_images"
|
|
|
|
gce_instance:
|
|
matrix:
|
|
# Images are generated separately, from build_images_task (below)
|
|
image_name: "fedora-29${BUILT_IMAGE_SUFFIX}"
|
|
image_name: "fedora-30${BUILT_IMAGE_SUFFIX}"
|
|
image_name: "ubuntu-18${BUILT_IMAGE_SUFFIX}"
|
|
|
|
env:
|
|
matrix:
|
|
TEST_REMOTE_CLIENT: true
|
|
TEST_REMOTE_CLIENT: false
|
|
|
|
# Note: A truncated form of normal testing. It only needs to confirm new images
|
|
# "probably" work. A full round of testing will happen again after $*_CACHE_IMAGE_NAME
|
|
# are updated in this or another PR (w/o '***CIRRUS: TEST IMAGES***').
|
|
environment_script: '$SCRIPT_BASE/setup_environment.sh |& ${TIMESTAMP}'
|
|
check_image_script: '$SCRIPT_BASE/check_image.sh'
|
|
integration_test_script: '$SCRIPT_BASE/integration_test.sh |& ${TIMESTAMP}'
|
|
system_test_script: '$SCRIPT_BASE/system_test.sh |& ${TIMESTAMP}'
|
|
|
|
always:
|
|
<<: *standardlogs
|
|
|
|
# Post message to IRC if everything passed PR testing
|
|
success_task:
|
|
|
|
# This task is a required-pass in github settings,
|
|
# it blocks PRs from merging if a depends_on task fails
|
|
only_if: $CIRRUS_BRANCH != $DEST_BRANCH
|
|
|
|
# ignores any dependent task conditions, include everything except 'release'
|
|
depends_on:
|
|
- "gating"
|
|
- "vendor"
|
|
- "varlink_api"
|
|
- "build_each_commit"
|
|
- "build_without_cgo"
|
|
- "meta"
|
|
- "image_prune"
|
|
- "testing"
|
|
- "special_testing_rootless"
|
|
- "special_testing_in_podman"
|
|
- "special_testing_cross"
|
|
- "test_build_cache_images"
|
|
- "verify_test_built_images"
|
|
|
|
env:
|
|
CIRRUS_WORKING_DIR: "/usr/src/libpod"
|
|
GOPATH: "/go"
|
|
GOSRC: "/go/src/github.com/containers/libpod"
|
|
|
|
container:
|
|
image: "quay.io/libpod/gate:latest"
|
|
cpu: 1
|
|
memory: 1
|
|
|
|
success_script: '$CIRRUS_WORKING_DIR/$SCRIPT_BASE/success.sh |& ${TIMESTAMP}'
|
|
|
|
|
|
release_task:
|
|
|
|
# Never do this when building images
|
|
only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\*\*\*\s*CIRRUS:\s*TEST\s*IMAGES\s*\*\*\*.*'
|
|
|
|
# TODO: Uncomment both to not affect pass/fail status of entire job?
|
|
# allow_failures: $CI == "true"
|
|
# skip_notifications: $CI == "true"
|
|
|
|
# Must include everything (YAML anchor/alias cannot be used here)
|
|
depends_on:
|
|
- "gating"
|
|
- "vendor"
|
|
- "varlink_api"
|
|
- "build_each_commit"
|
|
- "build_without_cgo"
|
|
- "meta"
|
|
- "image_prune"
|
|
- "testing"
|
|
- "special_testing_rootless"
|
|
- "special_testing_in_podman"
|
|
- "special_testing_cross"
|
|
- "test_build_cache_images"
|
|
- "verify_test_built_images"
|
|
- "success"
|
|
|
|
gce_instance:
|
|
image_name: "${IMAGE_BUILDER_CACHE_IMAGE_NAME}"
|
|
|
|
timeout_in: 30m
|
|
|
|
env:
|
|
GCPJSON: ENCRYPTED[789d8f7e9a5972ce350fd8e60f1032ccbf4a35c3938b604774b711aad280e12c21faf10e25af1e0ba33597ffb9e39e46]
|
|
GCPNAME: ENCRYPTED[417d50488a4bd197bcc925ba6574de5823b97e68db1a17e3a5fde4bcf26576987345e75f8d9ea1c15a156b4612c072a1]
|
|
GCPROJECT: ENCRYPTED[7c80e728e046b1c76147afd156a32c1c57d4a1ac1eab93b7e68e718c61ca8564fc61fef815952b8ae0a64e7034b8fe4f]
|
|
|
|
uncache_release_archives_script: '$SCRIPT_BASE/uncache_release_archives.sh |& ${TIMESTAMP}'
|
|
|
|
on_failure:
|
|
failed_branch_script: '$CIRRUS_WORKING_DIR/$SCRIPT_BASE/notice_branch_failure.sh'
|