RTD Merge job GTriggers should be overridable
[releng/global-jjb.git] / jjb / lf-rtd-jobs.yaml
1 ---
2 - job-group:
3     name: '{project-name}-rtd-jobs'
4
5     # This job group contains all the ReadTheDocs jobs
6
7     jobs:
8       - gerrit-rtd-merge
9       - gerrit-rtd-verify
10
11 - job-group:
12     name: '{project-name}-github-rtd-jobs'
13
14     # This job group contains all the ReadTheDocs jobs
15
16     jobs:
17       - github-rtd-merge
18       - github-rtd-verify
19
20 ####################
21 # COMMON FUNCTIONS #
22 ####################
23
24 - lf_rtd_common: &lf_rtd_common
25     name: lf-rtd-common
26     # RTD verify and merge jobs are the same except for their scm, trigger, and
27     # builders definition. This anchor is the common template.
28
29     ######################
30     # Default parameters #
31     ######################
32
33     gerrit_trigger_file_paths:
34       - compare-type: ANT
35         pattern: '**/*.rst'
36       - compare-type: ANT
37         pattern: '**/conf.py'
38
39     #####################
40     # Job Configuration #
41     #####################
42
43     project-type: freestyle
44     node: '{build-node}'
45
46     properties:
47       - lf-infra-properties:
48           build-days-to-keep: 7
49
50     parameters:
51       - lf-infra-parameters:
52           project: '{project}'
53           branch: '{branch}'
54           refspec: 'refs/heads/{branch}'
55           stream: '{stream}'
56           lftools-version: '{lftools-version}'
57
58     wrappers:
59       - lf-infra-wrappers:
60           build-timeout: '{build-timeout}'
61           jenkins-ssh-credential: '{jenkins-ssh-credential}'
62
63     publishers:
64       - lf-infra-publish
65
66 #############
67 # RTD MERGE #
68 #############
69
70 - lf_rtd_merge: &lf_rtd_merge
71     name: lf-rtd-merge
72
73     # Merge job which triggers a POST of the docs project to readthedocs
74     #
75     # Required parameters:
76     #
77     #     :rtd-project: This is the name of the project on ReadTheDocs.org.
78     #
79     # Optional parameters:
80     #
81     #     :branch: Git branch to fetch for the build. (default: master)
82     #     :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
83     #     :build-node: The node to run build on.
84     #     :build-timeout: Timeout in seconds before aborting build. (default: 15)
85     #     :git-url: base URL of git project. (default: https://github.com)
86     #     :project-pattern: Project to trigger build against. (default: **)
87     #     :stream: Keyword that can be used to represent a release code-name.
88     #         Often the same as the branch. (default: master)
89     #
90     #     :gerrit_merge_triggers: Override Gerrit Triggers.
91     #     :gerrit_trigger_file_paths: Override file paths which can be used to
92     #         filter which file modifications will trigger a build.
93     #         (default: - compare-type: ANT
94     #                     pattern: '**/*.rst'
95     #                   - compare-type: ANT
96     #                     pattern: '**/conf.py')
97
98     ######################
99     # Default parameters #
100     ######################
101
102     branch: master
103     build-days-to-keep: 7
104     build-timeout: 15
105     git-url: https://github.com
106     project-pattern: '**'
107     stream: master
108     submodule-recursive: true
109
110     gerrit_merge_triggers:
111       - change-merged-event
112       - comment-added-contains-event:
113           comment-contains-value: remerge$
114
115     #####################
116     # Job Configuration #
117     #####################
118
119     builders:
120       - lf-rtd-trigger-build:
121           rtd-project: '{rtd-project}'
122
123 - job-template:
124     name: '{project-name}-rtd-merge-{stream}'
125     id: gerrit-rtd-merge
126     <<: *lf_rtd_common
127     # yamllint disable-line rule:key-duplicates
128     <<: *lf_rtd_merge
129
130     triggers:
131       - gerrit:
132           server-name: '{gerrit-server-name}'
133           trigger-on: '{obj:gerrit_merge_triggers}'
134           projects:
135             - project-compare-type: 'ANT'
136               project-pattern: '{project-pattern}'
137               branches:
138                 - branch-compare-type: 'ANT'
139                   branch-pattern: '**/{branch}'
140               file-paths: '{obj:gerrit_trigger_file_paths}'
141
142 - job-template:
143     name: '{project-name}-rtd-merge-{stream}'
144     id: github-rtd-merge
145     <<: *lf_rtd_common
146     # yamllint disable-line rule:key-duplicates
147     <<: *lf_rtd_merge
148
149     properties:
150       - github:
151           url: '{git-url}/{github-org}/{project}'
152
153     triggers:
154       - lf-infra-github-pr-trigger:
155           trigger-phrase: '^remerge$'
156           only-trigger-phrase: false
157           status-context: 'RTD Merge'
158           permit-all: true
159           github-hooks: true
160           github-org: ''
161           github_pr_whitelist:
162             - ''
163           github_pr_admin_list:
164             - ''
165       - timed: 'H H * * *'
166
167 #############
168 # RTD VERIFY#
169 #############
170
171 - lf_rtd_verify: &lf_rtd_verify
172     name: lf-rtd-verify
173     # Verify job which runs a tox build of the docs project
174     #
175     # Optional parameters:
176     #
177     #     :branch: Git branch to fetch for the build. (default: master)
178     #     :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
179     #     :build-node: The node to run build on.
180     #     :build-timeout: Timeout in seconds before aborting build. (default: 15)
181     #     :doc-dir: Directory where tox will place built docs.
182     #         as defined in the tox.ini (default: docs/_build/html)
183     #     :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
184     #     :project-pattern: Project to trigger build against. (default: **)
185     #     :stream: Keyword that can be used to represent a release code-name.
186     #         Often the same as the branch. (default: master)
187     #     :submodule-recursive: Whether to checkout submodules recursively.
188     #         (default: true)
189     #
190     #     :gerrit_verify_triggers: Override Gerrit Triggers.
191     #     :gerrit_trigger_file_paths: Override file paths which can be used to
192     #         filter which file modifications will trigger a build.
193     #         (default: - compare-type: ANT
194     #                     pattern: '**/*.rst'
195     #                   - compare-type: ANT
196     #                     pattern: '**/conf.py')
197
198     ######################
199     # Default parameters #
200     ######################
201
202     branch: master
203     build-days-to-keep: 7
204     build-timeout: 15
205     doc-dir: docs/_build/html
206     git-url: '$GIT_URL/$PROJECT'
207     project-pattern: '**'
208     stream: master
209     submodule-recursive: true
210
211     gerrit_verify_triggers:
212       - patchset-created-event:
213           exclude-drafts: false
214           exclude-trivial-rebase: false
215           exclude-no-code-change: false
216       - draft-published-event
217       - comment-added-contains-event:
218           comment-contains-value: recheck$
219
220     #####################
221     # Job Configuration #
222     #####################
223
224     builders:
225       - lf-rtd-verify:
226           doc-dir: '{doc-dir}'
227
228 - job-template:
229     name: '{project-name}-rtd-verify-{stream}'
230     id: gerrit-rtd-verify
231     concurrent: true
232     <<: *lf_rtd_common
233     # yamllint disable-line rule:key-duplicates
234     <<: *lf_rtd_verify
235
236     scm:
237       - lf-infra-gerrit-scm:
238           branch: '{branch}'
239           jenkins-ssh-credential: '{jenkins-ssh-credential}'
240           git-url: '{git-url}'
241           refspec: ''
242           submodule-recursive: '{submodule-recursive}'
243           choosing-strategy: default
244
245     triggers:
246       - gerrit:
247           server-name: '{gerrit-server-name}'
248           trigger-on: '{obj:gerrit_verify_triggers}'
249           projects:
250             - project-compare-type: 'ANT'
251               project-pattern: '{project-pattern}'
252               branches:
253                 - branch-compare-type: 'ANT'
254                   branch-pattern: '**/{branch}'
255               file-paths: '{obj:gerrit_trigger_file_paths}'
256
257 - job-template:
258     name: '{project-name}-rtd-verify-{stream}'
259     id: github-rtd-verify
260     concurrent: true
261     <<: *lf_rtd_common
262     # yamllint disable-line rule:key-duplicates
263     <<: *lf_rtd_verify
264
265     properties:
266       - github:
267           url: '{git-url}/{github-org}/{project}'
268
269     scm:
270       - lf-infra-github-scm:
271           url: '{git-clone-url}{github-org}/{project}'
272           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
273           branch: '{branch}'
274           submodule-recursive: '{submodule-recursive}'
275           choosing-strategy: default
276           jenkins-ssh-credential: '{jenkins-ssh-credential}'
277
278     triggers:
279       - lf-infra-github-pr-trigger:
280           trigger-phrase: '^recheck$'
281           only-trigger-phrase: false
282           status-context: 'RTD Verify'
283           permit-all: true
284           github-hooks: true
285           github-org: ''
286           github_pr_whitelist:
287             - ''
288           github_pr_admin_list:
289             - ''