podman
/
.cirrus.yml
1222 строки · 41.9 Кб
1---
2
3# Main collection of env. vars to set for all tasks and scripts.
4env:
5####
6#### Global variables used for all tasks
7####
8# Name of the ultimate destination branch for this CI run, PR or post-merge.
9DEST_BRANCH: "main"
10# Sane (default) value for GOPROXY and GOSUMDB.
11GOPROXY: "https://proxy.golang.org,direct"
12GOSUMDB: "sum.golang.org"
13# Overrides default location (/tmp/cirrus) for repo clone
14GOPATH: &gopath "/var/tmp/go"
15GOCACHE: "${GOPATH}/cache"
16GOSRC: &gosrc "/var/tmp/go/src/github.com/containers/podman"
17CIRRUS_WORKING_DIR: *gosrc
18# The default is 'sh' if unspecified
19CIRRUS_SHELL: "/bin/bash"
20# Save a little typing (path relative to $CIRRUS_WORKING_DIR)
21SCRIPT_BASE: "./contrib/cirrus"
22# Runner statistics log file path/name
23STATS_LOGFILE_SFX: 'runner_stats.log'
24STATS_LOGFILE: '$GOSRC/${CIRRUS_TASK_NAME}-${STATS_LOGFILE_SFX}'
25
26####
27#### Cache-image names to test with (double-quotes around names are critical)
28####
29FEDORA_NAME: "fedora-39"
30FEDORA_AARCH64_NAME: "${FEDORA_NAME}-aarch64"
31PRIOR_FEDORA_NAME: "fedora-38"
32RAWHIDE_NAME: "rawhide"
33DEBIAN_NAME: "debian-13"
34
35# Image identifiers
36IMAGE_SUFFIX: "c20240409t192511z-f39f38d13"
37
38# EC2 images
39FEDORA_AMI: "fedora-aws-${IMAGE_SUFFIX}"
40FEDORA_AARCH64_AMI: "fedora-podman-aws-arm64-${IMAGE_SUFFIX}"
41# GCP Images
42FEDORA_CACHE_IMAGE_NAME: "fedora-${IMAGE_SUFFIX}"
43PRIOR_FEDORA_CACHE_IMAGE_NAME: "prior-fedora-${IMAGE_SUFFIX}"
44RAWHIDE_CACHE_IMAGE_NAME: "rawhide-${IMAGE_SUFFIX}"
45DEBIAN_CACHE_IMAGE_NAME: "debian-${IMAGE_SUFFIX}"
46# Container FQIN's
47FEDORA_CONTAINER_FQIN: "quay.io/libpod/fedora_podman:${IMAGE_SUFFIX}"
48PRIOR_FEDORA_CONTAINER_FQIN: "quay.io/libpod/prior-fedora_podman:${IMAGE_SUFFIX}"
49WINDOWS_AMI: "win-server-wsl-${IMAGE_SUFFIX}"
50####
51#### Control variables that determine what to run and how to run it.
52#### N/B: Required ALL of these are set for every single task.
53####
54TEST_FLAVOR: # int, sys, ext_svc, validate, automation, etc.
55TEST_ENVIRON: host # 'host', or 'container'.
56PODBIN_NAME: podman # 'podman' or 'remote'
57PRIV_NAME: root # 'root' or 'rootless'
58DISTRO_NV: # any {PRIOR_,}{FEDORA,DEBIAN}_NAME value
59VM_IMAGE_NAME: # One of the "Google-cloud VM Images" (above)
60CTR_FQIN: # One of the "Container FQIN's" (above)
61CI_DESIRED_DATABASE: sqlite # 'sqlite' or 'boltdb'
62CI_DESIRED_STORAGE: overlay # overlay or vfs
63
64# Curl-command prefix for downloading task artifacts, simply add the
65# the url-encoded task name, artifact name, and path as a suffix.
66ART_URL: https://api.cirrus-ci.com/v1/artifact/build/${CIRRUS_BUILD_ID}
67ARTCURL: >-
68curl --retry 5 --retry-delay 8 --fail --location -O
69--url ${ART_URL}
70
71
72# Default timeout for each task
73timeout_in: 60m
74
75
76gcp_credentials: ENCRYPTED[a28959877b2c9c36f151781b0a05407218cda646c7d047fc556e42f55e097e897ab63ee78369dae141dcf0b46a9d0cdd]
77
78aws_credentials: ENCRYPTED[4ca070bffe28eb9b27d63c568b52970dd46f119c3a83b8e443241e895dbf1737580b4d84eed27a311a2b74287ef9f79f]
79
80
81# N/B: This matrix of build tasks are critical to CI, along with the following
82# aarch64 task. They build binaries for all CI platforms, and versions. On
83# success, the contents of the repository are preserved as an artifact for
84# consumption by most subsequent CI tasks. This saves about 3-5 minutes of
85# otherwise duplicative effort in most tasks.
86build_task:
87alias: 'build'
88name: 'Build for $DISTRO_NV'
89gce_instance: &standardvm
90image_project: libpod-218412
91zone: "us-central1-a"
92cpu: 2
93memory: "4Gb"
94# Required to be 200gig, do not modify - has i/o performance impact
95# according to gcloud CLI tool warning messages.
96disk: 200
97image_name: "${VM_IMAGE_NAME}" # from stdenvars
98matrix: &platform_axis
99# Ref: https://cirrus-ci.org/guide/writing-tasks/#matrix-modification
100- env: &stdenvars
101DISTRO_NV: ${FEDORA_NAME}
102# Not used here, is used in other tasks
103VM_IMAGE_NAME: ${FEDORA_CACHE_IMAGE_NAME}
104CTR_FQIN: ${FEDORA_CONTAINER_FQIN}
105# ID for re-use of build output
106CI_DESIRED_RUNTIME: crun
107- env:
108DISTRO_NV: ${PRIOR_FEDORA_NAME}
109VM_IMAGE_NAME: ${PRIOR_FEDORA_CACHE_IMAGE_NAME}
110CTR_FQIN: ${PRIOR_FEDORA_CONTAINER_FQIN}
111CI_DESIRED_RUNTIME: crun
112CI_DESIRED_DATABASE: boltdb
113CI_DESIRED_STORAGE: vfs
114# Catch invalid "TMPDIR == /tmp" assumptions; PR #19281
115TMPDIR: /var/tmp
116- env:
117<<: *stdenvars
118DISTRO_NV: ${RAWHIDE_NAME}
119VM_IMAGE_NAME: ${RAWHIDE_CACHE_IMAGE_NAME}
120CTR_FQIN: ""
121- env:
122DISTRO_NV: ${DEBIAN_NAME}
123VM_IMAGE_NAME: ${DEBIAN_CACHE_IMAGE_NAME}
124CI_DESIRED_RUNTIME: runc
125CI_DESIRED_NETWORK: netavark
126# Ignore cgroups-v1 warnings on debian
127PODMAN_IGNORE_CGROUPSV1_WARNING: true
128env:
129TEST_FLAVOR: build
130# NOTE: The default way Cirrus-CI clones is *NOT* compatible with
131# environment expectations in contrib/cirrus/lib.sh. Specifically
132# the 'origin' remote must be defined, and all remote branches/tags
133# must be available for reference from CI scripts.
134clone_script: &full_clone |
135set -exo pipefail
136cd /
137rm -rf $CIRRUS_WORKING_DIR
138mkdir -p $CIRRUS_WORKING_DIR
139git clone --recursive --branch=$DEST_BRANCH https://x-access-token:${CIRRUS_REPO_CLONE_TOKEN}@github.com/${CIRRUS_REPO_FULL_NAME}.git $CIRRUS_WORKING_DIR
140cd $CIRRUS_WORKING_DIR
141git remote update origin
142if [[ -n "$CIRRUS_PR" ]]; then # running for a PR
143git fetch origin pull/$CIRRUS_PR/head:pull/$CIRRUS_PR
144git checkout pull/$CIRRUS_PR
145else
146git reset --hard $CIRRUS_CHANGE_IN_REPO
147fi
148# Attempt to prevent flakes by confirming basic environment expectations,
149# network service connectivity and essential container image availability.
150prebuild_script: &prebuild $SCRIPT_BASE/prebuild.sh
151# Standard setup stage call, used by nearly every task in CI.
152setup_script: &setup '$GOSRC/$SCRIPT_BASE/setup_environment.sh'
153# Attempt to prevent flakes by confirming automation environment and
154# all required external/3rd-party services are available and functional.
155# Standard main execution stage call, used by nearly every task in CI.
156main_script: &main '/usr/bin/time --verbose --output="$STATS_LOGFILE" $GOSRC/$SCRIPT_BASE/runner.sh'
157# Attempt to catch code-quality and vendoring problems early.
158postbuild_script: &postbuild $SCRIPT_BASE/postbuild.sh
159# Cirrus-CI is very slow uploading one file at time, and the repo contains
160# thousands of files. Speed this up by archiving into tarball first.
161repo_prep_script: &repo_prep >-
162tar cjf /tmp/repo.tbz -C $GOSRC . && mv /tmp/repo.tbz $GOSRC/
163repo_artifacts: &repo_artifacts
164path: ./repo.tbz
165type: application/octet-stream
166always: &runner_stats
167runner_stats_artifacts:
168path: ./*-${STATS_LOGFILE_SFX}
169type: text/plain
170
171
172# Confirm the result of building on at least one platform appears sane.
173# This confirms the binaries can be executed, checks --help vs docs, and
174# other essential post-build validation checks.
175validate_task:
176name: "Validate ${DISTRO_NV} Build"
177alias: validate
178# This task is primarily intended to catch human-errors early on, in a
179# PR. Skip it for branch-push, branch-create, and tag-push to improve
180# automation reliability/speed in those contexts. Any missed errors due
181# to nonsequential PR merging practices, will be caught on a future PR,
182# build or test task failures.
183# Docs: ./contrib/cirrus/CIModes.md
184only_if: &is_pr "$CIRRUS_PR != ''"
185depends_on:
186- build
187# golangci-lint is a very, very hungry beast.
188gce_instance: &bigvm
189<<: *standardvm
190cpu: 8
191memory: "16Gb"
192matrix:
193- env:
194<<: *stdenvars
195VM_IMAGE_NAME: ${FEDORA_CACHE_IMAGE_NAME}
196DISTRO_NV: ${FEDORA_NAME}
197- env:
198<<: *stdenvars
199VM_IMAGE_NAME: ${RAWHIDE_CACHE_IMAGE_NAME}
200DISTRO_NV: ${RAWHIDE_NAME}
201env:
202TEST_FLAVOR: validate
203# N/B: This script depends on ${DISTRO_NV} being defined for the task.
204clone_script: &get_gosrc |
205cd /tmp
206echo "$ARTCURL/Build%20for%20${DISTRO_NV}/repo/repo.tbz"
207time $ARTCURL/Build%20for%20${DISTRO_NV}/repo/repo.tbz
208time tar xjf /tmp/repo.tbz -C $GOSRC
209setup_script: *setup
210main_script: *main
211always: *runner_stats
212
213
214build_aarch64_task:
215alias: 'build_aarch64'
216name: 'Build for $DISTRO_NV'
217ec2_instance: &standard_build_ec2_aarch64
218image: ${VM_IMAGE_NAME}
219type: ${EC2_INST_TYPE}
220region: us-east-1
221architecture: arm64 # CAUTION: This has to be "arm64", not "aarch64".
222env: &stdenvars_aarch64
223EC2_INST_TYPE: "t4g.xlarge"
224DISTRO_NV: ${FEDORA_AARCH64_NAME}
225VM_IMAGE_NAME: ${FEDORA_AARCH64_AMI}
226CTR_FQIN: ${FEDORA_CONTAINER_FQIN}
227CI_DESIRED_RUNTIME: crun
228TEST_FLAVOR: build
229clone_script: *full_clone
230prebuild_script: *prebuild
231setup_script: *setup
232postbuild_script: *postbuild
233main_script: *main
234# Cirrus-CI is very slow uploading one file at time, and the repo contains
235# thousands of files. Speed this up by archiving into tarball first.
236repo_prep_script: &repo_prep_aarch64 >-
237tar cjf /tmp/repo.tbz -C $GOSRC . && mv /tmp/repo.tbz $GOSRC/
238repo_artifacts: &repo_artifacts_aarch64
239path: ./repo.tbz
240type: application/octet-stream
241always: *runner_stats
242
243
244# Confirm the result of building on at least one platform appears sane.
245# This confirms the binaries can be executed, checks --help vs docs, and
246# other essential post-build validation checks.
247validate_aarch64_task:
248name: "Validate $DISTRO_NV Build"
249alias: validate_aarch64
250# This task is primarily intended to catch human-errors early on, in a
251# PR. Skip it for branch-push, branch-create, and tag-push to improve
252# automation reliability/speed in those contexts. Any missed errors due
253# to nonsequential PR merging practices, will be caught on a future PR,
254# build or test task failures.
255# Docs: ./contrib/cirrus/CIModes.md
256only_if: *is_pr
257depends_on:
258- build_aarch64
259ec2_instance: *standard_build_ec2_aarch64
260env:
261<<: *stdenvars_aarch64
262TEST_FLAVOR: validate
263DISTRO_NV: ${FEDORA_AARCH64_NAME}
264# N/B: This script depends on ${DISTRO_NV} being defined for the task.
265clone_script: &get_gosrc_aarch64 |
266cd /tmp
267echo "$ARTCURL/build_aarch64/repo/repo.tbz"
268time $ARTCURL/build_aarch64/repo/repo.tbz
269time tar xjf /tmp/repo.tbz -C $GOSRC
270setup_script: *setup
271main_script: *main
272always: *runner_stats
273
274
275# There are several other important variations of podman which
276# must always build successfully. Most of them are handled in
277# this task, though a few need dedicated tasks which follow.
278alt_build_task:
279name: "$ALT_NAME"
280alias: alt_build
281# Don't create task for [CI:DOCS], or rhel-release builds
282# Docs: ./contrib/cirrus/CIModes.md
283only_if: &no_rhel_release |
284$CIRRUS_BRANCH !=~ 'v[0-9\.]+-rhel' &&
285$CIRRUS_BASE_BRANCH !=~ 'v[0-9\.]+-rhel'
286env:
287<<: *stdenvars
288TEST_FLAVOR: "altbuild"
289gce_instance: *standardvm
290matrix:
291- env:
292ALT_NAME: 'Build Each Commit'
293- env:
294# TODO: Replace with task using `winmake` to build
295# binary and archive installation zip file.
296ALT_NAME: 'Windows Cross'
297- env:
298ALT_NAME: 'Alt Arch. x86 Cross'
299- env:
300ALT_NAME: 'Alt Arch. ARM Cross'
301- env:
302ALT_NAME: 'Alt Arch. MIPS Cross'
303- env:
304ALT_NAME: 'Alt Arch. MIPS64 Cross'
305- env:
306ALT_NAME: 'Alt Arch. Other Cross'
307# This task cannot make use of the shared repo.tbz artifact.
308clone_script: *full_clone
309setup_script: *setup
310main_script: *main
311# Produce a new repo.tbz artifact for consumption by 'artifacts' task.
312repo_prep_script: *repo_prep
313repo_artifacts: *repo_artifacts
314always: *runner_stats
315
316
317# Confirm building the remote client, natively on a Mac OS-X VM.
318osx_alt_build_task:
319name: "OSX Cross"
320alias: osx_alt_build
321# Docs: ./contrib/cirrus/CIModes.md
322only_if: *no_rhel_release # RHEL never releases podman mac installer binary
323persistent_worker: &mac_pw
324labels:
325os: darwin
326arch: arm64
327purpose: prod
328env: &mac_env
329CIRRUS_SHELL: "/bin/bash" # sh is the default
330CIRRUS_WORKING_DIR: "$HOME/ci/task-${CIRRUS_TASK_ID}" # Isolation: $HOME will be set to "ci" dir.
331# Prevent cache-pollution fron one task to the next.
332GOPATH: "$CIRRUS_WORKING_DIR/.go"
333GOCACHE: "$CIRRUS_WORKING_DIR/.go/cache"
334GOENV: "$CIRRUS_WORKING_DIR/.go/support"
335GOSRC: "$HOME/ci/task-${CIRRUS_TASK_ID}"
336clone_script: *full_clone
337# This host is/was shared with potentially many other CI tasks.
338# The previous task may have been canceled or aborted.
339prep_script: &mac_cleanup "contrib/cirrus/mac_cleanup.sh"
340lint_script:
341- make golangci-lint
342basic_build_script:
343- make .install.ginkgo
344- make podman-remote
345- make podman-mac-helper
346build_pkginstaller_script:
347- pushd contrib/pkginstaller
348- make ARCH=amd64 NO_CODESIGN=1 pkginstaller
349- make ARCH=aarch64 NO_CODESIGN=1 pkginstaller
350- make ARCH=universal NO_CODESIGN=1 pkginstaller
351- popd
352build_amd64_script:
353- make podman-remote-release-darwin_amd64.zip
354# Building arm podman needs to be the last thing built in this task
355# The Mac tests rely this Podman binary to run, and the CI Mac is ARM-based
356build_arm64_script:
357- make podman-remote-release-darwin_arm64.zip
358# Produce a new repo.tbz artifact for consumption by dependent tasks.
359repo_prep_script: *repo_prep
360repo_artifacts: *repo_artifacts
361# This host is/was shared with potentially many other CI tasks.
362# Ensure nothing is left running while waiting for the next task.
363always:
364task_cleanup_script: *mac_cleanup
365
366
367# Build freebsd release natively on a FreeBSD VM.
368freebsd_alt_build_task:
369name: "FreeBSD Cross"
370alias: freebsd_alt_build
371# Only run on 'main' and PRs against 'main'
372# Docs: ./contrib/cirrus/CIModes.md
373only_if: |
374$CIRRUS_CHANGE_TITLE !=~ '.*CI:MACHINE.*' &&
375( $CIRRUS_BRANCH == 'main' || $CIRRUS_BASE_BRANCH == 'main' )
376env:
377<<: *stdenvars
378# Functional FreeBSD builds must be built natively since they depend on CGO
379DISTRO_NV: freebsd-13
380VM_IMAGE_NAME: notyet
381CTR_FQIN: notyet
382CIRRUS_SHELL: "/bin/sh"
383TEST_FLAVOR: "altbuild"
384ALT_NAME: 'FreeBSD Cross'
385freebsd_instance:
386image_family: freebsd-13-3
387setup_script:
388- pkg install -y gpgme bash go-md2man gmake gsed gnugrep go pkgconf
389build_amd64_script:
390- gmake podman-release
391# This task cannot make use of the shared repo.tbz artifact and must
392# produce a new repo.tbz artifact for consumption by 'artifacts' task.
393repo_prep_script: *repo_prep
394repo_artifacts: *repo_artifacts
395
396
397# Status aggregator for all builds. This task simply makes dependency
398# management easier, and results in a simpler graph that using YAML
399# anchors/aliases.
400build_success_task:
401name: "Total Build Success"
402alias: build_success
403depends_on:
404- build
405- validate
406- build_aarch64
407- validate_aarch64
408- alt_build
409- osx_alt_build
410- freebsd_alt_build
411env:
412CTR_FQIN: ${FEDORA_CONTAINER_FQIN}
413container: &smallcontainer
414image: ${CTR_FQIN}
415# Resources are limited across ALL currently executing tasks
416# ref: https://cirrus-ci.org/guide/linux/#linux-containers
417cpu: 1
418memory: 1
419clone_script: &noop mkdir -p "$CIRRUS_WORKING_DIR"
420script: *noop
421
422
423# Exercise the "libpod" API with a small set of common
424# operations to ensure they are functional.
425bindings_task:
426name: "Test Bindings"
427alias: bindings
428# Don't create task for PRs using [CI:DOCS] or [CI:BUILD]
429# Docs: ./contrib/cirrus/CIModes.md
430only_if: >-
431$CIRRUS_PR != '' &&
432$CIRRUS_CHANGE_TITLE !=~ '.*CI:DOCS.*' &&
433$CIRRUS_CHANGE_TITLE !=~ '.*CI:BUILD.*' &&
434$CIRRUS_CHANGE_TITLE !=~ '.*CI:MACHINE.*'
435depends_on: &build
436- build_success
437gce_instance: *standardvm
438env:
439<<: *stdenvars
440TEST_FLAVOR: bindings
441clone_script: *get_gosrc
442setup_script: *setup
443main_script: *main
444always: &logs_artifacts
445<<: *runner_stats
446# Required for `contrib/cirrus/logformatter` to work properly
447html_artifacts:
448path: ./*.html
449type: text/html
450server_log_artifacts:
451path: ./podman-server.log
452type: text/plain
453df_script: '$SCRIPT_BASE/logcollector.sh df'
454audit_log_script: '$SCRIPT_BASE/logcollector.sh audit'
455journal_script: '$SCRIPT_BASE/logcollector.sh journal'
456podman_system_info_script: '$SCRIPT_BASE/logcollector.sh podman'
457time_script: '$SCRIPT_BASE/logcollector.sh time'
458
459
460# Build the "libpod" API documentation `swagger.yaml` and
461# publish it to google-cloud-storage (GCS).
462swagger_task:
463name: "Test Swagger"
464alias: swagger
465# Don't create task for [CI:BUILD]
466# Docs: ./contrib/cirrus/CIModes.md
467only_if: |
468$CIRRUS_CHANGE_TITLE !=~ '.*CI:BUILD.*' &&
469$CIRRUS_CHANGE_TITLE !=~ '.*CI:MACHINE.*'
470depends_on: *build
471gce_instance: *standardvm
472env:
473<<: *stdenvars
474TEST_FLAVOR: swagger
475CTR_FQIN: 'quay.io/libpod/gcsupld:${IMAGE_SUFFIX}'
476GCPJSON: ENCRYPTED[927dc01e755eaddb4242b0845cf86c9098d1e3dffac38c70aefb1487fd8b4fe6dd6ae627b3bffafaba70e2c63172664e]
477GCPNAME: ENCRYPTED[c145e9c16b6fb88d476944a454bf4c1ccc84bb4ecaca73bdd28bdacef0dfa7959ebc8171a27b2e4064d66093b2cdba49]
478GCPPROJECT: 'libpod-218412'
479clone_script: *get_gosrc
480setup_script: *setup
481main_script: *main
482always:
483<<: *runner_stats
484swagger_artifacts:
485path: ./swagger.yaml
486type: text/plain
487
488
489win_installer_task:
490name: "Verify Win Installer Build"
491alias: win_installer
492only_if: # RHEL never releases podman windows installer binary
493$CIRRUS_TAG == '' &&
494$CIRRUS_BRANCH !=~ 'v[0-9\.]+-rhel' &&
495$CIRRUS_BASE_BRANCH !=~ 'v[0-9\.]+-rhel'
496depends_on: *build
497ec2_instance: &windows
498image: "${WINDOWS_AMI}"
499type: m5.large
500region: us-east-1
501platform: windows
502env: &winenv
503CIRRUS_WORKING_DIR: &wincwd "${LOCALAPPDATA}\\cirrus-ci-build"
504CIRRUS_SHELL: powershell
505PATH: "${PATH};C:\\ProgramData\\chocolatey\\bin"
506DISTRO_NV: "windows"
507PRIV_NAME: "rootless"
508# Fake version, we are only testing the installer functions, so version doesn't matter
509WIN_INST_VER: 9.9.9
510# It's HIGHLY desireable to use the same binary throughout CI. Otherwise, if
511# there's a toolchain or build-environment specific problem, it can be incredibly
512# difficult (and non-obvious) to debug.
513clone_script: &winclone |
514$ErrorActionPreference = 'Stop'
515$ProgressPreference = 'SilentlyContinue'
516New-Item -ItemType Directory -Force -Path "$ENV:CIRRUS_WORKING_DIR"
517Set-Location "$ENV:CIRRUS_WORKING_DIR"
518$uri = "${ENV:ART_URL}/Windows Cross/repo/repo.tbz"
519Write-Host "Downloading $uri"
520For($i = 0;;) {
521Try {
522Invoke-WebRequest -UseBasicParsing -ErrorAction Stop -OutFile "repo.tbz2" `
523-Uri "$uri"
524Break
525} Catch {
526if (++$i -gt 6) {
527throw $_.Exception
528}
529Write-Host "Download failed - retrying:" $_.Exception.Response.StatusCode
530Start-Sleep -Seconds 10
531}
532}
533arc unarchive repo.tbz2 .\
534if ($LASTEXITCODE -ne 0) {
535throw "Unarchive repo.tbz2 failed"
536Exit 1
537}
538Get-ChildItem -Path .\repo
539main_script: ".\\repo\\contrib\\cirrus\\win-installer-main.ps1"
540
541
542# Verify podman is compatible with the docker python-module.
543docker-py_test_task:
544name: Docker-py Compat.
545alias: docker-py_test
546# Don't create task for tags, branches, or PRs w/ [CI:<magic>]
547# N/B: for PRs $CIRRUS_BRANCH == 'pull/<number>'
548# Docs: ./contrib/cirrus/CIModes.md
549only_if: ¬_tag_branch_build_docs_machine >-
550$CIRRUS_PR != '' &&
551$CIRRUS_CHANGE_TITLE !=~ '.*CI:DOCS.*' &&
552$CIRRUS_CHANGE_TITLE !=~ '.*CI:BUILD.*' &&
553$CIRRUS_CHANGE_TITLE !=~ '.*CI:MACHINE.*'
554depends_on: *build
555gce_instance: *standardvm
556env:
557<<: *stdenvars
558TEST_FLAVOR: docker-py
559TEST_ENVIRON: container
560clone_script: *get_gosrc
561setup_script: *setup
562main_script: *main
563always: *runner_stats
564
565
566# Does exactly what it says, execute the podman unit-tests on Fedora.
567unit_test_task:
568name: "Unit tests on $DISTRO_NV"
569alias: unit_test
570# Docs: ./contrib/cirrus/CIModes.md
571only_if: *not_tag_branch_build_docs_machine
572depends_on: *build
573matrix:
574- env: *stdenvars
575# Special-case: Rootless on latest Fedora (standard) VM
576- name: "Rootless unit on $DISTRO_NV"
577env:
578<<: *stdenvars
579PRIV_NAME: rootless
580gce_instance: *standardvm
581env:
582TEST_FLAVOR: unit
583clone_script: *get_gosrc
584setup_script: *setup
585main_script: *main
586always: *logs_artifacts
587
588
589apiv2_test_task:
590name: "APIv2 test on $DISTRO_NV ($PRIV_NAME)"
591alias: apiv2_test
592# Docs: ./contrib/cirrus/CIModes.md
593only_if: *not_tag_branch_build_docs_machine
594depends_on: *build
595gce_instance: *standardvm
596# Test is normally pretty quick, about 10-minutes. If it hangs,
597# don't make developers wait the full 1-hour timeout.
598timeout_in: 20m
599env:
600<<: *stdenvars
601TEST_FLAVOR: apiv2
602matrix:
603- env:
604PRIV_NAME: root
605- env:
606PRIV_NAME: rootless
607clone_script: *get_gosrc
608setup_script: *setup
609main_script: *main
610always: *logs_artifacts
611
612
613compose_test_task:
614name: "$TEST_FLAVOR test on $DISTRO_NV ($PRIV_NAME)"
615alias: compose_test
616# Docs: ./contrib/cirrus/CIModes.md
617only_if: *not_tag_branch_build_docs_machine
618depends_on: *build
619gce_instance: *standardvm
620matrix:
621- env:
622PRIV_NAME: root
623- env:
624PRIV_NAME: rootless
625env:
626<<: *stdenvars
627TEST_FLAVOR: compose_v2
628clone_script: *get_gosrc
629setup_script: *setup
630main_script: *main
631always: *logs_artifacts
632
633
634# versions, as root, without involving the podman-remote client.
635local_integration_test_task: &local_integration_test_task
636# Integration-test task name convention:
637# <int.|sys.> <podman|remote> <Distro NV> <root|rootless>
638name: &std_name_fmt "$TEST_FLAVOR $PODBIN_NAME $DISTRO_NV $PRIV_NAME $TEST_ENVIRON ${CI_DESIRED_DATABASE}"
639alias: local_integration_test
640# Docs: ./contrib/cirrus/CIModes.md
641only_if: *not_tag_branch_build_docs_machine
642depends_on: *build
643matrix: *platform_axis
644gce_instance: *standardvm
645timeout_in: 50m
646env:
647TEST_FLAVOR: int
648clone_script: *get_gosrc
649setup_script: *setup
650main_script: *main
651always: &int_logs_artifacts
652<<: *logs_artifacts
653ginkgo_node_logs_artifacts:
654path: ./test/e2e/ginkgo-node-*.log
655type: text/plain
656ginkgo_json_artifacts:
657path: ./ginkgo-e2e.json
658type: application/json
659
660
661# Nearly identical to `local_integration_test` except all operations
662# are performed through the podman-remote client vs a podman "server"
663# running on the same host.
664remote_integration_test_task:
665<<: *local_integration_test_task
666alias: remote_integration_test
667env:
668TEST_FLAVOR: int
669PODBIN_NAME: remote
670
671
672# Run the complete set of integration tests from inside a container.
673# This verifies all/most operations function with "podman-in-podman".
674container_integration_test_task:
675name: *std_name_fmt
676alias: container_integration_test
677# Docs: ./contrib/cirrus/CIModes.md
678only_if: *not_tag_branch_build_docs_machine
679depends_on: *build
680matrix: &fedora_vm_axis
681- env:
682DISTRO_NV: ${FEDORA_NAME}
683VM_IMAGE_NAME: ${FEDORA_CACHE_IMAGE_NAME}
684CTR_FQIN: ${FEDORA_CONTAINER_FQIN}
685CI_DESIRED_RUNTIME: crun
686- env:
687DISTRO_NV: ${PRIOR_FEDORA_NAME}
688VM_IMAGE_NAME: ${PRIOR_FEDORA_CACHE_IMAGE_NAME}
689CTR_FQIN: ${PRIOR_FEDORA_CONTAINER_FQIN}
690CI_DESIRED_RUNTIME: crun
691CI_DESIRED_DATABASE: boltdb
692gce_instance: *standardvm
693timeout_in: 50m
694env:
695TEST_FLAVOR: int
696TEST_ENVIRON: container
697clone_script: *get_gosrc
698setup_script: *setup
699main_script: *main
700always: *int_logs_artifacts
701
702
703# Execute most integration tests as a regular (non-root) user.
704rootless_integration_test_task:
705name: *std_name_fmt
706alias: rootless_integration_test
707# Docs: ./contrib/cirrus/CIModes.md
708only_if: *not_tag_branch_build_docs_machine
709depends_on: *build
710matrix: *platform_axis
711gce_instance: *standardvm
712timeout_in: 50m
713env:
714TEST_FLAVOR: int
715PRIV_NAME: rootless
716clone_script: *get_gosrc
717setup_script: *setup
718main_script: *main
719always: *int_logs_artifacts
720
721
722podman_machine_task:
723name: *std_name_fmt
724alias: podman_machine
725# Only run for PRs and never [CI:DOCS] or [CI:BUILD]
726# Docs: ./contrib/cirrus/CIModes.md
727only_if: &machine_cron_not_tag_build_docs >-
728($CIRRUS_PR != '' &&
729$CIRRUS_CHANGE_TITLE !=~ '.*CI:DOCS.*' &&
730$CIRRUS_CHANGE_TITLE !=~ '.*CI:BUILD.*'
731) || $CIRRUS_CRON == "main"
732depends_on: *build
733ec2_instance:
734image: "${VM_IMAGE_NAME}"
735type: "${EC2_INST_TYPE}"
736region: us-east-1
737env:
738EC2_INST_TYPE: "m5zn.metal" # Bare-metal instance is required
739TEST_FLAVOR: "machine-linux"
740PRIV_NAME: "rootless" # intended use-case
741DISTRO_NV: "${FEDORA_NAME}"
742VM_IMAGE_NAME: "${FEDORA_AMI}"
743clone_script: *get_gosrc
744setup_script: *setup
745main_script: *main
746always: *int_logs_artifacts
747
748
749podman_machine_aarch64_task:
750name: *std_name_fmt
751alias: podman_machine_aarch64
752only_if: *machine_cron_not_tag_build_docs
753depends_on: *build
754ec2_instance:
755<<: *standard_build_ec2_aarch64
756env:
757TEST_FLAVOR: "machine-linux"
758EC2_INST_TYPE: c6g.metal
759PRIV_NAME: "rootless" # intended use-case
760DISTRO_NV: "${FEDORA_AARCH64_NAME}"
761VM_IMAGE_NAME: "${FEDORA_AARCH64_AMI}"
762clone_script: *get_gosrc_aarch64
763setup_script: *setup
764main_script: *main
765always: *int_logs_artifacts
766
767
768podman_machine_windows_task:
769name: *std_name_fmt
770alias: podman_machine_windows
771# Only run for non-docs/copr PRs and non-release branch builds
772# and never for tags. Docs: ./contrib/cirrus/CIModes.md
773only_if: *machine_cron_not_tag_build_docs
774depends_on: *build
775ec2_instance:
776<<: *windows
777type: m5zn.metal
778platform: windows
779env: *winenv
780matrix:
781- env:
782TEST_FLAVOR: "machine-wsl"
783- env:
784TEST_FLAVOR: "machine-hyperv"
785clone_script: *winclone
786main_script: ".\\repo\\contrib\\cirrus\\win-podman-machine-main.ps1"
787always:
788# Required for `contrib/cirrus/logformatter` to work properly
789html_artifacts:
790path: ./*.html
791type: text/html
792
793
794podman_machine_mac_task:
795name: *std_name_fmt
796alias: podman_machine_mac
797only_if: *machine_cron_not_tag_build_docs
798depends_on: *build
799persistent_worker: *mac_pw
800env:
801<<: *mac_env
802# Consumed by podman-machine ginkgo tests
803CONTAINERS_MACHINE_PROVIDER: "applehv"
804# TODO: Should not require a special image, for now it does.
805# Simply remove the line below when a mac image is GA.
806# MACHINE_IMAGE: "https://fedorapeople.org/groups/podman/testing/applehv/arm64/fedora-coreos-38.20230925.dev.0-applehv.aarch64.raw.gz"
807# Values necessary to populate std_name_fmt alias
808TEST_FLAVOR: "machine-mac"
809DISTRO_NV: "darwin"
810PRIV_NAME: "rootless" # intended use-case
811clone_script: # artifacts from osx_alt_build_task
812- mkdir -p $CIRRUS_WORKING_DIR
813- cd $CIRRUS_WORKING_DIR
814- $ARTCURL/OSX%20Cross/repo/repo.tbz
815- tar xjf repo.tbz
816# This host is/was shared with potentially many other CI tasks.
817# The previous task may have been canceled or aborted.
818prep_script: *mac_cleanup
819setup_script: "contrib/cirrus/mac_setup.sh"
820env_script: "contrib/cirrus/mac_env.sh"
821# TODO: Timeout bumped b/c initial image download (~5min) and VM
822# resize (~2min) causes test-timeout (90s default). Should
823# tests deal with this internally?
824test_script:
825- "contrib/cirrus/mac_runner.sh"
826# This host is/was shared with potentially many other CI tasks.
827# Ensure nothing is left running while waiting for the next task.
828always:
829# Required for `contrib/cirrus/logformatter` to work properly
830html_artifacts:
831path: ./*.html
832type: text/html
833task_cleanup_script: *mac_cleanup
834
835
836# Always run subsequent to integration tests. While parallelism is lost
837# with runtime, debugging system-test failures can be more challenging
838# for some golang developers. Otherwise the following tasks run across
839# the same matrix as the integration-tests (above).
840local_system_test_task: &local_system_test_task
841name: *std_name_fmt
842alias: local_system_test
843# Don't create task for tags, or if using [CI:*] magic
844# Docs: ./contrib/cirrus/CIModes.md
845only_if: ¬_tag_magic >-
846$CIRRUS_TAG == '' &&
847$CIRRUS_CHANGE_TITLE !=~ '.*CI:DOCS.*' &&
848$CIRRUS_CHANGE_TITLE !=~ '.*CI:BUILD.*' &&
849$CIRRUS_CHANGE_TITLE !=~ '.*CI:MACHINE.*'
850depends_on: *build
851matrix: *platform_axis
852gce_instance: *standardvm
853env:
854TEST_FLAVOR: sys
855clone_script: *get_gosrc
856setup_script: *setup
857main_script: *main
858always: *logs_artifacts
859
860
861local_system_test_aarch64_task: &local_system_test_task_aarch64
862name: *std_name_fmt
863alias: local_system_test_aarch64
864# Don't create task for tags, or if using [CI:DOCS], [CI:BUILD]
865# Docs: ./contrib/cirrus/CIModes.md
866only_if: *not_tag_magic
867depends_on: *build
868persistent_worker: *mac_pw
869ec2_instance: *standard_build_ec2_aarch64
870env:
871<<: *stdenvars_aarch64
872TEST_FLAVOR: sys
873DISTRO_NV: ${FEDORA_AARCH64_NAME}
874clone_script: *get_gosrc_aarch64
875setup_script: *setup
876main_script: *main
877always: *logs_artifacts
878
879
880remote_system_test_task:
881<<: *local_system_test_task
882alias: remote_system_test
883env:
884TEST_FLAVOR: sys
885PODBIN_NAME: remote
886
887
888remote_system_test_aarch64_task:
889<<: *local_system_test_task_aarch64
890alias: remote_system_test_aarch64
891env:
892TEST_FLAVOR: sys
893PODBIN_NAME: remote
894
895
896rootless_remote_system_test_task:
897matrix:
898# Minimal sanity testing: only the latest Fedora
899- env:
900DISTRO_NV: ${FEDORA_NAME}
901# Not used here, is used in other tasks
902VM_IMAGE_NAME: ${FEDORA_CACHE_IMAGE_NAME}
903CTR_FQIN: ${FEDORA_CONTAINER_FQIN}
904CI_DESIRED_RUNTIME: crun
905<<: *local_system_test_task
906alias: rootless_remote_system_test
907gce_instance: *standardvm
908env:
909TEST_FLAVOR: sys
910PODBIN_NAME: remote
911PRIV_NAME: rootless
912
913
914rootless_system_test_task:
915name: *std_name_fmt
916alias: rootless_system_test
917# Docs: ./contrib/cirrus/CIModes.md
918only_if: *not_tag_magic
919depends_on: *build
920matrix: *platform_axis
921gce_instance: *standardvm
922env:
923TEST_FLAVOR: sys
924PRIV_NAME: rootless
925clone_script: *get_gosrc
926setup_script: *setup
927main_script: *main
928always: *logs_artifacts
929
930
931minikube_test_task:
932name: *std_name_fmt
933alias: minikube_test
934# Docs: ./contrib/cirrus/CIModes.md
935only_if: *not_tag_magic
936depends_on: *build
937gce_instance: *standardvm
938env:
939<<: *stdenvars
940TEST_FLAVOR: minikube
941PRIV_NAME: rootless
942clone_script: *get_gosrc
943setup_script: *setup
944main_script: *main
945always: *logs_artifacts
946
947farm_test_task:
948name: *std_name_fmt
949alias: farm_test
950# Docs: ./contrib/cirrus/CIModes.md
951only_if: *not_tag_magic
952depends_on: *build
953gce_instance: *standardvm
954env:
955<<: *stdenvars
956TEST_FLAVOR: farm
957PRIV_NAME: rootless
958clone_script: *get_gosrc
959setup_script: *setup
960main_script: *main
961always: *logs_artifacts
962
963buildah_bud_test_task:
964name: *std_name_fmt
965alias: buildah_bud_test
966# Docs: ./contrib/cirrus/CIModes.md
967only_if: *not_tag_magic
968depends_on: *build
969env:
970<<: *stdenvars
971TEST_FLAVOR: bud
972matrix:
973- env:
974PODBIN_NAME: podman
975- env:
976PODBIN_NAME: remote
977gce_instance: *standardvm
978timeout_in: 45m
979clone_script: *get_gosrc
980setup_script: *setup
981main_script: *main
982always: *int_logs_artifacts
983
984upgrade_test_task:
985name: "Upgrade test: from $PODMAN_UPGRADE_FROM"
986alias: upgrade_test
987# Docs: ./contrib/cirrus/CIModes.md
988only_if: *not_tag_magic
989depends_on: *build
990matrix:
991- env:
992# 2024-02: as long as possible/reasonable, try to keep
993# one version < 4.8 so we can test boltdb. v4.3.1 is
994# the lowest we can go right now, builds before that
995# have netavark <1.4 which hangs on f39 kernel (#21863).
996PODMAN_UPGRADE_FROM: v4.3.1
997- env:
998PODMAN_UPGRADE_FROM: v4.8.0
999gce_instance: *standardvm
1000env:
1001TEST_FLAVOR: upgrade_test
1002DISTRO_NV: ${FEDORA_NAME}
1003VM_IMAGE_NAME: ${FEDORA_CACHE_IMAGE_NAME}
1004# Never force a DB, let the old version decide its default
1005CI_DESIRED_DATABASE:
1006clone_script: *get_gosrc
1007setup_script: *setup
1008main_script: *main
1009always: *logs_artifacts
1010
1011
1012# This task is critical. It updates the "last-used by" timestamp stored
1013# in metadata for all VM images. This mechanism functions in tandem with
1014# an out-of-band pruning operation to remove disused VM images.
1015meta_task:
1016name: "VM img. keepalive"
1017alias: meta
1018container:
1019cpu: 2
1020memory: 2
1021image: quay.io/libpod/imgts:latest
1022env:
1023# Space-separated list of images used by this repository state
1024IMGNAMES: >-
1025${FEDORA_CACHE_IMAGE_NAME}
1026${PRIOR_FEDORA_CACHE_IMAGE_NAME}
1027${RAWHIDE_CACHE_IMAGE_NAME}
1028${DEBIAN_CACHE_IMAGE_NAME}
1029EC2IMGNAMES: >-
1030${FEDORA_AARCH64_AMI}
1031${FEDORA_AMI}
1032${WINDOWS_AMI}
1033BUILDID: "${CIRRUS_BUILD_ID}"
1034REPOREF: "${CIRRUS_REPO_NAME}"
1035AWSINI: ENCRYPTED[21b2db557171b11eb5abdbccae593f48c9caeba86dfcc4d4ff109edee9b4656ab6720a110dadfcd51e88cc59a71cc7af]
1036GCPJSON: ENCRYPTED[3a198350077849c8df14b723c0f4c9fece9ebe6408d35982e7adf2105a33f8e0e166ed3ed614875a0887e1af2b8775f4]
1037GCPNAME: ENCRYPTED[2f9738ef295a706f66a13891b40e8eaa92a89e0e87faf8bed66c41eca72bf76cfd190a6f2d0e8444c631fdf15ed32ef6]
1038GCPPROJECT: libpod-218412
1039clone_script: *noop
1040script: /usr/local/bin/entrypoint.sh
1041
1042
1043# Status aggregator for all tests. This task ensures a defined set of tasks
1044# all passed, and allows confirming that based on the status of this task.
1045success_task:
1046# N/B: The prow merge-bot (tide) is sensitized to this exact name, DO NOT CHANGE IT.
1047# Ref: https://github.com/openshift/release/pull/48855
1048name: "Total Success"
1049alias: success
1050# N/B: ALL tasks must be listed here, minus their '_task' suffix.
1051depends_on:
1052- build_success
1053- bindings
1054- swagger
1055- win_installer
1056- docker-py_test
1057- unit_test
1058- apiv2_test
1059- compose_test
1060- local_integration_test
1061- remote_integration_test
1062- container_integration_test
1063- rootless_integration_test
1064- podman_machine
1065- podman_machine_aarch64
1066- podman_machine_windows
1067- podman_machine_mac
1068- local_system_test
1069- local_system_test_aarch64
1070- remote_system_test
1071- remote_system_test_aarch64
1072- rootless_remote_system_test
1073- rootless_system_test
1074- local_system_test
1075- local_system_test_aarch64
1076- remote_system_test
1077- rootless_remote_system_test
1078- rootless_system_test
1079- minikube_test
1080- farm_test
1081- buildah_bud_test
1082- upgrade_test
1083- meta
1084env:
1085CTR_FQIN: ${FEDORA_CONTAINER_FQIN}
1086container: *smallcontainer
1087clone_script: *noop
1088script: |
1089if [[ "$CIRRUS_CHANGE_TITLE" =~ CI:MACHINE ]] && [[ -n "$CIRRUS_PR" ]]; then
1090echo "Error: Risk of untested change merge."
1091echo "Please remove [CI:MACHINE] from title."
1092exit 1
1093fi
1094
1095# WARNING: Most of the artifacts captured here are also have their
1096# permalinks present in the `DOWNLOADS.md` file. Any changes made
1097# here, should probably be reflected in that document.
1098artifacts_task:
1099name: "Artifacts"
1100alias: artifacts
1101# Docs: ./contrib/cirrus/CIModes.md
1102only_if: >-
1103$CIRRUS_CHANGE_TITLE !=~ '.*CI:DOCS.*' &&
1104$CIRRUS_BRANCH !=~ 'v[0-9\.]+-rhel' &&
1105$CIRRUS_BASE_BRANCH !=~ 'v[0-9\.]+-rhel'
1106depends_on:
1107- success
1108# This task is a secondary/convenience for downstream consumers, don't
1109# block development progress if there is a failure in a PR, only break
1110# when running on branches or tags.
1111allow_failures: $CIRRUS_PR != ''
1112container: *smallcontainer
1113env:
1114CTR_FQIN: ${FEDORA_CONTAINER_FQIN}
1115TEST_ENVIRON: container
1116# In order to keep the download URL and Cirrus-CI artifact.zip contents
1117# simple, nothing should exist in $CIRRUS_WORKING_DIR except for artifacts.
1118clone_script: *noop
1119fedora_binaries_script:
1120- mkdir -p /tmp/fed
1121- cd /tmp/fed
1122- $ARTCURL/Build%20for%20${FEDORA_NAME}/repo/repo.tbz
1123- tar xjf repo.tbz
1124- cp ./bin/* $CIRRUS_WORKING_DIR/
1125alt_binaries_intel_script:
1126- mkdir -p /tmp/alt
1127- cd /tmp/alt
1128- $ARTCURL/Alt%20Arch.%20x86%20Cross/repo/repo.tbz
1129- tar xjf repo.tbz
1130- mv ./*.tar.gz $CIRRUS_WORKING_DIR/
1131alt_binaries_arm_script:
1132- mkdir -p /tmp/alt
1133- cd /tmp/alt
1134- $ARTCURL/Alt%20Arch.%20ARM%20Cross/repo/repo.tbz
1135- tar xjf repo.tbz
1136- mv ./*.tar.gz $CIRRUS_WORKING_DIR/
1137alt_binaries_mips_script:
1138- mkdir -p /tmp/alt
1139- cd /tmp/alt
1140- $ARTCURL/Alt%20Arch.%20MIPS%20Cross/repo/repo.tbz
1141- tar xjf repo.tbz
1142- mv ./*.tar.gz $CIRRUS_WORKING_DIR/
1143alt_binaries_mips64_script:
1144- mkdir -p /tmp/alt
1145- cd /tmp/alt
1146- $ARTCURL/Alt%20Arch.%20MIPS64%20Cross/repo/repo.tbz
1147- tar xjf repo.tbz
1148- mv ./*.tar.gz $CIRRUS_WORKING_DIR/
1149alt_binaries_other_script:
1150- mkdir -p /tmp/alt
1151- cd /tmp/alt
1152- $ARTCURL/Alt%20Arch.%20Other%20Cross/repo/repo.tbz
1153- tar xjf repo.tbz
1154- mv ./*.tar.gz $CIRRUS_WORKING_DIR/
1155win_binaries_script:
1156- mkdir -p /tmp/win
1157- cd /tmp/win
1158- $ARTCURL/Windows%20Cross/repo/repo.tbz
1159- tar xjf repo.tbz
1160- mv ./podman-remote*.zip $CIRRUS_WORKING_DIR/
1161osx_binaries_script:
1162- mkdir -p /tmp/osx
1163- cd /tmp/osx
1164- $ARTCURL/OSX%20Cross/repo/repo.tbz
1165- tar xjf repo.tbz
1166- mv ./podman-remote-release-darwin_*.zip $CIRRUS_WORKING_DIR/
1167- mv ./contrib/pkginstaller/out/podman-installer-macos-*.pkg $CIRRUS_WORKING_DIR/
1168always:
1169contents_script: ls -la $CIRRUS_WORKING_DIR
1170# Produce downloadable files and an automatic zip-file accessible
1171# by a consistent URL, based on contents of $CIRRUS_WORKING_DIR
1172# Ref: https://cirrus-ci.org/guide/writing-tasks/#latest-build-artifacts
1173binary_artifacts:
1174path: ./*
1175type: application/octet-stream
1176
1177
1178# When a new tag is pushed, confirm that the code and commits
1179# meet criteria for an official release.
1180release_task:
1181name: "Verify Release"
1182alias: release
1183# This should _only_ run for new tags
1184# Docs: ./contrib/cirrus/CIModes.md
1185only_if: $CIRRUS_TAG != ''
1186depends_on:
1187- build_success
1188- success
1189gce_instance: *standardvm
1190env:
1191<<: *stdenvars
1192TEST_FLAVOR: release
1193clone_script: *get_gosrc
1194setup_script: *setup
1195main_script: *main
1196
1197
1198# When preparing to release a new version, this task may be manually
1199# activated at the PR stage to verify the build is proper for a potential
1200# podman release.
1201#
1202# Note: This cannot use a YAML alias on 'release_task' as of this
1203# comment, it is incompatible with 'trigger_type: manual'
1204release_test_task:
1205name: "Optional Release Test"
1206alias: release_test
1207# Release-PRs always include "release" or "Bump" in the title
1208# Docs: ./contrib/cirrus/CIModes.md
1209only_if: $CIRRUS_CHANGE_TITLE =~ '.*((release)|(bump)).*'
1210# Allow running manually only as part of release-related builds
1211# see RELEASE_PROCESS.md
1212trigger_type: manual
1213depends_on:
1214- build_success
1215- success
1216gce_instance: *standardvm
1217env:
1218<<: *stdenvars
1219TEST_FLAVOR: release
1220clone_script: *get_gosrc
1221setup_script: *setup
1222main_script: *main
1223