--- ########### # 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' ##################### # 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-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-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-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-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 choosing-strategy: default builders: - 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: 'H 11 * * *' - 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 choosing-strategy: default builders: - 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-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-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-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-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 choosing-strategy: default builders: - 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: 'H 11 * * *' - 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 choosing-strategy: default builders: - 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 choosing-strategy: default builders: - 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 choosing-strategy: default builders: - 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'