OSDN Git Service

gitlab: allow overriding name of the upstream repository
[qmiga/qemu.git] / .gitlab-ci.d / base.yml
1
2 variables:
3   # On stable branches this needs changing. Should also be
4   # 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 .base_job_template:
20   variables:
21     # Each script line from will be in a collapsible section in the job output
22     # and show the duration of each line.
23     FF_SCRIPT_SECTIONS: 1
24
25   interruptible: true
26
27   rules:
28     #############################################################
29     # Stage 1: exclude scenarios where we definitely don't
30     # want jobs to run
31     #############################################################
32
33     # Cirrus jobs can't run unless the creds / target repo are set
34     - if: '$QEMU_JOB_CIRRUS && ($CIRRUS_GITHUB_REPO == null || $CIRRUS_API_TOKEN == null)'
35       when: never
36
37     # Publishing jobs should only run on the default branch in upstream
38     - if: '$QEMU_JOB_PUBLISH == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH'
39       when: never
40
41     # Non-publishing jobs should only run on staging branches in upstream
42     - if: '$QEMU_JOB_PUBLISH != "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH !~ /staging/'
43       when: never
44
45     # Jobs only intended for forks should always be skipped on upstream
46     - if: '$QEMU_JOB_ONLY_FORKS == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM'
47       when: never
48
49     # Forks don't get pipelines unless QEMU_CI=1 or QEMU_CI=2 is set
50     - if: '$QEMU_CI != "1" && $QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM'
51       when: never
52
53     # Avocado jobs don't run in forks unless $QEMU_CI_AVOCADO_TESTING is set
54     - if: '$QEMU_JOB_AVOCADO && $QEMU_CI_AVOCADO_TESTING != "1" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM'
55       when: never
56
57
58     #############################################################
59     # Stage 2: fine tune execution of jobs in specific scenarios
60     # where the catch all logic is inapprorpaite
61     #############################################################
62
63     # Optional jobs should not be run unless manually triggered
64     - if: '$QEMU_JOB_OPTIONAL'
65       when: manual
66       allow_failure: true
67
68     # Skipped jobs should not be run unless manually triggered
69     - if: '$QEMU_JOB_SKIPPED'
70       when: manual
71       allow_failure: true
72
73     # Avocado jobs can be manually start in forks if $QEMU_CI_AVOCADO_TESTING is unset
74     - if: '$QEMU_JOB_AVOCADO && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM'
75       when: manual
76       allow_failure: true
77
78
79     #############################################################
80     # Stage 3: catch all logic applying to any job not matching
81     # an earlier criteria
82     #############################################################
83
84     # Forks pipeline jobs don't start automatically unless
85     # QEMU_CI=2 is set
86     - if: '$QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM'
87       when: manual
88
89     # Jobs can run if any jobs they depend on were successful
90     - when: on_success