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  ![cirrus-task-map output](https://github.com/containers/podman/wiki/cirrus-map.svg)
    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