Use anchors on JJB verify / merge job definitions
[releng/global-jjb.git] / jjb / lf-ci-jobs.yaml
1 ---
2 - job-group:
3     name: '{project-name}-ci-jobs'
4
5     # This job group contains all the recommended jobs that should be deployed
6     # for any project ci.
7
8     jjb-version: 1.6.2
9
10     jobs:
11       - '{project-name}-jjb-merge'
12       - '{project-name}-jjb-verify'
13
14 ####################
15 # Anchors & Macros #
16 ####################
17
18 - builder:
19     name: lf-infra-jjbini
20     builders:
21       - config-file-provider:
22           files:
23             - file-id: jjbini
24               target: '$HOME/.config/jenkins_jobs/jenkins_jobs.ini'
25
26 - lf_jjb_file_paths: &lf_jjb_file_paths
27     name: lf-jjb-file-paths
28     file-paths:
29       - compare-type: ANT
30         pattern: '**/*.sh'
31       - compare-type: ANT
32         pattern: '**/*.yaml'
33
34 - lf_jjb_merge_builders: &lf_jjb_merge_builders
35     name: lf-jjb-merge-builders
36     builders:
37       - lf-infra-jjbini
38       - shell: !include-raw-escape:
39           - ../shell/jjb-install.sh
40           - ../shell/jjb-merge-job.sh
41
42 - lf_jjb_verify_builders: &lf_jjb_verify_builders
43     name: lf-jjb-verfy-builders
44     builders:
45       - lf-infra-jjbini
46       - shell: !include-raw-escape:
47           - ../shell/jjb-install.sh
48           - ../shell/jjb-verify-job.sh
49           - ../shell/jjb-check-unicode.sh
50       - gpg-verify-git-signature
51
52 - parameter:
53     name: lf-infra-jjb-parameters
54     parameters:
55       - string:
56           name: JJB_VERSION
57           default: '{jjb-version}'
58           description: Jenkins Job Builder version to download and install.
59
60 #################
61 # Job Templates #
62 #################
63
64 # JJB verify and merge jobs are the same except for their scm, trigger, and
65 # builders definition. This anchor is the common template
66 - lf_jjb_verify_merge: &lf_jjb_verify_merge
67     name: lf-jjb-verify-merge
68     project-type: freestyle
69
70     node: '{build-node}'
71
72     ######################
73     # Default parameters #
74     ######################
75
76     branch: master
77     submodule-recursive: true
78
79     #####################
80     # Job Configuration #
81     #####################
82
83     properties:
84       - lf-infra-properties:
85           project: '{project}'
86           build-days-to-keep: 7
87
88     parameters:
89       - lf-infra-parameters:
90           project: '{project}'
91           branch: '{branch}'
92       - lf-infra-jjb-parameters:
93           jjb-version: '{jjb-version}'
94
95     wrappers:
96       - lf-infra-wrappers:
97           build-timeout: 10
98           jenkins-ssh-credential: '{jenkins-ssh-credential}'
99
100     publishers:
101       - lf-infra-publish
102
103 - job-template:
104     name: '{project-name}-jjb-merge'
105     <<: *lf_jjb_verify_merge
106     # yamllint disable-line rule:key-duplicates
107     <<: *lf_jjb_merge_builders
108
109     scm:
110       - lf-infra-gerrit-scm:
111           jenkins-ssh-credential: '{jenkins-ssh-credential}'
112           refspec: ''
113           branch: '{branch}'
114           submodule-recursive: '{submodule-recursive}'
115           choosing-strategy: default
116
117     triggers:
118       - gerrit:
119           server-name: '{gerrit-server-name}'
120           trigger-on:
121             - change-merged-event
122             - comment-added-contains-event:
123                 comment-contains-value: remerge$
124           projects:
125             - project-compare-type: ANT
126               project-pattern: '{project}'
127               branches:
128                 - branch-compare-type: ANT
129                   branch-pattern: '**/{branch}'
130               <<: *lf_jjb_file_paths
131
132 - job-template:
133     name: '{project-name}-jjb-verify'
134     concurrent: true
135     <<: *lf_jjb_verify_merge
136     # yamllint disable-line rule:key-duplicates
137     <<: *lf_jjb_verify_builders
138
139     scm:
140       - lf-infra-gerrit-scm:
141           refspec: '$GERRIT_REFSPEC'
142           branch: '$GERRIT_BRANCH'
143           submodule-recursive: '{submodule-recursive}'
144           choosing-strategy: gerrit
145           jenkins-ssh-credential: '{jenkins-ssh-credential}'
146
147     triggers:
148       - gerrit:
149           server-name: '{gerrit-server-name}'
150           trigger-on:
151             - patchset-created-event:
152                 exclude-drafts: false
153                 exclude-trivial-rebase: false
154                 exclude-no-code-change: false
155             - draft-published-event
156             - comment-added-contains-event:
157                 comment-contains-value: recheck$
158           projects:
159             - project-compare-type: ANT
160               project-pattern: '{project}'
161               branches:
162                 - branch-compare-type: ANT
163                   branch-pattern: '**/{branch}'
164               <<: *lf_jjb_file_paths