2 # This file contains job templates for Docker projects.
9 name: lf-docker-get-container-tag
13 DOCKER_ROOT={docker-root}
15 condition-kind: regex-match
16 regex: git-describe-params
17 label: '{docker-use-params-from}'
19 - shell: !include-raw-escape:
20 - ../shell/docker-get-git-describe.sh
22 condition-kind: regex-match
23 regex: yaml-file-params
24 label: '{docker-use-params-from}'
26 - shell: !include-raw-escape:
27 - ../shell/docker-get-yaml-tag.sh
29 # Import the docker image information from the previous build step
30 properties-file: 'env_docker_inject.txt'
38 DOCKER_ARGS={docker-build-args}
39 DOCKER_NAME={docker-name}
40 DOCKER_ROOT={docker-root}
41 CONTAINER_PULL_REGISTRY={container-public-registry}
42 CONTAINER_PUSH_REGISTRY={container-push-registry}
43 - shell: !include-raw-escape:
44 - ../shell/docker-build.sh
51 CONTAINER_PUSH_REGISTRY={container-push-registry}
52 - shell: !include-raw-escape:
53 - ../shell/docker-push.sh
59 - lf_docker_common: &lf_docker_common
60 name: lf-docker-common
62 project-type: freestyle
65 ######################
66 # Default parameters #
67 ######################
72 submodule-disable: false
73 submodule-recursive: true
75 pre_docker_build_script: '# pre docker build script goes here'
76 post_docker_build_script: '# post docker build script goes here'
77 docker-use-params-from: ''
79 docker-root: '$WORKSPACE'
81 git-url: '$GIT_URL/$PROJECT'
87 disabled: '{disable-job}'
90 - lf-infra-properties:
91 build-days-to-keep: '{build-days-to-keep}'
94 - lf-infra-parameters:
97 refspec: 'refs/heads/{branch}'
102 build-timeout: '{build-timeout}'
103 jenkins-ssh-credential: '{jenkins-ssh-credential}'
108 - docker_verify_common: &docker_verify_common
109 name: docker-verify-common
114 - lf-infra-gerrit-scm:
115 jenkins-ssh-credential: '{jenkins-ssh-credential}'
117 refspec: '$GERRIT_REFSPEC'
118 branch: '$GERRIT_BRANCH'
119 submodule-disable: '{submodule-disable}'
120 submodule-recursive: '{submodule-recursive}'
121 submodule-timeout: '{submodule-timeout}'
122 choosing-strategy: gerrit
124 gerrit_verify_triggers:
125 - patchset-created-event:
127 exclude-trivial-rebase: false
128 exclude-no-code-change: false
129 - draft-published-event
130 - comment-added-contains-event:
131 comment-contains-value: '^Patch Set[ ]+[0-9]+:([ ]+|[\n]+)(recheck|reverify)$'
133 gerrit_trigger_file_paths:
134 - compare-type: REG_EXP
137 # github_included_regions MUST match gerrit_trigger_file_paths
138 github_included_regions:
143 - lf-infra-docker-login:
144 global-settings-file: 'global-settings'
145 settings-file: '{mvn-settings}'
146 - shell: '{pre_docker_build_script}'
147 - lf-docker-get-container-tag:
148 docker-use-params-from: '{docker-use-params-from}'
149 docker-root: '{docker-root}'
151 docker-build-args: '{docker-build-args}'
152 docker-name: '{docker-name}'
153 docker-root: '{docker-root}'
154 container-public-registry: '{container-public-registry}'
155 container-push-registry: '{container-push-registry}'
156 - shell: '{post_docker_build_script}'
157 - lf-provide-maven-settings-cleanup
159 - docker_merge_common: &docker_merge_common
160 name: docker-merge-common
164 - lf-infra-gerrit-scm:
165 jenkins-ssh-credential: '{jenkins-ssh-credential}'
167 refspec: '$GERRIT_REFSPEC'
168 branch: '$GERRIT_BRANCH'
169 submodule-disable: '{submodule-disable}'
170 submodule-recursive: '{submodule-recursive}'
171 submodule-timeout: '{submodule-timeout}'
172 choosing-strategy: gerrit
174 gerrit_merge_triggers:
175 - change-merged-event
176 - comment-added-contains-event:
177 comment-contains-value: remerge$
179 gerrit_trigger_file_paths:
180 - compare-type: REG_EXP
183 # github_included_regions MUST match gerrit_trigger_file_paths
184 github_included_regions:
189 - lf-infra-docker-login:
190 global-settings-file: 'global-settings'
191 settings-file: '{mvn-settings}'
192 - shell: '{pre_docker_build_script}'
193 - lf-docker-get-container-tag:
194 docker-use-params-from: '{docker-use-params-from}'
195 docker-root: '{docker-root}'
197 docker-build-args: '{docker-build-args}'
198 docker-name: '{docker-name}'
199 docker-root: '{docker-root}'
200 container-public-registry: '{container-public-registry}'
201 container-push-registry: '{container-push-registry}'
202 - shell: '{post_docker_build_script}'
203 # Provided all steps have already passed, push the docker image
205 container-push-registry: '{container-push-registry}'
206 - lf-provide-maven-settings-cleanup
213 name: '{project-name}-docker-verify-{stream}'
214 id: gerrit-docker-verify
215 # Job template for Docker verify jobs
217 # The purpose of this job template is to run a docker build, and potentially
218 # test validation of the docker image
220 <<: *lf_docker_common
221 # yamllint disable-line rule:key-duplicates
222 <<: *docker_verify_common
226 server-name: '{gerrit-server-name}'
227 trigger-on: '{obj:gerrit_verify_triggers}'
229 - project-compare-type: ANT
230 project-pattern: '{project}'
232 - branch-compare-type: ANT
233 branch-pattern: '**/{branch}'
234 file-paths: '{obj:gerrit_trigger_file_paths}'
237 name: '{project-name}-docker-verify-{stream}'
238 id: github-docker-verify
239 # Job template for Docker verify jobs
241 # The purpose of this job template is to run a docker build, and potentially
242 # test validation of the docker image
244 <<: *lf_docker_common
245 # yamllint disable-line rule:key-duplicates
246 <<: *docker_verify_common
249 - lf-infra-properties:
250 build-days-to-keep: '{build-days-to-keep}'
252 url: '{github-url}/{github-org}/{project}'
255 - lf-infra-github-scm:
256 url: '{git-clone-url}{github-org}/{project}'
257 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
259 submodule-recursive: '{submodule-recursive}'
260 submodule-timeout: '{submodule-timeout}'
261 submodule-disable: '{submodule-disable}'
262 choosing-strategy: default
263 jenkins-ssh-credential: '{jenkins-ssh-credential}'
266 - github-pull-request:
267 trigger-phrase: '^(recheck|reverify)$'
268 only-trigger-phrase: false
269 status-context: 'Docker Verify'
272 white-list-target-branches:
274 included-regions: '{obj:github_included_regions}'
281 name: '{project-name}-docker-merge-{stream}'
282 id: gerrit-docker-merge
283 # Job template for Docker merge jobs
285 # The purpose of this job template is to run a docker build, and potentially
286 # test validation of the docker image
288 <<: *lf_docker_common
289 # yamllint disable-line rule:key-duplicates
290 <<: *docker_merge_common
293 - timed: '{obj:cron}'
295 server-name: '{gerrit-server-name}'
296 trigger-on: '{obj:gerrit_merge_triggers}'
298 - project-compare-type: ANT
299 project-pattern: '{project}'
301 - branch-compare-type: ANT
302 branch-pattern: '**/{branch}'
303 file-paths: '{obj:gerrit_trigger_file_paths}'
306 name: '{project-name}-docker-merge-{stream}'
307 id: github-docker-merge
308 # Job template for Docker merge jobs
310 # The purpose of this job template is to run a docker build, and potentially
311 # test validation of the docker image
313 <<: *lf_docker_common
314 # yamllint disable-line rule:key-duplicates
315 <<: *docker_merge_common
318 - lf-infra-properties:
319 build-days-to-keep: '{build-days-to-keep}'
321 url: '{github-url}/{github-org}/{project}'
324 - lf-infra-github-scm:
325 url: '{git-clone-url}{github-org}/{project}'
327 branch: 'refs/heads/{branch}'
328 submodule-recursive: '{submodule-recursive}'
329 submodule-timeout: '{submodule-timeout}'
330 submodule-disable: '{submodule-disable}'
331 choosing-strategy: default
332 jenkins-ssh-credential: '{jenkins-ssh-credential}'
335 - timed: '{obj:cron}'
339 - github-pull-request:
340 trigger-phrase: '^remerge$'
341 only-trigger-phrase: true
342 status-context: 'Docker Merge'
347 white-list: '{obj:github_pr_whitelist}'
348 admin-list: '{obj:github_pr_admin_list}'
349 white-list-target-branches:
351 included-regions: '{obj:github_included_regions}'