aboutsummaryrefslogtreecommitdiff
path: root/.cirrus.yml
diff options
context:
space:
mode:
Diffstat (limited to '.cirrus.yml')
-rw-r--r--.cirrus.yml162
1 files changed, 144 insertions, 18 deletions
diff --git a/.cirrus.yml b/.cirrus.yml
index b585c41f8..9daf33ba2 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -28,12 +28,14 @@ env:
#### Comment out fedora-35 for podman 4.x branches.
####
FEDORA_NAME: "fedora-36"
+ FEDORA_AARCH64_NAME: "${FEDORA_NAME}-aarch64"
#PRIOR_FEDORA_NAME: "fedora-35"
- UBUNTU_NAME: "ubuntu-2110"
+ UBUNTU_NAME: "ubuntu-2204"
# Image identifiers
- IMAGE_SUFFIX: "c6211193021923328"
- FEDORA_AMI_ID: "ami-06a41d8a81ab56afa"
+ IMAGE_SUFFIX: "c5495735033528320"
+ FEDORA_AMI_ID: "ami-0df5df528071f1052" # matches c5495735033528320
+ FEDORA_AARCH64_AMI_ID: "ami-02ee8b3a782a78791" # matches c5495735033528320
# Complete image names
FEDORA_CACHE_IMAGE_NAME: "fedora-${IMAGE_SUFFIX}"
#PRIOR_FEDORA_CACHE_IMAGE_NAME: "prior-fedora-${IMAGE_SUFFIX}"
@@ -139,8 +141,8 @@ automation_task:
always: *runner_stats
-# N/B: This task is critical. It builds all binaries for all supported
-# OS platforms and versions. On success, the contents of the repository
+# N/B: The two following tasks are critical. They build all binaries for all supported
+# OS platforms and versions on x86_64 and aarch64. On success, the contents of the repository
# are preserved as an artifact. This saves most subsequent tasks about
# 3 minutes of otherwise duplicative effort. It also ensures that the
# exact same binaries used throughout CI testing, are available for
@@ -169,17 +171,16 @@ build_task:
CTR_FQIN: ${FEDORA_CONTAINER_FQIN}
# ID for re-use of build output
CI_DESIRED_RUNTIME: crun
- #- env: &priorfedora_envvars
- #DISTRO_NV: ${PRIOR_FEDORA_NAME}
- #VM_IMAGE_NAME: ${PRIOR_FEDORA_CACHE_IMAGE_NAME}
- #CTR_FQIN: ${PRIOR_FEDORA_CONTAINER_FQIN}
- #CI_DESIRED_RUNTIME: crun
+ #- env: &priorfedora_envvars
+ #DISTRO_NV: ${PRIOR_FEDORA_NAME}
+ #VM_IMAGE_NAME: ${PRIOR_FEDORA_CACHE_IMAGE_NAME}
+ #CTR_FQIN: ${PRIOR_FEDORA_CONTAINER_FQIN}
+ #CI_DESIRED_RUNTIME: crun
- env: &ubuntu_envvars
DISTRO_NV: ${UBUNTU_NAME}
VM_IMAGE_NAME: ${UBUNTU_CACHE_IMAGE_NAME}
CTR_FQIN: ${UBUNTU_CONTAINER_FQIN}
- # FIXME 2022-07-12: change to runc once #14833 is fixed!
- CI_DESIRED_RUNTIME: crun
+ CI_DESIRED_RUNTIME: runc
env:
TEST_FLAVOR: build
clone_script: *full_clone
@@ -195,6 +196,36 @@ build_task:
always: *runner_stats
+build_aarch64_task:
+ alias: 'build_aarch64'
+ name: 'Build for $DISTRO_NV'
+ # Multiarch doesn't depend on buildability in this automation context
+ # Docs: ./contrib/cirrus/CIModes.md
+ only_if: "$CIRRUS_CRON != 'multiarch'"
+ ec2_instance: &standard_build_ec2_aarch64
+ image: ${VM_IMAGE_NAME}
+ type: t4g.xlarge
+ region: us-east-1
+ architecture: arm64 # CAUTION: This has to be "arm64", not "aarch64".
+ env: &stdenvars_aarch64
+ DISTRO_NV: ${FEDORA_AARCH64_NAME}
+ VM_IMAGE_NAME: ${FEDORA_AARCH64_AMI_ID}
+ CTR_FQIN: ${FEDORA_CONTAINER_FQIN}
+ CI_DESIRED_RUNTIME: crun
+ TEST_FLAVOR: build
+ clone_script: *full_clone
+ setup_script: *setup
+ main_script: *main
+ # Cirrus-CI is very slow uploading one file at time, and the repo contains
+ # thousands of files. Speed this up by archiving into tarball first.
+ repo_prep_script: &repo_prep_aarch64 >-
+ tar cjf /tmp/repo.tbz -C $GOSRC . && mv /tmp/repo.tbz $GOSRC/
+ repo_artifacts: &repo_artifacts_aarch64
+ path: ./repo.tbz
+ type: application/octet-stream
+ always: *runner_stats
+
+
# Confirm the result of building on at least one platform appears sane.
# This confirms the binaries can be executed, checks --help vs docs, and
# other essential post-build validation checks.
@@ -219,6 +250,7 @@ validate_task:
memory: "16Gb"
env:
<<: *stdenvars
+ DISTRO_NV: ${FEDORA_NAME}
TEST_FLAVOR: validate
# N/B: This script depends on ${DISTRO_NV} being defined for the task.
clone_script: &get_gosrc |
@@ -231,6 +263,40 @@ validate_task:
always: *runner_stats
+# Confirm the result of building on at least one platform appears sane.
+# This confirms the binaries can be executed, checks --help vs docs, and
+# other essential post-build validation checks.
+validate_aarch64_task:
+ name: "Validate $DISTRO_NV Build"
+ alias: validate_aarch64
+ # This task is primarily intended to catch human-errors early on, in a
+ # PR. Skip it for branch-push, branch-create, and tag-push to improve
+ # automation reliability/speed in those contexts. Any missed errors due
+ # to nonsequential PR merging practices, will be caught on a future PR,
+ # build or test task failures.
+ # Docs: ./contrib/cirrus/CIModes.md
+ only_if: *is_pr
+ depends_on:
+ - ext_svc_check
+ - automation
+ - build_aarch64
+ # golangci-lint is a very, very hungry beast.
+ ec2_instance: *standard_build_ec2_aarch64
+ env:
+ <<: *stdenvars_aarch64
+ TEST_FLAVOR: validate
+ DISTRO_NV: ${FEDORA_AARCH64_NAME}
+ # N/B: This script depends on ${DISTRO_NV} being defined for the task.
+ clone_script: &get_gosrc_aarch64 |
+ cd /tmp
+ echo "$ARTCURL/build_aarch64/repo/repo.tbz"
+ time $ARTCURL/build_aarch64/repo/repo.tbz
+ time tar xjf /tmp/repo.tbz -C $GOSRC
+ setup_script: *setup
+ main_script: *main
+ always: *runner_stats
+
+
# Exercise the "libpod" API with a small set of common
# operations to ensure they are functional.
bindings_task:
@@ -318,6 +384,28 @@ consistency_task:
always: *runner_stats
+# Check that all included go modules from other sources match
+# what is expected in `vendor/modules.txt` vs `go.mod`. Also
+# make sure that the generated bindings in pkg/bindings/...
+# are in sync with the code.
+consistency_aarch64_task:
+ name: "Test Code Consistency (aarch64)"
+ alias: consistency_aarch64
+ # Docs: ./contrib/cirrus/CIModes.md
+ only_if: *is_pr
+ depends_on:
+ - build_aarch64
+ ec2_instance: *standard_build_ec2_aarch64
+ env:
+ <<: *stdenvars_aarch64
+ TEST_FLAVOR: consistency
+ TEST_ENVIRON: container
+ clone_script: *get_gosrc_aarch64
+ setup_script: *setup
+ main_script: *main
+ always: *runner_stats
+
+
# There are several other important variations of podman which
# must always build successfully. Most of them are handled in
# this task, though a few need dedicated tasks which follow.
@@ -550,11 +638,12 @@ container_integration_test_task:
_BUILD_CACHE_HANDLE: ${FEDORA_NAME}-build-${CIRRUS_BUILD_ID}
VM_IMAGE_NAME: ${FEDORA_CACHE_IMAGE_NAME}
CTR_FQIN: ${FEDORA_CONTAINER_FQIN}
- #- env:
- #DISTRO_NV: ${PRIOR_FEDORA_NAME}
- #_BUILD_CACHE_HANDLE: ${PRIOR_FEDORA_NAME}-build-${CIRRUS_BUILD_ID}
- #VM_IMAGE_NAME: ${PRIOR_FEDORA_CACHE_IMAGE_NAME}
- #CTR_FQIN: ${PRIOR_FEDORA_CONTAINER_FQIN}
+ CI_DESIRED_RUNTIME: crun
+ #- env:
+ #DISTRO_NV: ${PRIOR_FEDORA_NAME}
+ #_BUILD_CACHE_HANDLE: ${PRIOR_FEDORA_NAME}-build-${CIRRUS_BUILD_ID}
+ #VM_IMAGE_NAME: ${PRIOR_FEDORA_CACHE_IMAGE_NAME}
+ #CTR_FQIN: ${PRIOR_FEDORA_CONTAINER_FQIN}
gce_instance: *standardvm
timeout_in: 90m
env:
@@ -646,6 +735,26 @@ local_system_test_task: &local_system_test_task
always: *logs_artifacts
+local_system_test_aarch64_task: &local_system_test_task_aarch64
+ name: *std_name_fmt
+ alias: local_system_test_aarch64
+ # Don't create task for tags, or if using [CI:DOCS], [CI:BUILD], multiarch
+ # Docs: ./contrib/cirrus/CIModes.md
+ only_if: *not_tag_build_docs_multiarch
+ depends_on:
+ - build_aarch64
+ - local_integration_test
+ ec2_instance: *standard_build_ec2_aarch64
+ env:
+ <<: *stdenvars_aarch64
+ TEST_FLAVOR: sys
+ DISTRO_NV: ${FEDORA_AARCH64_NAME}
+ clone_script: *get_gosrc_aarch64
+ setup_script: *setup
+ main_script: *main
+ always: *logs_artifacts
+
+
remote_system_test_task:
<<: *local_system_test_task
alias: remote_system_test
@@ -657,6 +766,17 @@ remote_system_test_task:
PODBIN_NAME: remote
+remote_system_test_aarch64_task:
+ <<: *local_system_test_task_aarch64
+ alias: remote_system_test_aarch64
+ depends_on:
+ - build_aarch64
+ - remote_integration_test
+ env:
+ TEST_FLAVOR: sys
+ PODBIN_NAME: remote
+
+
rootless_remote_system_test_task:
matrix:
# Minimal sanity testing: only the latest Fedora
@@ -667,6 +787,7 @@ rootless_remote_system_test_task:
CTR_FQIN: ${FEDORA_CONTAINER_FQIN}
# ID for re-use of build output
_BUILD_CACHE_HANDLE: ${FEDORA_NAME}-build-${CIRRUS_BUILD_ID}
+ CI_DESIRED_RUNTIME: crun
<<: *local_system_test_task
alias: rootless_remote_system_test
depends_on:
@@ -842,7 +963,7 @@ meta_task:
container:
cpu: 2
memory: 2
- image: quay.io/libpod/imgts:$IMAGE_SUFFIX
+ image: quay.io/libpod/imgts:latest
env:
# Space-separated list of images used by this repository state
# Disabled ${PRIOR_FEDORA_CACHE_IMAGE_NAME} for Fedora 35
@@ -870,10 +991,13 @@ success_task:
- ext_svc_check
- automation
- build
+ - build_aarch64
- validate
+ - validate_aarch64
- bindings
- swagger
- consistency
+ - consistency_aarch64
- alt_build
- osx_alt_build
- docker-py_test
@@ -888,7 +1012,9 @@ success_task:
# AND bypass in contrib/cirrus/cirrus_yaml_test.py for this name.
# - podman_machine
- local_system_test
+ - local_system_test_aarch64
- remote_system_test
+ - remote_system_test_aarch64
- rootless_system_test
- rootless_remote_system_test
- buildah_bud_test