blob: db3d4cfc73aec81b2a6b3f91aa388bfc8289227a [file] [log] [blame]
---
###########
# ANCHORS #
###########
- docker_job_boiler_plate: &docker_job_boiler_plate
name: docker_job_boiler_plate
project-type: freestyle
node: '{build-node}'
######################
# Default parameters #
######################
branch: master
submodule-recursive: true
# default params for docker jobs
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'
submodule-timeout: 10
#####################
# Job Configuration #
#####################
properties:
- lf-infra-properties:
build-days-to-keep: '{build-days-to-keep}'
parameters:
- lf-infra-parameters:
branch: '{branch}'
project: '{project}'
stream: '{stream}'
lftools-version: '{lftools-version}'
wrappers:
- lf-infra-wrappers:
build-timeout: '{build-timeout}'
jenkins-ssh-credential: '{jenkins-ssh-credential}'
publishers:
- lf-infra-publish
- 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}'
triggers:
- gerrit-trigger-patch-submitted:
status-context: '{project}-Docker-Verify'
server: '{server-name}'
project: '{project}'
branch: '{branch}'
files: '{files}'
- 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}'
triggers:
- gerrit-trigger-patch-merged:
server: '{server-name}'
project: '{project}'
branch: '{branch}'
files: '{files}'
- pollscm:
cron: ''
#################
# JOB TEMPLATES #
#################
- job-template:
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
# test validation of 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}
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
- 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'
# 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}
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}'
- job-template:
name: '{project-name}-{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. 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'
- 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)
<<: *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}'
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
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}'
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}-merge-docker'
# 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
<<: *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
- 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}'
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
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}'
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}'
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
- 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}'
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'