2 # This file contains job templates for Docker projects.
9 name: lf-docker-get-container-tag
13 DOCKER_NAME={docker-name}
14 DOCKER_ROOT={docker-root}
16 condition-kind: regex-match
17 regex: git-describe-params
18 label: '{docker-use-params-from}'
20 - shell: !include-raw-escape:
21 - ../shell/docker-get-git-describe.sh
23 condition-kind: regex-match
24 regex: yaml-file-params
25 label: '{docker-use-params-from}'
27 - shell: !include-raw-escape:
28 - ../shell/docker-get-yaml-tag.sh
30 # Import the docker image information from the previous build step
31 properties-file: 'env_docker_inject.txt'
39 DOCKER_ARGS={docker-build-args}
40 DOCKER_ROOT={docker-root}
41 CONTAINER_PULL_REGISTRY={container-public-registry}
42 - shell: !include-raw-escape:
43 - ../shell/docker-build.sh
50 CONTAINER_PUSH_REGISTRY={container-push-registry}
51 - shell: !include-raw-escape:
52 - ../shell/docker-push.sh
58 - lf_docker_common: &lf_docker_common
59 name: lf-docker-common
61 project-type: freestyle
64 ######################
65 # Default parameters #
66 ######################
71 submodule-disable: false
72 submodule-recursive: true
74 pre_docker_build_script: '# pre docker build script goes here'
75 post_docker_build_script: '# post docker build script goes here'
76 docker-use-params-from: ''
78 docker-root: '$WORKSPACE'
80 git-url: '$GIT_URL/$PROJECT'
86 disabled: '{disable-job}'
89 - lf-infra-properties:
90 build-days-to-keep: '{build-days-to-keep}'
93 - lf-infra-parameters:
96 refspec: 'refs/heads/{branch}'
101 build-timeout: '{build-timeout}'
102 jenkins-ssh-credential: '{jenkins-ssh-credential}'
107 - docker_verify_common: &docker_verify_common
108 name: docker-verify-common
113 - lf-infra-gerrit-scm:
114 jenkins-ssh-credential: '{jenkins-ssh-credential}'
116 refspec: '$GERRIT_REFSPEC'
117 branch: '$GERRIT_BRANCH'
118 submodule-disable: '{submodule-disable}'
119 submodule-recursive: '{submodule-recursive}'
120 submodule-timeout: '{submodule-timeout}'
121 choosing-strategy: gerrit
123 gerrit_verify_triggers:
124 - patchset-created-event:
126 exclude-trivial-rebase: false
127 exclude-no-code-change: false
128 - draft-published-event
129 - comment-added-contains-event:
130 comment-contains-value: '^Patch Set[ ]+[0-9]+:([ ]+|[\n]+)(recheck|reverify)$'
134 - lf-infra-docker-login:
135 global-settings-file: 'global-settings'
136 settings-file: '{mvn-settings}'
137 - shell: '{pre_docker_build_script}'
138 - lf-docker-get-container-tag:
139 docker-use-params-from: '{docker-use-params-from}'
140 docker-name: '{docker-name}'
141 docker-root: '{docker-root}'
143 docker-build-args: '{docker-build-args}'
144 docker-root: '{docker-root}'
145 container-public-registry: '{container-public-registry}'
146 - shell: '{post_docker_build_script}'
147 - lf-provide-maven-settings-cleanup
149 - docker_merge_common: &docker_merge_common
150 name: docker-merge-common
153 - lf-infra-gerrit-scm:
154 jenkins-ssh-credential: '{jenkins-ssh-credential}'
156 refspec: '$GERRIT_REFSPEC'
157 branch: '$GERRIT_BRANCH'
158 submodule-disable: '{submodule-disable}'
159 submodule-recursive: '{submodule-recursive}'
160 submodule-timeout: '{submodule-timeout}'
161 choosing-strategy: gerrit
163 gerrit_merge_triggers:
164 - change-merged-event
165 - comment-added-contains-event:
166 comment-contains-value: remerge$
170 - lf-infra-docker-login:
171 global-settings-file: 'global-settings'
172 settings-file: '{mvn-settings}'
173 - shell: '{pre_docker_build_script}'
174 - lf-docker-get-container-tag:
175 docker-use-params-from: '{docker-use-params-from}'
176 docker-name: '{docker-name}'
177 docker-root: '{docker-root}'
179 docker-build-args: '{docker-build-args}'
180 docker-root: '{docker-root}'
181 container-public-registry: '{container-public-registry}'
182 - shell: '{post_docker_build_script}'
183 # Provided all steps have already passed, push the docker image
185 container-push-registry: '{container-push-registry}'
186 - lf-provide-maven-settings-cleanup
193 name: '{project-name}-docker-verify-{stream}'
194 id: gerrit-docker-verify
195 # Job template for Docker verify jobs
197 # The purpose of this job template is to run a docker build, and potentially
198 # test validation of the docker image
200 <<: *lf_docker_common
201 # yamllint disable-line rule:key-duplicates
202 <<: *docker_verify_common
206 server-name: '{gerrit-server-name}'
207 trigger-on: '{obj:gerrit_verify_triggers}'
209 - project-compare-type: ANT
210 project-pattern: '{project}'
212 - branch-compare-type: ANT
213 branch-pattern: '**/{branch}'
216 name: '{project-name}-docker-verify-{stream}'
217 id: github-docker-verify
218 # Job template for Docker verify jobs
220 # The purpose of this job template is to run a docker build, and potentially
221 # test validation of the docker image
223 <<: *lf_docker_common
224 # yamllint disable-line rule:key-duplicates
225 <<: *docker_verify_common
228 - lf-infra-properties:
229 build-days-to-keep: '{build-days-to-keep}'
231 url: '{github-url}/{github-org}/{project}'
234 - lf-infra-github-scm:
235 url: '{git-clone-url}{github-org}/{project}'
236 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
238 submodule-recursive: '{submodule-recursive}'
239 submodule-timeout: '{submodule-timeout}'
240 submodule-disable: '{submodule-disable}'
241 choosing-strategy: default
242 jenkins-ssh-credential: '{jenkins-ssh-credential}'
245 - github-pull-request:
246 trigger-phrase: '^(recheck|reverify)$'
247 only-trigger-phrase: false
248 status-context: 'Docker Verify'
251 white-list-target-branches:
253 included-regions: '{obj:github_included_regions}'
260 name: '{project-name}-docker-merge-{stream}'
261 id: gerrit-docker-merge
262 # Job template for Docker merge jobs
264 # The purpose of this job template is to run a docker build, and potentially
265 # test validation of the docker image
267 <<: *lf_docker_common
268 # yamllint disable-line rule:key-duplicates
269 <<: *docker_merge_common
273 server-name: '{gerrit-server-name}'
274 trigger-on: '{obj:gerrit_merge_triggers}'
276 - project-compare-type: ANT
277 project-pattern: '{project}'
279 - branch-compare-type: ANT
280 branch-pattern: '**/{branch}'
283 name: '{project-name}-docker-merge-{stream}'
284 id: github-docker-merge
285 # Job template for Docker merge jobs
287 # The purpose of this job template is to run a docker build, and potentially
288 # test validation of the docker image
290 <<: *lf_docker_common
291 # yamllint disable-line rule:key-duplicates
292 <<: *docker_merge_common
295 - lf-infra-properties:
296 build-days-to-keep: '{build-days-to-keep}'
298 url: '{github-url}/{github-org}/{project}'
301 - lf-infra-github-scm:
302 url: '{git-clone-url}{github-org}/{project}'
304 branch: 'refs/heads/{branch}'
305 submodule-recursive: '{submodule-recursive}'
306 submodule-timeout: '{submodule-timeout}'
307 submodule-disable: '{submodule-disable}'
308 choosing-strategy: default
309 jenkins-ssh-credential: '{jenkins-ssh-credential}'
315 - github-pull-request:
316 trigger-phrase: '^remerge$'
317 only-trigger-phrase: true
318 status-context: 'Docker Merge'
323 white-list: '{obj:github_pr_whitelist}'
324 admin-list: '{obj:github_pr_admin_list}'
325 white-list-target-branches:
327 included-regions: '{obj:github_included_regions}'