]> git.proxmox.com Git - mirror_qemu.git/blob - .gitlab-ci.d/base.yml
hw/i386/pc: Use qdev_prop_set_array()
[mirror_qemu.git] / .gitlab-ci.d / base.yml
1
2 variables:
3 # On stable branches this is changed by later rules. Should also
4 # be overridden per pipeline if running pipelines concurrently
5 # for different branches in contributor forks.
6 QEMU_CI_CONTAINER_TAG: latest
7
8 # For purposes of CI rules, upstream is the gitlab.com/qemu-project
9 # namespace. When testing CI, it might be usefult to override this
10 # to point to a fork repo
11 QEMU_CI_UPSTREAM: qemu-project
12
13 # The order of rules defined here is critically important.
14 # They are evaluated in order and first match wins.
15 #
16 # Thus we group them into a number of stages, ordered from
17 # most restrictive to least restrictive
18 #
19 # For pipelines running for stable "staging-X.Y" branches
20 # we must override QEMU_CI_CONTAINER_TAG
21 #
22 .base_job_template:
23 variables:
24 # Each script line from will be in a collapsible section in the job output
25 # and show the duration of each line.
26 FF_SCRIPT_SECTIONS: 1
27
28 interruptible: true
29
30 rules:
31 #############################################################
32 # Stage 1: exclude scenarios where we definitely don't
33 # want jobs to run
34 #############################################################
35
36 # Never run jobs upstream on stable branch, staging branch jobs already ran
37 - if: '$CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /^stable-/'
38 when: never
39
40 # Never run jobs upstream on tags, staging branch jobs already ran
41 - if: '$CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_TAG'
42 when: never
43
44 # Cirrus jobs can't run unless the creds / target repo are set
45 - if: '$QEMU_JOB_CIRRUS && ($CIRRUS_GITHUB_REPO == null || $CIRRUS_API_TOKEN == null)'
46 when: never
47
48 # Publishing jobs should only run on the default branch in upstream
49 - if: '$QEMU_JOB_PUBLISH == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH'
50 when: never
51
52 # Non-publishing jobs should only run on staging branches in upstream
53 - if: '$QEMU_JOB_PUBLISH != "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH !~ /staging/'
54 when: never
55
56 # Jobs only intended for forks should always be skipped on upstream
57 - if: '$QEMU_JOB_ONLY_FORKS == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM'
58 when: never
59
60 # Forks don't get pipelines unless QEMU_CI=1 or QEMU_CI=2 is set
61 - if: '$QEMU_CI != "1" && $QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM'
62 when: never
63
64 # Avocado jobs don't run in forks unless $QEMU_CI_AVOCADO_TESTING is set
65 - if: '$QEMU_JOB_AVOCADO && $QEMU_CI_AVOCADO_TESTING != "1" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM'
66 when: never
67
68
69 #############################################################
70 # Stage 2: fine tune execution of jobs in specific scenarios
71 # where the catch all logic is inappropriate
72 #############################################################
73
74 # Optional jobs should not be run unless manually triggered
75 - if: '$QEMU_JOB_OPTIONAL && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/'
76 when: manual
77 allow_failure: true
78 variables:
79 QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG
80
81 - if: '$QEMU_JOB_OPTIONAL'
82 when: manual
83 allow_failure: true
84
85 # Skipped jobs should not be run unless manually triggered
86 - if: '$QEMU_JOB_SKIPPED && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/'
87 when: manual
88 allow_failure: true
89 variables:
90 QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG
91
92 - if: '$QEMU_JOB_SKIPPED'
93 when: manual
94 allow_failure: true
95
96 # Avocado jobs can be manually start in forks if $QEMU_CI_AVOCADO_TESTING is unset
97 - if: '$QEMU_JOB_AVOCADO && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM'
98 when: manual
99 allow_failure: true
100
101
102 #############################################################
103 # Stage 3: catch all logic applying to any job not matching
104 # an earlier criteria
105 #############################################################
106
107 # Forks pipeline jobs don't start automatically unless
108 # QEMU_CI=2 is set
109 - if: '$QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM'
110 when: manual
111
112 # Upstream pipeline jobs start automatically unless told not to
113 # by setting QEMU_CI=1
114 - if: '$QEMU_CI == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/'
115 when: manual
116 variables:
117 QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG
118
119 - if: '$QEMU_CI == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM'
120 when: manual
121
122 # Jobs can run if any jobs they depend on were successful
123 - if: '$QEMU_JOB_SKIPPED && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/'
124 when: on_success
125 variables:
126 QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG
127
128 - when: on_success