+++ /dev/null
----
-###########
-# 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-disable: false
- 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}-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:
- # Job template for creating a docker manifest list
- #
- # The purpose of this job template is to run:
- # 1. docker_push_manifest.sh script (which needs to exist in the
- # project implementation repo)
-
- name: '{project-name}-docker-manifest-{stream}'
- <<: *docker_job_boiler_plate
- node: '{build-node}'
- build-timeout: 15
-
- parameters:
- - lf-infra-parameters:
- project: '{project}'
- stream: '{stream}'
- branch: '{branch}'
- - string:
- name: PARENT_JOB_NAME
- default: 'none'
-
- 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'
- submodule-recursive: true
- submodule-disable: '{submodule-disable}'
- submodule-timeout: '{submodule-timeout}'
- choosing-strategy: default
-
-
- builders:
- - lf-infra-docker-login:
- global-settings-file: 'global-settings'
- settings-file: '{mvn-settings}'
- - shell: |
- #!/bin/bash -ex
- export PARENT_JOB_NAME
- ./docker_push_manifest.sh
-
-- job-template:
- # Job template for staging jobs on multiple architectures
- #
- # 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: '**'
-
- 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'
-
- disabled: '{obj:disabled}'
-
- 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'
- submodule-recursive: true
- submodule-timeout: 10
- submodule-disable: false
- choosing-strategy: default
-
- triggers:
- - 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:
- - 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