intel_iommu: refine iotlb hash calculation
[qemu/kevin.git] / .gitlab-ci.d / base.yml
blob2fbb58d2a3b4f1eaee9a4b9544eb99fc273a0c34
2 # The order of rules defined here is critically important.
3 # They are evaluated in order and first match wins.
5 # Thus we group them into a number of stages, ordered from
6 # most restrictive to least restrictive
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
14   interruptible: true
16   rules:
17     #############################################################
18     # Stage 1: exclude scenarios where we definitely don't
19     # want jobs to run
20     #############################################################
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
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
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
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
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
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
47     #############################################################
48     # Stage 2: fine tune execution of jobs in specific scenarios
49     # where the catch all logic is inapprorpaite
50     #############################################################
52     # Optional jobs should not be run unless manually triggered
53     - if: '$QEMU_JOB_OPTIONAL'
54       when: manual
55       allow_failure: true
57     # Skipped jobs should not be run unless manually triggered
58     - if: '$QEMU_JOB_SKIPPED'
59       when: manual
60       allow_failure: true
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
68     #############################################################
69     # Stage 3: catch all logic applying to any job not matching
70     # an earlier criteria
71     #############################################################
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
78     # Jobs can run if any jobs they depend on were successful
79     - when: on_success