OSDN Git Service

gitlab: add FF_SCRIPT_SECTIONS for timings
[qmiga/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   rules:
15     #############################################################
16     # Stage 1: exclude scenarios where we definitely don't
17     # want jobs to run
18     #############################################################
19
20     # Cirrus jobs can't run unless the creds / target repo are set
21     - if: '$QEMU_JOB_CIRRUS && ($CIRRUS_GITHUB_REPO == null || $CIRRUS_API_TOKEN == null)'
22       when: never
23
24     # Publishing jobs should only run on the default branch in upstream
25     - if: '$QEMU_JOB_PUBLISH == "1" && $CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH'
26       when: never
27
28     # Non-publishing jobs should only run on staging branches in upstream
29     - if: '$QEMU_JOB_PUBLISH != "1" && $CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH !~ /staging/'
30       when: never
31
32     # Jobs only intended for forks should always be skipped on upstream
33     - if: '$QEMU_JOB_ONLY_FORKS == "1" && $CI_PROJECT_NAMESPACE == "qemu-project"'
34       when: never
35
36     # Forks don't get pipelines unless QEMU_CI=1 or QEMU_CI=2 is set
37     - if: '$QEMU_CI != "1" && $QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != "qemu-project"'
38       when: never
39
40     # Avocado jobs don't run in forks unless $QEMU_CI_AVOCADO_TESTING is set
41     - if: '$QEMU_JOB_AVOCADO && $QEMU_CI_AVOCADO_TESTING != "1" && $CI_PROJECT_NAMESPACE != "qemu-project"'
42       when: never
43
44
45     #############################################################
46     # Stage 2: fine tune execution of jobs in specific scenarios
47     # where the catch all logic is inapprorpaite
48     #############################################################
49
50     # Optional jobs should not be run unless manually triggered
51     - if: '$QEMU_JOB_OPTIONAL'
52       when: manual
53       allow_failure: true
54
55     # Skipped jobs should not be run unless manually triggered
56     - if: '$QEMU_JOB_SKIPPED'
57       when: manual
58       allow_failure: true
59
60     # Avocado jobs can be manually start in forks if $QEMU_CI_AVOCADO_TESTING is unset
61     - if: '$QEMU_JOB_AVOCADO && $CI_PROJECT_NAMESPACE != "qemu-project"'
62       when: manual
63       allow_failure: true
64
65
66     #############################################################
67     # Stage 3: catch all logic applying to any job not matching
68     # an earlier criteria
69     #############################################################
70
71     # Forks pipeline jobs don't start automatically unless
72     # QEMU_CI=2 is set
73     - if: '$QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != "qemu-project"'
74       when: manual
75
76     # Jobs can run if any jobs they depend on were successfull
77     - when: on_success