5 - docker_job_boiler_plate: &docker_job_boiler_plate
6 name: docker_job_boiler_plate
8 project-type: freestyle
11 ######################
12 # Default parameters #
13 ######################
16 submodule-recursive: true
18 # default params for docker jobs
21 docker_root: '$WORKSPACE'
23 docker_name: 'unnamed'
24 # Default to LF standard 'snapshots' docker registry
25 docker_registry: '$DOCKER_REGISTRY:10003'
27 submodule-disable: false
35 - lf-infra-properties:
36 build-days-to-keep: '{build-days-to-keep}'
39 - lf-infra-parameters:
43 lftools-version: '{lftools-version}'
47 build-timeout: '{build-timeout}'
48 jenkins-ssh-credential: '{jenkins-ssh-credential}'
53 - docker_verify_boiler_plate: &docker_verify_boiler_plate
54 name: docker_verify_boiler_plate
60 refspec: '$GERRIT_REFSPEC'
61 choosing-strategy: 'default'
62 submodule-recursive: '{submodule-recursive}'
65 - gerrit-trigger-patch-submitted:
66 status-context: '{project}-Docker-Verify'
67 server: '{server-name}'
72 - docker_merge_boiler_plate: &docker_merge_boiler_plate
73 name: docker_merge_boiler_plate
77 refspec: '$GERRIT_REFSPEC'
78 choosing-strategy: 'default'
79 submodule-recursive: '{submodule-recursive}'
82 - gerrit-trigger-patch-merged:
83 server: '{server-name}'
94 name: '{project-name}-{stream}-merge-docker'
95 # Job template for Docker merge jobs
97 # The purpose of this job template is to run a docker build, and potentially
98 # test validation of the docker image
100 <<: *docker_job_boiler_plate
101 # yamllint disable-line rule:key-duplicates
102 <<: *docker_merge_boiler_plate
106 - lf-infra-docker-login:
107 global-settings-file: 'global-settings'
108 settings-file: '{mvn-settings}'
109 - shell: '{pre_build_script}'
111 # Docker registry is purposely not using an '_' so as to not conflict
112 # with the Jenkins global env var
113 properties-content: |
114 DOCKER_ARGS={docker_build_args}
115 DOCKER_NAME={docker_name}
116 DOCKER_ROOT={docker_root}
117 DOCKER_TAG={docker_tag}
119 DOCKERREGISTRY={docker_registry}
120 # Do the docker build
121 - shell: !include-raw: ../shell/docker-build.sh
123 # Import the docker image information from the build step
124 properties-file: 'env_inject.txt'
125 # Execute any post build clean-up or testing
126 - shell: '{post_build_script}'
127 # Provided all steps have already passed, push the docker image
128 - shell: !include-raw: ../shell/docker-push.sh
131 name: '{project-name}-{stream}-verify-docker'
132 # Job template for Docker verify jobs
134 # The purpose of this job template is to run a docker build, and potentially
135 # test validation of the docker image
137 ######################
138 # Default parameters #
139 ######################
141 <<: *docker_job_boiler_plate
142 # yamllint disable-line rule:key-duplicates
143 <<: *docker_verify_boiler_plate
147 - lf-infra-docker-login:
148 global-settings-file: 'global-settings'
149 settings-file: '{mvn-settings}'
150 - shell: '{pre_build_script}'
152 # Docker registry is purposely not using an '_' so as to not conflict
153 # with the Jenkins global env var
154 properties-content: |
155 DOCKER_ARGS={docker_build_args}
156 DOCKER_NAME={docker_name}
157 DOCKER_ROOT={docker_root}
158 DOCKER_TAG={docker_tag}
160 DOCKERREGISTRY={docker_registry}
161 # Do the docker build
162 - shell: !include-raw: ../shell/docker-build.sh
164 # Import the docker image information from the build step
165 properties-file: 'env_inject.txt'
166 # Execute any post build clean-up or testing
167 - shell: '{post_build_script}'
170 # Job template for creating a docker manifest list
172 # The purpose of this job template is to run:
173 # 1. docker_push_manifest.sh script (which needs to exist in the
174 # project implementation repo)
176 name: '{project-name}-docker-manifest-{stream}'
177 <<: *docker_job_boiler_plate
182 - lf-infra-parameters:
187 name: PARENT_JOB_NAME
190 disabled: '{obj:disabled}'
193 - lf-infra-gerrit-scm:
194 jenkins-ssh-credential: '{jenkins-ssh-credential}'
195 git-url: '$GIT_URL/$PROJECT'
196 refspec: '$GERRIT_REFSPEC'
197 branch: '$GERRIT_BRANCH'
198 submodule-recursive: true
199 submodule-disable: '{submodule-disable}'
200 submodule-timeout: '{submodule-timeout}'
201 choosing-strategy: default
205 - lf-infra-docker-login:
206 global-settings-file: 'global-settings'
207 settings-file: '{mvn-settings}'
210 export PARENT_JOB_NAME
211 ./docker_push_manifest.sh
214 # Job template for staging jobs on multiple architectures
216 # The purpose of this job template is to:
217 # 1. Run parallel maven-docker-stage jobs for each supported architecure
218 # 2. Build and push a docker manifest list for the images created by
221 name: '{project-name}-multiarch-docker-stage-{stream}'
223 project-type: multijob
224 disabled: '{obj:disabled}'
229 - lf-infra-parameters:
234 name: DOCKER_REGISTRY
237 name: DOCKERHUB_REGISTRY
238 default: 'registry-1.docker.io'
240 disabled: '{obj:disabled}'
247 use-build-blocker: true
249 - '{project-name}-.*-docker-.*'
250 blocking-level: 'NODE'
253 - lf-infra-gerrit-scm:
254 jenkins-ssh-credential: '{jenkins-ssh-credential}'
255 git-url: '$GIT_URL/$PROJECT'
256 refspec: '$GERRIT_REFSPEC'
257 branch: '$GERRIT_BRANCH'
258 submodule-recursive: true
259 submodule-timeout: 10
260 submodule-disable: false
261 choosing-strategy: default
266 server-name: '{gerrit-server-name}'
268 - comment-added-contains-event:
269 comment-contains-value: '^Patch Set\s+\d+:\s+stage-(docker-)?release\s*$'
272 - project-compare-type: ANT
273 project-pattern: '{project}'
275 - branch-compare-type: ANT
276 branch-pattern: '**/{branch}'
283 name: 'build docker images'
285 execution-type: PARALLEL
287 - name: '{project-name}-amd64-maven-docker-stage-{stream}'
288 kill-phase-on: FAILURE
289 current-parameters: true
290 - name: '{project-name}-arm64-maven-docker-stage-{stream}'
292 current-parameters: true
294 name: 'publish docker manifest'
295 condition: SUCCESSFUL
296 execution-type: PARALLEL
298 - name: '{project-name}-docker-manifest-{stream}'
299 current-parameters: true
300 predefined-parameters: |
301 PARENT_JOB_NAME=$JOB_NAME
302 DOCKERHUB_REGISTRY=docker.io