###########
# ANCHORS #
###########
-- docker_job_boiler_plate: &docker_job_boiler_plate
+- _docker_job_boiler_plate: &docker_job_boiler_plate
name: docker_job_boiler_plate
project-type: freestyle
- node: '{build-node}'
+ node: "{build-node}"
######################
# Default parameters #
submodule-recursive: true
# default params for docker jobs
- pre_build_script: ''
- post_build_script: ''
- docker_root: '$WORKSPACE'
- docker_build_args: ''
- docker_name: 'unnamed'
+ pre_build_script: ""
+ post_build_script: ""
+ docker_root: "$WORKSPACE"
+ docker_build_args: ""
+ docker_name: "unnamed"
# Default to LF standard 'snapshots' docker registry
- docker_registry: '$DOCKER_REGISTRY:10003'
- docker_tag: 'latest'
+ docker_registry: "$DOCKER_REGISTRY:10003"
+ docker_tag: "latest"
submodule-disable: false
submodule-timeout: 10
properties:
- lf-infra-properties:
- build-days-to-keep: '{build-days-to-keep}'
+ build-days-to-keep: "{build-days-to-keep}"
parameters:
- lf-infra-parameters:
- branch: '{branch}'
- project: '{project}'
- stream: '{stream}'
- lftools-version: '{lftools-version}'
+ branch: "{branch}"
+ project: "{project}"
+ stream: "{stream}"
+ lftools-version: "{lftools-version}"
wrappers:
- lf-infra-wrappers:
- build-timeout: '{build-timeout}'
- jenkins-ssh-credential: '{jenkins-ssh-credential}'
+ build-timeout: "{build-timeout}"
+ jenkins-ssh-credential: "{jenkins-ssh-credential}"
publishers:
- lf-infra-publish
-- docker_verify_boiler_plate: &docker_verify_boiler_plate
+- _docker_verify_boiler_plate: &docker_verify_boiler_plate
name: docker_verify_boiler_plate
concurrent: true
scm:
- gerrit-trigger-scm:
- refspec: '$GERRIT_REFSPEC'
- choosing-strategy: 'default'
- submodule-recursive: '{submodule-recursive}'
+ refspec: "$GERRIT_REFSPEC"
+ choosing-strategy: "default"
+ submodule-recursive: "{submodule-recursive}"
triggers:
- gerrit-trigger-patch-submitted:
- status-context: '{project}-Docker-Verify'
- server: '{server-name}'
- project: '{project}'
- branch: '{branch}'
- files: '{files}'
+ status-context: "{project}-Docker-Verify"
+ server: "{server-name}"
+ project: "{project}"
+ branch: "{branch}"
+ files: "{files}"
-- docker_merge_boiler_plate: &docker_merge_boiler_plate
+- _docker_merge_boiler_plate: &docker_merge_boiler_plate
name: docker_merge_boiler_plate
scm:
- gerrit-trigger-scm:
- refspec: '$GERRIT_REFSPEC'
- choosing-strategy: 'default'
- submodule-recursive: '{submodule-recursive}'
+ refspec: "$GERRIT_REFSPEC"
+ choosing-strategy: "default"
+ submodule-recursive: "{submodule-recursive}"
triggers:
- gerrit-trigger-patch-merged:
- server: '{server-name}'
- project: '{project}'
- branch: '{branch}'
- files: '{files}'
+ server: "{server-name}"
+ project: "{project}"
+ branch: "{branch}"
+ files: "{files}"
- pollscm:
- cron: ''
+ cron: ""
#################
# JOB TEMPLATES #
#################
- job-template:
- name: '{project-name}-{stream}-merge-docker'
+ name: "{project-name}-{stream}-merge-docker"
# Job template for Docker merge jobs
#
# The purpose of this job template is to run a docker build, and potentially
builders:
- lf-infra-pre-build
- lf-infra-docker-login:
- global-settings-file: 'global-settings'
- settings-file: '{mvn-settings}'
- - shell: '{pre_build_script}'
+ global-settings-file: "global-settings"
+ settings-file: "{mvn-settings}"
+ - shell: "{pre_build_script}"
- inject:
# Docker registry is purposely not using an '_' so as to not conflict
# with the Jenkins global env var
- shell: !include-raw: ../shell/docker-build.sh
- inject:
# Import the docker image information from the build step
- properties-file: 'env_inject.txt'
+ properties-file: "env_inject.txt"
# Execute any post build clean-up or testing
- - shell: '{post_build_script}'
+ - shell: "{post_build_script}"
# Provided all steps have already passed, push the docker image
- shell: !include-raw: ../shell/docker-push.sh
- job-template:
- name: '{project-name}-{stream}-merge-docker-cascade-trigger'
- # Job template for Docker merge jobs
- #
- # The purpose of this job template is to run a docker build, and potentially
- # test validation of the docker image. This job is triggered by the it's corresponding
- # job that builds the artifacts from which the docker image is built from. Projects
- # using the {project-name}-{stream}-merge-docker job should move to this job. Because
- # the {project-name}-{stream}-merge-docker has no garanties that the docker image is built
- # from merged artifact.
-
- <<: *docker_job_boiler_plate
- # yamllint disable-line rule:key-duplicates
- <<: *docker_merge_boiler_plate
-
- builders:
- - lf-infra-pre-build
- - lf-infra-docker-login:
- global-settings-file: 'global-settings'
- settings-file: '{mvn-settings}'
- - shell: '{pre_build_script}'
- - inject:
- # Docker registry is purposely not using an '_' so as to not conflict
- # with the Jenkins global env var
- properties-content: |
- DOCKER_ARGS={docker_build_args}
- DOCKER_NAME={docker_name}
- DOCKER_ROOT={docker_root}
- DOCKER_TAG={docker_tag}
- BUILD_MODE=SNAPSHOT
- DOCKERREGISTRY={docker_registry}
- # Do the docker build
- - shell: !include-raw: ../shell/docker-build.sh
- - inject:
- # Import the docker image information from the build step
- properties-file: 'env_inject.txt'
- # Execute any post build clean-up or testing
- - shell: '{post_build_script}'
- # Provided all steps have already passed, push the docker image
- - shell: !include-raw: ../shell/docker-push.sh
- triggers:
- - reverse:
- jobs:
- - '{parent_job}'
- result: 'success'
-
-- job-template:
- name: '{project-name}-{stream}-verify-docker'
+ name: "{project-name}-{stream}-verify-docker"
# Job template for Docker verify jobs
#
# The purpose of this job template is to run a docker build, and potentially
builders:
- lf-infra-pre-build
- lf-infra-docker-login:
- global-settings-file: 'global-settings'
- settings-file: '{mvn-settings}'
- - shell: '{pre_build_script}'
+ global-settings-file: "global-settings"
+ settings-file: "{mvn-settings}"
+ - shell: "{pre_build_script}"
- inject:
# Docker registry is purposely not using an '_' so as to not conflict
# with the Jenkins global env var
- shell: !include-raw: ../shell/docker-build.sh
- inject:
# Import the docker image information from the build step
- properties-file: 'env_inject.txt'
+ properties-file: "env_inject.txt"
# Execute any post build clean-up or testing
- - shell: '{post_build_script}'
+ - shell: "{post_build_script}"
- job-template:
- name: '{project-name}-{stream}-verify-docker-cascade-trigger'
- # Job template for Docker verify jobs
+ # Job template for creating a docker manifest list
#
- # The purpose of this job template is to run a docker build, and potentially
- # test validation of the docker image. This job is triggered by the it's corresponding
- # job that builds the artifacts from which the docker image is built from. Projects
- # using the {project-name}-{stream}-verify-docker job should move to this job. Because
- # the {project-name}-{stream}-verify-docker has no garanties that the docker image is built
- # from merged artifact.
-
- ######################
- # Default parameters #
- ######################
-
- <<: *docker_job_boiler_plate
- # yamllint disable-line rule:key-duplicates
- <<: *docker_verify_boiler_plate
-
- builders:
- - lf-infra-pre-build
- - lf-infra-docker-login:
- global-settings-file: 'global-settings'
- settings-file: '{mvn-settings}'
- - shell: '{pre_build_script}'
- - inject:
- # Docker registry is purposely not using an '_' so as to not conflict
- # with the Jenkins global env var
- properties-content: |
- DOCKER_ARGS={docker_build_args}
- DOCKER_NAME={docker_name}
- DOCKER_ROOT={docker_root}
- DOCKER_TAG={docker_tag}
- BUILD_MODE=SNAPSHOT
- DOCKERREGISTRY={docker_registry}
- # Do the docker build
- - shell: !include-raw: ../shell/docker-build.sh
- - inject:
- # Import the docker image information from the build step
- properties-file: 'env_inject.txt'
- # Execute any post build clean-up or testing
- - shell: '{post_build_script}'
- triggers:
- - reverse:
- jobs:
- - '{parent_job}'
- result: 'success'
+ # The purpose of this job template is to run:
+ # 1. docker_push_manifest.sh script (which needs to exist in the
+ # project implementation repo)
-- job-template:
- name: '{project-name}-{stream}-release-version-docker-daily-no-sonar'
- # Job template for Docker daily release jobs
- #
- # The purpose of this job template is to run "docker build and docker push"
- # for projects using this template.
- #
- # Required Variables:
- # branch: git branch (eg. stable/lithium or master)
+ name: "{project-name}-docker-manifest-{stream}"
<<: *docker_job_boiler_plate
+ node: "{build-node}"
+ build-timeout: 15
- docker_registry: '$DOCKER_REGISTRY:10003'
-
- scm:
- - lf-infra-gerrit-scm:
- jenkins-ssh-credential: '{jenkins-ssh-credential}'
- git-url: '$GIT_URL/$PROJECT'
- refspec: '$GERRIT_REFSPEC'
- branch: '$GERRIT_BRANCH'
- submodule-recursive: true
- submodule-timeout: '{submodule-timeout}'
- submodule-disable: '{submodule-disable}'
- choosing-strategy: default
-
- builders:
- - lf-infra-pre-build
- - lf-infra-docker-login:
- global-settings-file: 'global-settings'
- settings-file: '{mvn-settings}'
- - shell: '{pre_build_script}'
- - inject:
- # Docker registry is purposely not using an '_' so as to not conflict
- # with the Jenkins global env var
- properties-content: |
- DOCKER_ARGS={docker_build_args}
- DOCKER_NAME={docker_name}
- DOCKER_ROOT={docker_root}
- DOCKER_TAG={docker_tag}
- DOCKERREGISTRY={docker_registry}
- BUILD_MODE=STAGING
-
- # Do the docker build
- - shell: !include-raw: ../shell/snapshot-strip.sh
- - shell: !include-raw: ../shell/docker-build.sh
- - inject:
- # Import the docker image information from the build step
- properties-file: 'env_inject.txt'
- # Execute any post build clean-up or testing
- - shell: '{post_build_script}'
- # Provided all steps have already passed, push the docker image
- - shell: !include-raw: ../shell/docker-push.sh
-
- triggers:
- # 11 AM UTC
- - timed: '@daily'
- - gerrit-trigger-release-manually:
- server: '{server-name}'
- project: '{project}'
- branch: '{branch}'
-
-- job-template:
- name: '{project-name}-{stream}-release-version-docker-daily-no-sonar-cascade-trigger'
- # Job template for Docker daily release job.
- #
- # The purpose of this job template is to run "docker build and docker push"
- # for projects using this template. This job is triggered by the daily build
- # that builds the artifacts required for building the Docker image.
- #
- # Required Variables:
- # branch: git branch (eg. stable/lithium or master)
- <<: *docker_job_boiler_plate
+ parameters:
+ - lf-infra-parameters:
+ project: "{project}"
+ stream: "{stream}"
+ branch: "{branch}"
+ - string:
+ name: PARENT_JOB_NAME
+ default: "none"
- docker_registry: '$DOCKER_REGISTRY:10003'
+ disabled: "{obj:disabled}"
scm:
- lf-infra-gerrit-scm:
- jenkins-ssh-credential: '{jenkins-ssh-credential}'
- git-url: '$GIT_URL/$PROJECT'
- refspec: '$GERRIT_REFSPEC'
- branch: '$GERRIT_BRANCH'
+ jenkins-ssh-credential: "{jenkins-ssh-credential}"
+ git-url: "$GIT_URL/$PROJECT"
+ refspec: "$GERRIT_REFSPEC"
+ branch: "$GERRIT_BRANCH"
submodule-recursive: true
- submodule-timeout: '{submodule-timeout}'
- submodule-disable: '{submodule-disable}'
+ submodule-disable: "{submodule-disable}"
+ submodule-timeout: "{submodule-timeout}"
choosing-strategy: default
builders:
- - lf-infra-pre-build
- lf-infra-docker-login:
- global-settings-file: 'global-settings'
- settings-file: '{mvn-settings}'
- - shell: '{pre_build_script}'
- - inject:
- # Docker registry is purposely not using an '_' so as to not conflict
- # with the Jenkins global env var
- properties-content: |
- DOCKER_ARGS={docker_build_args}
- DOCKER_NAME={docker_name}
- DOCKER_ROOT={docker_root}
- DOCKER_TAG={docker_tag}
- DOCKERREGISTRY={docker_registry}
- BUILD_MODE=STAGING
-
- # Do the docker build
- - shell: !include-raw: ../shell/snapshot-strip.sh
- - shell: !include-raw: ../shell/docker-build.sh
- - inject:
- # Import the docker image information from the build step
- properties-file: 'env_inject.txt'
- # Execute any post build clean-up or testing
- - shell: '{post_build_script}'
- # Provided all steps have already passed, push the docker image
- - shell: !include-raw: ../shell/docker-push.sh
-
- triggers:
- - reverse:
- jobs:
- - '{parent_job}'
- result: 'success'
+ global-settings-file: "global-settings"
+ settings-file: "{mvn-settings}"
+ - shell: |
+ #!/bin/bash -ex
+ export PARENT_JOB_NAME
+ ./docker_push_manifest.sh
- job-template:
- name: '{project-name}-{subproject}-{stream}-merge-docker'
- # Job template for Docker merge jobs
+ # Job template for staging jobs on multiple architectures
#
- # The purpose of this job template is to run a docker build, and potentially
- # test validation of the docker image
-
- <<: *docker_job_boiler_plate
- # yamllint disable-line rule:key-duplicates
- <<: *docker_merge_boiler_plate
+ # The purpose of this job template is to:
+ # 1. Run parallel maven-docker-stage jobs for each supported architecure
+ # 2. Build and push a docker manifest list for the images created by
+ # the previous jobs
+
+ name: "{project-name}-multiarch-docker-stage-{stream}"
+ node: "{build-node}"
+ project-type: multijob
+ disabled: "{obj:disabled}"
+ build-timeout: 15
+ pattern: "**"
- builders:
- - lf-infra-pre-build
- - lf-infra-docker-login:
- global-settings-file: 'global-settings'
- settings-file: '{mvn-settings}'
- - shell: '{pre_build_script}'
- - inject:
- # Docker registry is purposely not using an '_' so as to not conflict
- # with the Jenkins global env var
- properties-content: |
- DOCKER_ARGS={docker_build_args}
- DOCKER_NAME={docker_name}
- DOCKER_ROOT={docker_root}
- DOCKER_TAG={docker_tag}
- DOCKERREGISTRY={docker_registry}
- BUILD_MODE=SNAPSHOT
- # Do the docker build
- - shell: !include-raw: ../shell/docker-build.sh
- - inject:
- # Import the docker image information from the build step
- properties-file: 'env_inject.txt'
- # Execute any post build clean-up or testing
- - shell: '{post_build_script}'
- # Provided all steps have already passed, push the docker image
- - shell: !include-raw: ../shell/docker-push.sh
-
-- job-template:
- name: '{project-name}-{subproject}-{stream}-merge-docker-cascade-trigger'
- # Job template for Docker merge jobs
- #
- # The purpose of this job template is to run a docker build, and potentially
- # test validation of the docker image. This job is triggered by the merge job
- # that builds the artifacts required for building the Docker image.
-
- <<: *docker_job_boiler_plate
- # yamllint disable-line rule:key-duplicates
- <<: *docker_merge_boiler_plate
-
- builders:
- - lf-infra-pre-build
- - lf-infra-docker-login:
- global-settings-file: 'global-settings'
- settings-file: '{mvn-settings}'
- - shell: '{pre_build_script}'
- - inject:
- # Docker registry is purposely not using an '_' so as to not conflict
- # with the Jenkins global env var
- properties-content: |
- DOCKER_ARGS={docker_build_args}
- DOCKER_NAME={docker_name}
- DOCKER_ROOT={docker_root}
- DOCKER_TAG={docker_tag}
- DOCKERREGISTRY={docker_registry}
- BUILD_MODE=SNAPSHOT
- # Do the docker build
- - shell: !include-raw: ../shell/docker-build.sh
- - inject:
- # Import the docker image information from the build step
- properties-file: 'env_inject.txt'
- # Execute any post build clean-up or testing
- - shell: '{post_build_script}'
- # Provided all steps have already passed, push the docker image
- - shell: !include-raw: ../shell/docker-push.sh
- triggers:
- - reverse:
- jobs:
- - '{parent_job}'
- result: 'success'
-
-- job-template:
- name: '{project-name}-{subproject}-{stream}-verify-docker'
- # Job template for Docker verify jobs
- #
- # The purpose of this job template is to run a docker build, and potentially
- # test validation of the docker image
-
- ######################
- # Default parameters #
- ######################
-
- <<: *docker_job_boiler_plate
- # yamllint disable-line rule:key-duplicates
- <<: *docker_verify_boiler_plate
-
- builders:
- - lf-infra-pre-build
- - lf-infra-docker-login:
- global-settings-file: 'global-settings'
- settings-file: '{mvn-settings}'
- - shell: '{pre_build_script}'
- - inject:
- # Docker registry is purposely not using an '_' so as to not conflict
- # with the Jenkins global env var
- properties-content: |
- DOCKER_ARGS={docker_build_args}
- DOCKER_NAME={docker_name}
- DOCKER_ROOT={docker_root}
- DOCKER_TAG={docker_tag}
- DOCKERREGISTRY={docker_registry}
- BUILD_MODE=SNAPSHOT
- # Do the docker build
- - shell: !include-raw: ../shell/docker-build.sh
- - inject:
- # Import the docker image information from the build step
- properties-file: 'env_inject.txt'
- # Execute any post build clean-up or testing
- - shell: '{post_build_script}'
-
-- job-template:
- name: '{project-name}-{subproject}-{stream}-verify-docker-cascade-trigger'
- # Job template for Docker verify jobs
- #
- # The purpose of this job template is to run a docker build, and potentially
- # test validation of the docker image
-
- ######################
- # Default parameters #
- ######################
-
- <<: *docker_job_boiler_plate
- # yamllint disable-line rule:key-duplicates
- <<: *docker_verify_boiler_plate
-
- builders:
- - lf-infra-pre-build
- - lf-infra-docker-login:
- global-settings-file: 'global-settings'
- settings-file: '{mvn-settings}'
- - shell: '{pre_build_script}'
- - inject:
- # Docker registry is purposely not using an '_' so as to not conflict
- # with the Jenkins global env var
- properties-content: |
- DOCKER_ARGS={docker_build_args}
- DOCKER_NAME={docker_name}
- DOCKER_ROOT={docker_root}
- DOCKER_TAG={docker_tag}
- DOCKERREGISTRY={docker_registry}
- BUILD_MODE=SNAPSHOT
- # Do the docker build
- - shell: !include-raw: ../shell/docker-build.sh
- - inject:
- # Import the docker image information from the build step
- properties-file: 'env_inject.txt'
- # Execute any post build clean-up or testing
- - shell: '{post_build_script}'
- triggers:
- - reverse:
- jobs:
- - '{parent_job}'
- result: 'success'
-
-- job-template:
- name: '{project-name}-{subproject}-{stream}-release-version-docker-daily-no-sonar'
- # Job template for Docker daily release jobs
- #
- # The purpose of this job template is to run "docker build and docker push"
- # for projects using this template.
- #
- # Required Variables:
- # branch: git branch (eg. stable/lithium or master)
- <<: *docker_job_boiler_plate
-
- docker_registry: '$DOCKER_REGISTRY:10003'
-
- scm:
- - lf-infra-gerrit-scm:
- jenkins-ssh-credential: '{jenkins-ssh-credential}'
- git-url: '$GIT_URL/$PROJECT'
- refspec: '$GERRIT_REFSPEC'
- branch: '$GERRIT_BRANCH'
- submodule-recursive: true
- submodule-timeout: '{submodule-timeout}'
- submodule-disable: '{submodule-disable}'
- choosing-strategy: default
-
- builders:
- - lf-infra-pre-build
- - lf-infra-docker-login:
- global-settings-file: 'global-settings'
- settings-file: '{mvn-settings}'
- - shell: '{pre_build_script}'
- - inject:
- # Docker registry is purposely not using an '_' so as to not conflict
- # with the Jenkins global env var
- properties-content: |
- DOCKER_ARGS={docker_build_args}
- DOCKER_NAME={docker_name}
- DOCKER_ROOT={docker_root}
- DOCKER_TAG={docker_tag}
- DOCKERREGISTRY={docker_registry}
- BUILD_MODE=STAGING
-
- # Do the docker build
- - shell: !include-raw: ../shell/snapshot-strip.sh
- - shell: !include-raw: ../shell/docker-build.sh
- - inject:
- # Import the docker image information from the build step
- properties-file: 'env_inject.txt'
- # Execute any post build clean-up or testing
- - shell: '{post_build_script}'
- # Provided all steps have already passed, push the docker image
- - shell: !include-raw: ../shell/docker-push.sh
-
- triggers:
- # 11 AM UTC
- - timed: '@daily'
- - gerrit-trigger-release-manually:
- server: '{server-name}'
- project: '{project}'
- branch: '{branch}'
-
-- job-template:
- name: '{project-name}-{subproject}-{stream}-release-version-docker-daily-no-sonar-cascade-trigger'
- # Job template for Docker daily release jobs
- #
- # The purpose of this job template is to run "docker build and docker push"
- # for projects using this template. This job is triggered by the daily job
- # that builds the artifacts required for building the Docker image.
- #
- # Required Variables:
- # branch: git branch (eg. stable/lithium or master)
- <<: *docker_job_boiler_plate
+ parameters:
+ - lf-infra-parameters:
+ project: "{project}"
+ stream: "{stream}"
+ branch: "{branch}"
+ - string:
+ name: DOCKER_REGISTRY
+ default: "none"
+ - string:
+ name: DOCKERHUB_REGISTRY
+ default: "registry-1.docker.io"
- docker_registry: '$DOCKER_REGISTRY:10003'
+ properties:
+ - throttle:
+ max-per-node: 1
+ option: "project"
+ - build-blocker:
+ use-build-blocker: true
+ blocking-jobs:
+ - "{project-name}-.*-docker-.*"
+ blocking-level: "NODE"
scm:
- lf-infra-gerrit-scm:
- jenkins-ssh-credential: '{jenkins-ssh-credential}'
- git-url: '$GIT_URL/$PROJECT'
- refspec: '$GERRIT_REFSPEC'
- branch: '$GERRIT_BRANCH'
+ jenkins-ssh-credential: "{jenkins-ssh-credential}"
+ git-url: "$GIT_URL/$PROJECT"
+ refspec: "$GERRIT_REFSPEC"
+ branch: "$GERRIT_BRANCH"
submodule-recursive: true
- submodule-timeout: '{submodule-timeout}'
- submodule-disable: '{submodule-disable}'
+ submodule-timeout: 10
+ submodule-disable: false
choosing-strategy: default
- builders:
- - lf-infra-pre-build
- - lf-infra-docker-login:
- global-settings-file: 'global-settings'
- settings-file: '{mvn-settings}'
- - shell: '{pre_build_script}'
- - inject:
- # Docker registry is purposely not using an '_' so as to not conflict
- # with the Jenkins global env var
- properties-content: |
- DOCKER_ARGS={docker_build_args}
- DOCKER_NAME={docker_name}
- DOCKER_ROOT={docker_root}
- DOCKER_TAG={docker_tag}
- DOCKERREGISTRY={docker_registry}
- BUILD_MODE=STAGING
-
- # Do the docker build
- - shell: !include-raw: ../shell/snapshot-strip.sh
- - shell: !include-raw: ../shell/docker-build.sh
- - inject:
- # Import the docker image information from the build step
- properties-file: 'env_inject.txt'
- # Execute any post build clean-up or testing
- - shell: '{post_build_script}'
- # Provided all steps have already passed, push the docker image
- - shell: !include-raw: ../shell/docker-push.sh
-
triggers:
- - reverse:
- jobs:
- - '{parent_job}'
- result: 'success'
-
-- job-template:
- name: '{project-name}-{subproject}-{stream}-release-version-docker-no-sonar'
- # Job template for Docker final release job
- #
- # The purpose of this job template is to run "docker build and docker push"
- # for projects using this template.
- #
- # Required Variables:
- # branch: git branch (eg. stable/lithium or master)
- <<: *docker_job_boiler_plate
-
- docker_registry: '$DOCKER_REGISTRY:10003'
-
- scm:
- - lf-infra-gerrit-scm:
- jenkins-ssh-credential: '{jenkins-ssh-credential}'
- git-url: '$GIT_URL/$PROJECT'
- refspec: '$GERRIT_REFSPEC'
- branch: '$GERRIT_BRANCH'
- submodule-recursive: true
- submodule-timeout: '{submodule-timeout}'
- submodule-disable: '{submodule-disable}'
- choosing-strategy: default
+ - timed: "@daily"
+ - gerrit:
+ server-name: "{gerrit-server-name}"
+ trigger-on:
+ - comment-added-contains-event:
+ comment-contains-value: '^Patch Set\s+\d+:\s+stage-(docker-)?release\s*$'
+
+ projects:
+ - project-compare-type: ANT
+ project-pattern: "{project}"
+ branches:
+ - branch-compare-type: ANT
+ branch-pattern: "**/{branch}"
+ file-paths:
+ - compare-type: ANT
+ pattern: "**"
builders:
- - lf-infra-pre-build
- - lf-infra-docker-login:
- global-settings-file: 'global-settings'
- settings-file: '{mvn-settings}'
- - shell: '{pre_build_script}'
- - inject:
- # Docker registry is purposely not using an '_' so as to not conflict
- # with the Jenkins global env var
- properties-content: |
- DOCKER_ARGS={docker_build_args}
- DOCKER_NAME={docker_name}
- DOCKER_ROOT={docker_root}
- DOCKER_TAG={docker_tag}
- DOCKERREGISTRY={docker_registry}
- BUILD_MODE=STAGING
-
- # Do the docker build
- - shell: !include-raw: ../shell/snapshot-strip.sh
- - shell: !include-raw: ../shell/docker-build.sh
- - inject:
- # Import the docker image information from the build step
- properties-file: 'env_inject.txt'
- # Execute any post build clean-up or testing
- - shell: '{post_build_script}'
- # Provided all steps have already passed, push the docker image
- - shell: !include-raw: ../shell/docker-push.sh
-
-- job-template:
- name: '{project-name}-{subproject}-{stream}-release-version-docker-cascade-trigger-no-sonar'
- # Job template for Docker final release job
- #
- # The purpose of this job template is to run "docker build and docker push"
- # for projects using this template. This job has no cascading counterpart, because the
- # final release is moved manually to the release repo.
- #
- # Required Variables:
- # branch: git branch (eg. stable/lithium or master)
- <<: *docker_job_boiler_plate
-
- docker_registry: '$DOCKER_REGISTRY:10003'
-
- scm:
- - lf-infra-gerrit-scm:
- jenkins-ssh-credential: '{jenkins-ssh-credential}'
- git-url: '$GIT_URL/$PROJECT'
- refspec: '$GERRIT_REFSPEC'
- branch: '$GERRIT_BRANCH'
- submodule-recursive: true
- submodule-timeout: '{submodule-timeout}'
- submodule-disable: '{submodule-disable}'
- choosing-strategy: default
-
- builders:
- - lf-infra-pre-build
- - lf-infra-docker-login:
- global-settings-file: 'global-settings'
- settings-file: '{mvn-settings}'
- - shell: '{pre_build_script}'
- - inject:
- # Docker registry is purposely not using an '_' so as to not conflict
- # with the Jenkins global env var
- properties-content: |
- DOCKER_ARGS={docker_build_args}
- DOCKER_NAME={docker_name}
- DOCKER_ROOT={docker_root}
- DOCKER_TAG={docker_tag}
- DOCKERREGISTRY={docker_registry}
- BUILD_MODE=STAGING
-
- # Do the docker build
- - shell: !include-raw: ../shell/snapshot-strip.sh
- - shell: !include-raw: ../shell/docker-build.sh
- - inject:
- # Import the docker image information from the build step
- properties-file: 'env_inject.txt'
- # Execute any post build clean-up or testing
- - shell: '{post_build_script}'
- # Provided all steps have already passed, push the docker image
- - shell: !include-raw: ../shell/docker-push.sh
- triggers:
- - reverse:
- jobs:
- - '{parent_job}'
- result: 'success'
-
+ - multijob:
+ name: "build docker images"
+ condition: ALWAYS
+ execution-type: PARALLEL
+ projects:
+ - name: "{project-name}-amd64-maven-docker-stage-{stream}"
+ kill-phase-on: FAILURE
+ current-parameters: true
+ - name: "{project-name}-arm64-maven-docker-stage-{stream}"
+ kill-phase-on: NEVER
+ current-parameters: true
+ - multijob:
+ name: "publish docker manifest"
+ condition: SUCCESSFUL
+ execution-type: PARALLEL
+ projects:
+ - name: "{project-name}-docker-manifest-{stream}"
+ current-parameters: true
+ predefined-parameters: |
+ PARENT_JOB_NAME=$JOB_NAME
+ DOCKERHUB_REGISTRY=docker.io
+ publishers:
+ - lf-infra-publish