qemu/.gitlab-ci.d/base.yml
<<
>>
Prefs
   1
   2# The order of rules defined here is critically important.
   3# They are evaluated in order and first match wins.
   4#
   5# Thus we group them into a number of stages, ordered from
   6# most restrictive to least restrictive
   7#
   8.base_job_template:
   9  variables:
  10    # Each script line from will be in a collapsible section in the job output
  11    # and show the duration of each line.
  12    FF_SCRIPT_SECTIONS: 1
  13
  14  interruptible: true
  15
  16  rules:
  17    #############################################################
  18    # Stage 1: exclude scenarios where we definitely don't
  19    # want jobs to run
  20    #############################################################
  21
  22    # Cirrus jobs can't run unless the creds / target repo are set
  23    - if: '$QEMU_JOB_CIRRUS && ($CIRRUS_GITHUB_REPO == null || $CIRRUS_API_TOKEN == null)'
  24      when: never
  25
  26    # Publishing jobs should only run on the default branch in upstream
  27    - if: '$QEMU_JOB_PUBLISH == "1" && $CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH'
  28      when: never
  29
  30    # Non-publishing jobs should only run on staging branches in upstream
  31    - if: '$QEMU_JOB_PUBLISH != "1" && $CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH !~ /staging/'
  32      when: never
  33
  34    # Jobs only intended for forks should always be skipped on upstream
  35    - if: '$QEMU_JOB_ONLY_FORKS == "1" && $CI_PROJECT_NAMESPACE == "qemu-project"'
  36      when: never
  37
  38    # Forks don't get pipelines unless QEMU_CI=1 or QEMU_CI=2 is set
  39    - if: '$QEMU_CI != "1" && $QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != "qemu-project"'
  40      when: never
  41
  42    # Avocado jobs don't run in forks unless $QEMU_CI_AVOCADO_TESTING is set
  43    - if: '$QEMU_JOB_AVOCADO && $QEMU_CI_AVOCADO_TESTING != "1" && $CI_PROJECT_NAMESPACE != "qemu-project"'
  44      when: never
  45
  46
  47    #############################################################
  48    # Stage 2: fine tune execution of jobs in specific scenarios
  49    # where the catch all logic is inapprorpaite
  50    #############################################################
  51
  52    # Optional jobs should not be run unless manually triggered
  53    - if: '$QEMU_JOB_OPTIONAL'
  54      when: manual
  55      allow_failure: true
  56
  57    # Skipped jobs should not be run unless manually triggered
  58    - if: '$QEMU_JOB_SKIPPED'
  59      when: manual
  60      allow_failure: true
  61
  62    # Avocado jobs can be manually start in forks if $QEMU_CI_AVOCADO_TESTING is unset
  63    - if: '$QEMU_JOB_AVOCADO && $CI_PROJECT_NAMESPACE != "qemu-project"'
  64      when: manual
  65      allow_failure: true
  66
  67
  68    #############################################################
  69    # Stage 3: catch all logic applying to any job not matching
  70    # an earlier criteria
  71    #############################################################
  72
  73    # Forks pipeline jobs don't start automatically unless
  74    # QEMU_CI=2 is set
  75    - if: '$QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != "qemu-project"'
  76      when: manual
  77
  78    # Jobs can run if any jobs they depend on were successful
  79    - when: on_success
  80