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