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
204 - lf-infra-docker-login:
205 global-settings-file: "global-settings"
206 settings-file: "{mvn-settings}"
209 export PARENT_JOB_NAME
210 ./docker_push_manifest.sh
213 # Job template for staging jobs on multiple architectures
215 # The purpose of this job template is to:
216 # 1. Run parallel maven-docker-stage jobs for each supported architecure
217 # 2. Build and push a docker manifest list for the images created by
220 name: "{project-name}-multiarch-docker-stage-{stream}"
222 project-type: multijob
223 disabled: "{obj:disabled}"
228 - lf-infra-parameters:
233 name: DOCKER_REGISTRY
236 name: DOCKERHUB_REGISTRY
237 default: "registry-1.docker.io"
244 use-build-blocker: true
246 - "{project-name}-.*-docker-.*"
247 blocking-level: "NODE"
250 - lf-infra-gerrit-scm:
251 jenkins-ssh-credential: "{jenkins-ssh-credential}"
252 git-url: "$GIT_URL/$PROJECT"
253 refspec: "$GERRIT_REFSPEC"
254 branch: "$GERRIT_BRANCH"
255 submodule-recursive: true
256 submodule-timeout: 10
257 submodule-disable: false
258 choosing-strategy: default
263 server-name: "{gerrit-server-name}"
265 - comment-added-contains-event:
266 comment-contains-value: '^Patch Set\s+\d+:\s+stage-(docker-)?release\s*$'
269 - project-compare-type: ANT
270 project-pattern: "{project}"
272 - branch-compare-type: ANT
273 branch-pattern: "**/{branch}"
280 name: "build docker images"
282 execution-type: PARALLEL
284 - name: "{project-name}-amd64-maven-docker-stage-{stream}"
285 kill-phase-on: FAILURE
286 current-parameters: true
287 - name: "{project-name}-arm64-maven-docker-stage-{stream}"
289 current-parameters: true
291 name: "publish docker manifest"
292 condition: SUCCESSFUL
293 execution-type: PARALLEL
295 - name: "{project-name}-docker-manifest-{stream}"
296 current-parameters: true
297 predefined-parameters: |
298 PARENT_JOB_NAME=$JOB_NAME
299 DOCKERHUB_REGISTRY=docker.io