github.com/AbhinandanKurakure/podman/v3@v3.4.10/.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: "v3.4"
    10      # Overrides default location (/tmp/cirrus) for repo clone
    11      GOPATH: &gopath "/var/tmp/go"
    12      GOBIN: "${GOPATH}/bin"
    13      GOCACHE: "${GOPATH}/cache"
    14      GOSRC: &gosrc "/var/tmp/go/src/github.com/containers/podman"
    15      CIRRUS_WORKING_DIR: *gosrc
    16      # The default is 'sh' if unspecified
    17      CIRRUS_SHELL: "/bin/bash"
    18      # Save a little typing (path relative to $CIRRUS_WORKING_DIR)
    19      SCRIPT_BASE: "./contrib/cirrus"
    20      # Runner statistics log file path/name
    21      STATS_LOGFILE_SFX: 'runner_stats.log'
    22      STATS_LOGFILE: '$GOSRC/${CIRRUS_TASK_NAME}-${STATS_LOGFILE_SFX}'
    23  
    24      ####
    25      #### Cache-image names to test with (double-quotes around names are critical)
    26      ####
    27      FEDORA_NAME: "fedora-34"
    28      PRIOR_FEDORA_NAME: "fedora-33"
    29      UBUNTU_NAME: "ubuntu-2104"
    30  
    31      # Google-cloud VM Images
    32      IMAGE_SUFFIX: "c6431352024203264"
    33      FEDORA_CACHE_IMAGE_NAME: "fedora-${IMAGE_SUFFIX}"
    34      PRIOR_FEDORA_CACHE_IMAGE_NAME: "prior-fedora-${IMAGE_SUFFIX}"
    35      UBUNTU_CACHE_IMAGE_NAME: "ubuntu-${IMAGE_SUFFIX}"
    36  
    37      # Container FQIN's
    38      FEDORA_CONTAINER_FQIN: "quay.io/libpod/fedora_podman:${IMAGE_SUFFIX}"
    39      PRIOR_FEDORA_CONTAINER_FQIN: "quay.io/libpod/prior-fedora_podman:${IMAGE_SUFFIX}"
    40      UBUNTU_CONTAINER_FQIN: "quay.io/libpod/ubuntu_podman:${IMAGE_SUFFIX}"
    41  
    42      ####
    43      #### Control variables that determine what to run and how to run it.
    44      #### N/B: Required ALL of these are set for every single task.
    45      ####
    46      TEST_FLAVOR:             # int, sys, ext_svc, validate, automation, etc.
    47      TEST_ENVIRON: host       # 'host' or 'container'
    48      PODBIN_NAME: podman      # 'podman' or 'remote'
    49      PRIV_NAME: root          # 'root' or 'rootless'
    50      DISTRO_NV:               # any {PRIOR_,}{FEDORA,UBUNTU}_NAME value
    51      VM_IMAGE_NAME:           # One of the "Google-cloud VM Images" (above)
    52      CTR_FQIN:                # One of the "Container FQIN's" (above)
    53  
    54  
    55  # Default timeout for each task
    56  timeout_in: 60m
    57  
    58  
    59  gcp_credentials: ENCRYPTED[a28959877b2c9c36f151781b0a05407218cda646c7d047fc556e42f55e097e897ab63ee78369dae141dcf0b46a9d0cdd]
    60  
    61  
    62  # Attempt to prevent flakes by confirming all required external/3rd-party
    63  # services are available and functional.
    64  ext_svc_check_task:
    65      alias: 'ext_svc_check'  # int. ref. name - required for depends_on reference
    66      name: "Ext. services"  # Displayed Title - has no other significance
    67      skip: &tags "$CIRRUS_TAG != ''"  # Don't run on tags
    68      # Default/small container image to execute tasks with
    69      container: &smallcontainer
    70          image: ${CTR_FQIN}
    71          # Resources are limited across ALL currently executing tasks
    72          # ref: https://cirrus-ci.org/guide/linux/#linux-containers
    73          cpu: 2
    74          memory: 2
    75      env:
    76          TEST_FLAVOR: ext_svc
    77          CTR_FQIN: ${FEDORA_CONTAINER_FQIN}
    78      # NOTE: The default way Cirrus-CI clones is *NOT* compatible with
    79      #       environment expectations in contrib/cirrus/lib.sh.  Specifically
    80      #       the 'origin' remote must be defined, and all remote branches/tags
    81      #       must be available for reference from CI scripts.
    82      clone_script: &full_clone |
    83            cd /
    84            rm -rf $CIRRUS_WORKING_DIR
    85            mkdir -p $CIRRUS_WORKING_DIR
    86            git clone --recursive --branch=$DEST_BRANCH https://x-access-token:${CIRRUS_REPO_CLONE_TOKEN}@github.com/${CIRRUS_REPO_FULL_NAME}.git $CIRRUS_WORKING_DIR
    87            cd $CIRRUS_WORKING_DIR
    88            git remote update origin
    89            if [[ -n "$CIRRUS_PR" ]]; then # running for a PR
    90                git fetch origin pull/$CIRRUS_PR/head:pull/$CIRRUS_PR
    91                git checkout pull/$CIRRUS_PR
    92            else
    93                git reset --hard $CIRRUS_CHANGE_IN_REPO
    94            fi
    95            make install.tools
    96  
    97      setup_script: &setup '$GOSRC/$SCRIPT_BASE/setup_environment.sh'
    98      main_script: &main '/usr/bin/time --verbose --output="$STATS_LOGFILE" $GOSRC/$SCRIPT_BASE/runner.sh'
    99      always: &runner_stats
   100          runner_stats_artifacts:
   101              path: ./*-${STATS_LOGFILE_SFX}
   102              type: text/plain
   103  
   104  
   105  # Execute some quick checks to confirm this YAML file and all
   106  # automation-related shell scripts are sane.
   107  automation_task:
   108      alias: 'automation'
   109      name: "Check Automation"
   110      skip: &branches_and_tags "$CIRRUS_PR == '' || $CIRRUS_TAG != ''" # Don't run on branches/tags
   111      container: *smallcontainer
   112      env:
   113          TEST_FLAVOR: automation
   114          CTR_FQIN: ${FEDORA_CONTAINER_FQIN}
   115          TEST_ENVIRON: container
   116      clone_script: *full_clone
   117      setup_script: *setup
   118      main_script: *main
   119      always: *runner_stats
   120  
   121  
   122  # N/B: This task is critical.  It builds all binaries and release archives
   123  # for the project, using all primary OS platforms and versions.  Assuming
   124  # the builds are successful, a cache is stored of the entire `$GOPATH`
   125  # contents.  For all subsequent tasks, the _BUILD_CACHE_HANDLE value
   126  # is used as a key to reuse this cache, saving both time and money.
   127  # The only exceptions are tasks which only run inside a container, they
   128  # will not have access the cache and therefore must rely on cloning the
   129  # repository.
   130  build_task:
   131      alias: 'build'
   132      name: 'Build for $DISTRO_NV'
   133      gce_instance: &standardvm
   134          image_project: libpod-218412
   135          zone: "us-central1-a"
   136          cpu: 2
   137          memory: "4Gb"
   138          # Required to be 200gig, do not modify - has i/o performance impact
   139          # according to gcloud CLI tool warning messages.
   140          disk: 200
   141          image_name: "${VM_IMAGE_NAME}"  # from stdenvars
   142      matrix: &platform_axis
   143          # Ref: https://cirrus-ci.org/guide/writing-tasks/#matrix-modification
   144          - env: &stdenvars
   145                DISTRO_NV: ${FEDORA_NAME}
   146                # Not used here, is used in other tasks
   147                VM_IMAGE_NAME: ${FEDORA_CACHE_IMAGE_NAME}
   148                CTR_FQIN: ${FEDORA_CONTAINER_FQIN}
   149                # ID for re-use of build output
   150                _BUILD_CACHE_HANDLE: ${FEDORA_NAME}-build-${CIRRUS_BUILD_ID}
   151          - env: &priorfedora_envvars
   152                DISTRO_NV: ${PRIOR_FEDORA_NAME}
   153                VM_IMAGE_NAME: ${PRIOR_FEDORA_CACHE_IMAGE_NAME}
   154                CTR_FQIN: ${PRIOR_FEDORA_CONTAINER_FQIN}
   155                _BUILD_CACHE_HANDLE: ${PRIOR_FEDORA_NAME}-build-${CIRRUS_BUILD_ID}
   156          - env: &ubuntu_envvars
   157                DISTRO_NV: ${UBUNTU_NAME}
   158                VM_IMAGE_NAME: ${UBUNTU_CACHE_IMAGE_NAME}
   159                CTR_FQIN: ${UBUNTU_CONTAINER_FQIN}
   160                _BUILD_CACHE_HANDLE: ${UBUNTU_NAME}-build-${CIRRUS_BUILD_ID}
   161      env:
   162          TEST_FLAVOR: build
   163      # Ref: https://cirrus-ci.org/guide/writing-tasks/#cache-instruction
   164      gopath_cache:  &gopath_cache
   165          folder: *gopath  # Required hard-coded path, no variables.
   166          fingerprint_script: echo "$_BUILD_CACHE_HANDLE"
   167          # Cheat: Clone here when cache is empty, guaranteeing consistency.
   168          populate_script: *full_clone
   169      # A normal clone would invalidate useful cache
   170      clone_script: &noop mkdir -p $CIRRUS_WORKING_DIR
   171      setup_script: *setup
   172      main_script: *main
   173      always: &binary_artifacts
   174          <<: *runner_stats
   175          gosrc_artifacts:
   176              path: ./*  # Grab everything in top-level $GOSRC
   177              type: application/octet-stream
   178          binary_artifacts:
   179              path: ./bin/*
   180              type: application/octet-stream
   181  
   182  
   183  # Confirm the result of building on at least one platform appears sane.
   184  # This confirms the binaries can be executed, checks --help vs docs, and
   185  # other essential post-build validation checks.
   186  validate_task:
   187      name: "Validate $DISTRO_NV Build"
   188      alias: validate
   189      # This task is primarily intended to catch human-errors early on, in a
   190      # PR.  Skip it for branch-push, branch-create, and tag-push to improve
   191      # automation reliability/speed in those contexts.  Any missed errors due
   192      # to nonsequential PR merging practices, will be caught on a future PR,
   193      # build or test task failures.
   194      skip: *branches_and_tags
   195      depends_on:
   196          - ext_svc_check
   197          - automation
   198          - build
   199      # golangci-lint is a very, very hungry beast.
   200      gce_instance: &bigvm
   201          <<: *standardvm
   202          cpu: 8
   203          memory: "16Gb"
   204      env:
   205          <<: *stdenvars
   206          TEST_FLAVOR: validate
   207      gopath_cache: &ro_gopath_cache
   208          <<: *gopath_cache
   209          reupload_on_changes: false
   210      clone_script: *noop
   211      setup_script: *setup
   212      main_script: *main
   213      always: *runner_stats
   214  
   215  
   216  # Exercise the "libpod" API with a small set of common
   217  # operations to ensure they are functional.
   218  bindings_task:
   219      name: "Test Bindings"
   220      alias: bindings
   221      only_if: &not_docs $CIRRUS_CHANGE_TITLE !=~ '.*CI:DOCS.*'
   222      skip: *branches_and_tags
   223      depends_on:
   224          - build
   225      gce_instance: *standardvm
   226      env:
   227          <<: *stdenvars
   228          TEST_FLAVOR: bindings
   229      gopath_cache: *ro_gopath_cache
   230      clone_script: *noop  # Comes from cache
   231      setup_script: *setup
   232      main_script: *main
   233      always: &html_artifacts
   234          <<: *runner_stats
   235          # Required for `contrib/cirrus/logformatter` to work properly
   236          html_artifacts:
   237              path: ./*.html
   238              type: text/html
   239  
   240  
   241  # Build the "libpod" API documentation `swagger.yaml` and
   242  # publish it to google-cloud-storage (GCS).
   243  swagger_task:
   244      name: "Test Swagger"
   245      alias: swagger
   246      depends_on:
   247          - build
   248      gce_instance: *standardvm
   249      env:
   250          <<: *stdenvars
   251          TEST_FLAVOR: swagger
   252          # TODO: Due to podman 3.0 activity (including new images), avoid
   253          # disturbing the status-quo just to incorporate this one new
   254          # container image.  Uncomment line below when CI activities normalize.
   255          #CTR_FQIN: 'quay.io/libpod/gcsupld:${IMAGE_SUFFIX}'
   256          CTR_FQIN: 'quay.io/libpod/gcsupld:c4813063494828032'
   257          GCPJSON: ENCRYPTED[927dc01e755eaddb4242b0845cf86c9098d1e3dffac38c70aefb1487fd8b4fe6dd6ae627b3bffafaba70e2c63172664e]
   258          GCPNAME: ENCRYPTED[c145e9c16b6fb88d476944a454bf4c1ccc84bb4ecaca73bdd28bdacef0dfa7959ebc8171a27b2e4064d66093b2cdba49]
   259          GCPPROJECT: 'libpod-218412'
   260      gopath_cache: *ro_gopath_cache
   261      clone_script: *noop  # Comes from cache
   262      setup_script: *setup
   263      main_script: *main
   264      always: *binary_artifacts
   265  
   266  
   267  # Check that all included go modules from other sources match
   268  # what is expected in `vendor/modules.txt` vs `go.mod`.  Also
   269  # make sure that the generated bindings in pkg/bindings/...
   270  # are in sync with the code.
   271  consistency_task:
   272      name: "Test Code Consistency"
   273      alias: consistency
   274      skip: *tags
   275      depends_on:
   276          - build
   277      container: *smallcontainer
   278      env:
   279          <<: *stdenvars
   280          TEST_FLAVOR: consistency
   281          TEST_ENVIRON: container
   282          CTR_FQIN: ${FEDORA_CONTAINER_FQIN}
   283      clone_script: *full_clone  # build-cache not available to container tasks
   284      setup_script: *setup
   285      main_script: *main
   286      always: *runner_stats
   287  
   288  
   289  # There are several other important variations of podman which
   290  # must always build successfully.  Most of them are handled in
   291  # this task, though a few need dedicated tasks which follow.
   292  alt_build_task:
   293      name: "$ALT_NAME"
   294      alias: alt_build
   295      only_if: *not_docs
   296      depends_on:
   297          - build
   298      env:
   299          <<: *stdenvars
   300          TEST_FLAVOR: "altbuild"
   301      gce_instance: *standardvm
   302      matrix:
   303        - env:
   304              ALT_NAME: 'Build Each Commit'
   305        - env:
   306              ALT_NAME: 'Windows Cross'
   307        - env:
   308              ALT_NAME: 'Build Without CGO'
   309        - env:
   310              ALT_NAME: 'Test build RPM'
   311        - env:
   312              ALT_NAME: 'Alt Arch. Cross'
   313      gopath_cache: *ro_gopath_cache
   314      clone_script: *noop  # Comes from cache
   315      setup_script: *setup
   316      main_script: *main
   317      always: *binary_artifacts
   318  
   319  
   320  # Confirm building a statically-linked binary is successful
   321  static_alt_build_task:
   322      name: "Static Build"
   323      alias: static_alt_build
   324      only_if: *not_docs
   325      depends_on:
   326          - build
   327      # Community-maintained task, may fail on occasion.  If so, uncomment
   328      # the next line and file an issue with details about the failure.
   329      # allow_failures: $CI == $CI
   330      gce_instance: *bigvm
   331      env:
   332          <<: *stdenvars
   333          TEST_FLAVOR: "altbuild"
   334          # gce_instance variation prevents this being included in alt_build_task
   335          ALT_NAME: 'Static build'
   336          # Do not use 'latest', fixed-version tag for runtime stability.
   337          CTR_FQIN: "docker.io/nixos/nix:2.3.6"
   338          # Authentication token for pushing the build cache to cachix.
   339          # This is critical, it helps to avoid a very lengthy process of
   340          # statically building every dependency needed to build podman.
   341          # Assuming the pinned nix dependencies in nix/nixpkgs.json have not
   342          # changed, this cache will ensure that only the static podman binary is
   343          # built.
   344          CACHIX_AUTH_TOKEN: ENCRYPTED[df0d4d0a67474e8ea49cc503221dcb912b7e2ba45c8ec4bf2e5fd9c49a18ac21c24bacee59b5393355ed9e4358d2baef]
   345      setup_script: *setup
   346      main_script: *main
   347      always: *binary_artifacts
   348  
   349  
   350  # Confirm building the remote client, natively on a Mac OS-X VM.
   351  osx_alt_build_task:
   352      name: "OSX Cross"
   353      alias: osx_alt_build
   354      depends_on:
   355          - build
   356      env:
   357          <<: *stdenvars
   358          # OSX platform variation prevents this being included in alt_build_task
   359          TEST_FLAVOR: "altbuild"
   360          ALT_NAME: 'OSX Cross'
   361      osx_instance:
   362          image: 'catalina-base'
   363      script:
   364          - brew install go
   365          - brew install go-md2man
   366          - make podman-remote-release-darwin.zip
   367      always: *binary_artifacts
   368  
   369  
   370  # Verify podman is compatible with the docker python-module.
   371  docker-py_test_task:
   372      name: Docker-py Compat.
   373      alias: docker-py_test
   374      skip: *tags
   375      only_if: *not_docs
   376      depends_on:
   377          - build
   378      gce_instance: *standardvm
   379      env:
   380          <<: *stdenvars
   381          TEST_FLAVOR: docker-py
   382          TEST_ENVIRON: container
   383      gopath_cache: *ro_gopath_cache
   384      clone_script: *noop  # Comes from cache
   385      setup_script: *setup
   386      main_script: *main
   387      always: *runner_stats
   388  
   389  
   390  # Does exactly what it says, execute the podman unit-tests on all primary
   391  # platforms and release versions.
   392  unit_test_task:
   393      name: "Unit tests on $DISTRO_NV"
   394      alias: unit_test
   395      skip: *tags
   396      only_if: *not_docs
   397      depends_on:
   398          - validate
   399      matrix:
   400          - env: *stdenvars
   401          - env: *priorfedora_envvars
   402          - env: *ubuntu_envvars
   403          # Special-case: Rootless on latest Fedora (standard) VM
   404          - name: "Rootless unit on $DISTRO_NV"
   405            env:
   406                <<: *stdenvars
   407                PRIV_NAME: rootless
   408      gce_instance: *standardvm
   409      env:
   410          TEST_FLAVOR: unit
   411      clone_script: *noop  # Comes from cache
   412      gopath_cache: *ro_gopath_cache
   413      setup_script: *setup
   414      main_script: *main
   415      always: *runner_stats
   416  
   417  
   418  apiv2_test_task:
   419      name: "APIv2 test on $DISTRO_NV"
   420      alias: apiv2_test
   421      only_if: *not_docs
   422      skip: *tags
   423      depends_on:
   424          - validate
   425      gce_instance: *standardvm
   426      # Test is normally pretty quick, about 10-minutes.  If it hangs,
   427      # don't make developers wait the full 1-hour timeout.
   428      timeout_in: 20m
   429      env:
   430          <<: *stdenvars
   431          TEST_FLAVOR: apiv2
   432      clone_script: *noop  # Comes from cache
   433      gopath_cache: *ro_gopath_cache
   434      setup_script: *setup
   435      main_script: *main
   436      always: &logs_artifacts
   437          <<: *html_artifacts
   438          package_versions_script: '$SCRIPT_BASE/logcollector.sh packages'
   439          df_script: '$SCRIPT_BASE/logcollector.sh df'
   440          audit_log_script: '$SCRIPT_BASE/logcollector.sh audit'
   441          journal_script: '$SCRIPT_BASE/logcollector.sh journal'
   442          podman_system_info_script: '$SCRIPT_BASE/logcollector.sh podman'
   443          time_script: '$SCRIPT_BASE/logcollector.sh time'
   444  
   445  compose_test_task:
   446      name: "compose test on $DISTRO_NV ($PRIV_NAME)"
   447      alias: compose_test
   448      only_if: *not_docs
   449      skip: *tags
   450      depends_on:
   451          - validate
   452      gce_instance: *standardvm
   453      env:
   454          <<: *stdenvars
   455          TEST_FLAVOR: compose
   456      matrix:
   457        - env:
   458              PRIV_NAME: root
   459        - env:
   460              PRIV_NAME: rootless
   461      clone_script: *noop  # Comes from cache
   462      gopath_cache: *ro_gopath_cache
   463      setup_script: *setup
   464      main_script: *main
   465      always: *logs_artifacts
   466  
   467  
   468  # Execute the podman integration tests on all primary platforms and release
   469  # versions, as root, without involving the podman-remote client.
   470  local_integration_test_task: &local_integration_test_task
   471      # Integration-test task name convention:
   472      # <int.|sys.> <podman|remote> <Distro NV> <root|rootless>
   473      name: &std_name_fmt "$TEST_FLAVOR $PODBIN_NAME $DISTRO_NV $PRIV_NAME $TEST_ENVIRON"
   474      alias: local_integration_test
   475      only_if: *not_docs
   476      skip: *branches_and_tags
   477      depends_on:
   478          - unit_test
   479      matrix: *platform_axis
   480      gce_instance: *standardvm
   481      timeout_in: 90m
   482      env:
   483          TEST_FLAVOR: int
   484      clone_script: *noop  # Comes from cache
   485      gopath_cache: *ro_gopath_cache
   486      setup_script: *setup
   487      main_script: *main
   488      always: &int_logs_artifacts
   489          <<: *logs_artifacts
   490          ginkgo_node_logs_artifacts:
   491              path: ./test/e2e/ginkgo-node-*.log
   492              type: text/plain
   493  
   494  
   495  # Nearly identical to `local_integration_test` except all operations
   496  # are performed through the podman-remote client vs a podman "server"
   497  # running on the same host.
   498  remote_integration_test_task:
   499      <<: *local_integration_test_task
   500      alias: remote_integration_test
   501      env:
   502          TEST_FLAVOR: int
   503          PODBIN_NAME: remote
   504  
   505  
   506  # Run the complete set of integration tests from inside a container.
   507  # This verifies all/most operations function with "podman-in-podman".
   508  container_integration_test_task:
   509      name: *std_name_fmt
   510      alias: container_integration_test
   511      only_if: *not_docs
   512      skip: *branches_and_tags
   513      depends_on:
   514          - unit_test
   515      matrix: &fedora_vm_axis
   516          - env:
   517                DISTRO_NV: ${FEDORA_NAME}
   518                _BUILD_CACHE_HANDLE: ${FEDORA_NAME}-build-${CIRRUS_BUILD_ID}
   519                VM_IMAGE_NAME: ${FEDORA_CACHE_IMAGE_NAME}
   520                CTR_FQIN: ${FEDORA_CONTAINER_FQIN}
   521          - env:
   522                DISTRO_NV: ${PRIOR_FEDORA_NAME}
   523                _BUILD_CACHE_HANDLE: ${PRIOR_FEDORA_NAME}-build-${CIRRUS_BUILD_ID}
   524                VM_IMAGE_NAME: ${PRIOR_FEDORA_CACHE_IMAGE_NAME}
   525                CTR_FQIN: ${PRIOR_FEDORA_CONTAINER_FQIN}
   526      gce_instance: *standardvm
   527      timeout_in: 90m
   528      env:
   529          TEST_FLAVOR: int
   530          TEST_ENVIRON: container
   531      clone_script: *noop  # Comes from cache
   532      gopath_cache: *ro_gopath_cache
   533      setup_script: *setup
   534      main_script: *main
   535      always: *int_logs_artifacts
   536  
   537  
   538  # Execute most integration tests as a regular (non-root) user.
   539  rootless_integration_test_task:
   540      name: *std_name_fmt
   541      alias: rootless_integration_test
   542      only_if: *not_docs
   543      skip: *branches_and_tags
   544      depends_on:
   545          - unit_test
   546      matrix: *platform_axis
   547      gce_instance: *standardvm
   548      timeout_in: 90m
   549      env:
   550          TEST_FLAVOR: int
   551          PRIV_NAME: rootless
   552      clone_script: *noop  # Comes from cache
   553      gopath_cache: *ro_gopath_cache
   554      setup_script: *setup
   555      main_script: *main
   556      always: *int_logs_artifacts
   557  
   558  
   559  # Always run subsequent to integration tests.  While parallelism is lost
   560  # with runtime, debugging system-test failures can be more challenging
   561  # for some golang developers.  Otherwise the following tasks run across
   562  # the same matrix as the integration-tests (above).
   563  local_system_test_task: &local_system_test_task
   564      name: *std_name_fmt
   565      alias: local_system_test
   566      skip: *tags
   567      only_if: *not_docs
   568      depends_on:
   569        - local_integration_test
   570      matrix: *platform_axis
   571      gce_instance: *standardvm
   572      env:
   573          TEST_FLAVOR: sys
   574      clone_script: *noop  # Comes from cache
   575      gopath_cache: *ro_gopath_cache
   576      setup_script: *setup
   577      main_script: *main
   578      always: *logs_artifacts
   579  
   580  
   581  remote_system_test_task:
   582      <<: *local_system_test_task
   583      alias: remote_system_test
   584      depends_on:
   585        - remote_integration_test
   586      env:
   587          TEST_FLAVOR: sys
   588          PODBIN_NAME: remote
   589  
   590  buildah_bud_test_task:
   591      name: *std_name_fmt
   592      alias: buildah_bud_test
   593      skip: *tags
   594      only_if: *not_docs
   595      depends_on:
   596        - local_integration_test
   597      env:
   598          TEST_FLAVOR: bud
   599          DISTRO_NV: ${FEDORA_NAME}
   600          # Not used here, is used in other tasks
   601          VM_IMAGE_NAME: ${FEDORA_CACHE_IMAGE_NAME}
   602          CTR_FQIN: ${FEDORA_CONTAINER_FQIN}
   603          # ID for re-use of build output
   604          _BUILD_CACHE_HANDLE: ${FEDORA_NAME}-build-${CIRRUS_BUILD_ID}
   605      matrix:
   606          - env:
   607              PODBIN_NAME: podman
   608          - env:
   609              PODBIN_NAME: remote
   610      gce_instance: *standardvm
   611      timeout_in: 45m
   612      clone_script: *noop
   613      gopath_cache: *ro_gopath_cache
   614      setup_script: *setup
   615      main_script: *main
   616      always: *int_logs_artifacts
   617  
   618  rootless_system_test_task:
   619      name: *std_name_fmt
   620      alias: rootless_system_test
   621      skip: *tags
   622      only_if: *not_docs
   623      depends_on:
   624        - rootless_integration_test
   625      matrix: *platform_axis
   626      gce_instance: *standardvm
   627      env:
   628          TEST_FLAVOR: sys
   629          PRIV_NAME: rootless
   630      clone_script: *noop  # Comes from cache
   631      gopath_cache: *ro_gopath_cache
   632      setup_script: *setup
   633      main_script: *main
   634      always: *logs_artifacts
   635  
   636  upgrade_test_task:
   637      name: "Upgrade test: from $PODMAN_UPGRADE_FROM"
   638      alias: upgrade_test
   639      skip: *tags
   640      only_if: $CIRRUS_CHANGE_TITLE !=~ '.*CI:DOCS.*' || $CIRRUS_CRON != ''
   641      depends_on:
   642        - local_system_test
   643      matrix:
   644          - env:
   645                PODMAN_UPGRADE_FROM: v1.9.0
   646          - env:
   647                PODMAN_UPGRADE_FROM: v2.0.6
   648          - env:
   649                PODMAN_UPGRADE_FROM: v2.1.1
   650          - env:
   651                PODMAN_UPGRADE_FROM: v3.1.2
   652      gce_instance: *standardvm
   653      env:
   654          TEST_FLAVOR: upgrade_test
   655          DISTRO_NV: ${FEDORA_NAME}
   656          VM_IMAGE_NAME: ${FEDORA_CACHE_IMAGE_NAME}
   657          # ID for re-use of build output
   658          _BUILD_CACHE_HANDLE: ${FEDORA_NAME}-build-${CIRRUS_BUILD_ID}
   659      clone_script: *noop
   660      gopath_cache: *ro_gopath_cache
   661      setup_script: *setup
   662      main_script: *main
   663      always: *logs_artifacts
   664  
   665  # This task is critical.  It updates the "last-used by" timestamp stored
   666  # in metadata for all VM images.  This mechanism functions in tandem with
   667  # an out-of-band pruning operation to remove disused VM images.
   668  meta_task:
   669      name: "VM img. keepalive"
   670      alias: meta
   671      container:
   672          cpu: 2
   673          memory: 2
   674          image: quay.io/libpod/imgts:$IMAGE_SUFFIX
   675      env:
   676          # Space-separated list of images used by this repository state
   677          IMGNAMES: >-
   678              ${FEDORA_CACHE_IMAGE_NAME}
   679              ${PRIOR_FEDORA_CACHE_IMAGE_NAME}
   680              ${UBUNTU_CACHE_IMAGE_NAME}
   681          BUILDID: "${CIRRUS_BUILD_ID}"
   682          REPOREF: "${CIRRUS_REPO_NAME}"
   683          GCPJSON: ENCRYPTED[3a198350077849c8df14b723c0f4c9fece9ebe6408d35982e7adf2105a33f8e0e166ed3ed614875a0887e1af2b8775f4]
   684          GCPNAME: ENCRYPTED[2f9738ef295a706f66a13891b40e8eaa92a89e0e87faf8bed66c41eca72bf76cfd190a6f2d0e8444c631fdf15ed32ef6]
   685          GCPPROJECT: libpod-218412
   686      clone_script: *noop
   687      script: /usr/local/bin/entrypoint.sh
   688  
   689  
   690  # Status aggregator for all tests.  This task simply ensures a defined
   691  # set of tasks all passed, and allows confirming that based on the status
   692  # of this task.
   693  success_task:
   694      name: "Total Success"
   695      alias: success
   696      # N/B: ALL tasks must be listed here, minus their '_task' suffix.
   697      depends_on:
   698          - ext_svc_check
   699          - automation
   700          - build
   701          - validate
   702          - bindings
   703          - swagger
   704          - consistency
   705          - alt_build
   706          - static_alt_build
   707          - osx_alt_build
   708          - docker-py_test
   709          - unit_test
   710          - apiv2_test
   711          - compose_test
   712          - local_integration_test
   713          - remote_integration_test
   714          - rootless_integration_test
   715          - container_integration_test
   716          - local_system_test
   717          - remote_system_test
   718          - rootless_system_test
   719          - upgrade_test
   720          - buildah_bud_test
   721          - meta
   722      container: *smallcontainer
   723      env:
   724          CTR_FQIN: ${FEDORA_CONTAINER_FQIN}
   725          TEST_ENVIRON: container
   726      clone_script: *noop
   727      script: /bin/true
   728  
   729  
   730  # When a new tag is pushed, confirm that the code and commits
   731  # meet criteria for an official release.
   732  release_task:
   733      name: "Verify Release"
   734      alias: release
   735      only_if: *tags
   736      depends_on:
   737          - success
   738      gce_instance: *standardvm
   739      env:
   740          <<: *stdenvars
   741          TEST_FLAVOR: release
   742      gopath_cache: *ro_gopath_cache
   743      clone_script: *noop  # Comes from cache
   744      setup_script: *setup
   745      main_script: *main
   746      always: *binary_artifacts
   747  
   748  
   749  # When preparing to release a new version, this task may be manually
   750  # activated at the PR stage to verify the build is proper for a potential
   751  # podman release.
   752  #
   753  # Note: This cannot use a YAML alias on 'release_task' as of this
   754  # comment, it is incompatible with 'trigger_type: manual'
   755  release_test_task:
   756      name: "Optional Release Test"
   757      alias: release_test
   758      only_if: $CIRRUS_PR != ''
   759      trigger_type: manual
   760      depends_on:
   761          - success
   762      gce_instance: *standardvm
   763      env:
   764          <<: *stdenvars
   765          TEST_FLAVOR: release
   766      gopath_cache: *ro_gopath_cache
   767      clone_script: *noop  # Comes from cache
   768      setup_script: *setup
   769      main_script: *main
   770      always: *binary_artifacts