github.com/containers/podman/v4@v4.9.4/contrib/cirrus/CIModes.md (about) 1 The following is a list (incomplete) of the primary contexts and runtime 2 "modes" supported by podman CI. Note that there may be additional checks 3 done regarding "skipping work" in the `runner.sh` script. This document 4 only details the controls at the `.cirrus.yml` level. 5 6 ## Visualization 7 8 The relationship between tasks can be incredibly hard to understand by 9 staring at the YAML. 10 [A tool exists](https://github.com/containers/automation/tree/main/cirrus-task-map) 11 for producing a graph (flow-chart) of the `.cirrus.yml` file. A (possibly 12 outdated) example of it's output can be seen below: 13 14  15 16 ## Implementation notes 17 18 + The `skip` conditional should never be used for tasks. 19 While it's arguably easier to read that `only_if`, it leads to a cluttered 20 status output that's harder to page through when reviewing PRs. As opposed 21 to `only_if` which will bypass creation of the task (at runtime) completely. 22 Also, by sticking to one conditional style, it's easier to re-use the YAML 23 statements across multiple tasks. 24 25 + The only variables which can be used as part of conditions are defined by 26 Cirrus-CI. 27 [The list is documented](https://cirrus-ci.org/guide/writing-tasks/#environment-variables). Reference to any variables defined in YAML will **not** behave how 28 you expect, don't use them! 29 30 * Some Cirrus-CI defined variables contain non-empty values outside their 31 obvious context. For example, when running for a PR a task will have 32 `$CIRRUS_BRANCH` set to `pull/<number>`. 33 34 * Conditions which use positive or negative regular-expressions have several 35 "flags" set: "Multi-line" and "Case-insensitive". 36 37 ## Testing 38 39 Executing most of the modes can be mocked by forcing values for (otherwise) 40 Cirrus-CI defined variables. For example `$CIRRUS_TAG`. As of the publishing 41 of this document, it's not possible to override the behavior of `$CIRRUS_PR`. 42 43 ## Cirrus Task contexts and runtime modes 44 45 ### Intended general PR Tasks (*italic*: matrix) 46 + *build* 47 + validate 48 + bindings 49 + swagger 50 + *alt_build* 51 + osx_alt_build 52 + freebsd_alt_build 53 + docker-py_test 54 + *unit_test* 55 + apiv2_test 56 + *compose_test* 57 + *local_integration_test* 58 + *remote_integration_test* 59 + *container_integration_test* 60 + *rootless_integration_test* 61 + *local_system_test* 62 + *remote_system_test* 63 + *rootless_remote_system_test* 64 + *buildah_bud_test* 65 + *rootless_system_test* 66 + rootless_gitlab_test 67 + *upgrade_test* 68 + meta 69 + success 70 + artifacts 71 72 ### Intended for PR w/ "release" or "bump" in title: 73 + (All the general PR tasks above) 74 + release_test 75 76 ### Intended `[CI:DOCS]` PR Tasks: 77 + *build* 78 + validate 79 + swagger 80 + meta 81 + success 82 83 ### Intended `[CI:BUILD]` PR Tasks: 84 + *build* 85 + validate 86 + *alt_build* 87 + osx_alt_build 88 + freebsd_alt_build 89 + test_image_build 90 + meta 91 + success 92 + artifacts 93 94 ### Intended `[CI:NEXT]` behavior: 95 96 If and only if the PR is in **draft-mode**, update Fedora CI VMs at runtime 97 to the latest packages available in the podman-next COPR repo. These packages 98 represent primary podman dependencies, and are regularly built from their 99 upstream repos. These are **runtime changes** only, and will not persist 100 or impact other PRs in any way. 101 102 The intent is to temporarily support testing of updates with the latest podman 103 code & tests. To help prevent accidents, when the PR is not in draft-mode, the 104 presence of the magic string will cause VM-setup script to fail, until the magic 105 is removed. 106 107 **Note:** When changing the draft-status of PR, you will need to re-push a 108 commit-change before Cirrus-CI will notice the draft-status update (i.e. 109 pressing the re-run button **is not** good enough). 110 111 ### Intended Branch tasks (and Cirrus-cron jobs): 112 + *build* 113 + swagger 114 + *alt_build* 115 + osx_alt_build 116 + freebsd_alt_build 117 + *local_system_test* 118 + *remote_system_test* 119 + *rootless_remote_system_test* 120 + *rootless_system_test* 121 + meta 122 + success 123 + artifacts 124 125 ### Intended for new Tag tasks: 126 + *build* 127 + swagger 128 + *alt_build* 129 + osx_alt_build 130 + freebsd_alt_build 131 + meta 132 + success 133 + artifacts 134 + release