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