]> git.proxmox.com Git - mirror_qemu.git/blob - .gitlab-ci.d/base.yml
Merge tag 'pull-hex-20230421' of https://github.com/quic/qemu into staging
[mirror_qemu.git] / .gitlab-ci.d / base.yml
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