project-type: freestyle
concurrent: true
node: '{build-node}'
+ build-env-variables: ''
pattern: '**'
pom:
-
+ mvn-opts: ''
+ java-opts: ''
+ java-version: openjdk8
properties:
- infra-properties:
build-days-to-keep: '{build-days-to-keep}'
builders:
- lf-infra-pre-build
+ - lf-update-java-alternatives:
+ java-version: "{java-version}"
- provide-maven-settings:
global-settings-file: 'global-settings'
settings-file: '{mvn-settings}'
+ - inject:
+ properties-content: "{build-env-variables}"
- maven-target:
maven-version: '{maven-version}'
pom: '{obj:pom}'
goals: 'clean install -B
-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn {mvn-params}'
+ properties:
+ - MAVEN_OPTS='{mvn-opts}'
+ java-opts:
+ - "{java-opts}"
settings: '{mvn-settings}'
settings-type: cfp
global-settings: 'global-settings'
global-settings-type: cfp
publishers:
- - infra-shiplogs:
- maven-version: '{maven-version}'
+ - lf-infra-publish
- job-template:
# Job template for Java verify jobs running checkstyle at the end
<<: *verify_java_defaults
name: '{project-name}-{stream}-verify-java-checkstyle'
+
publishers:
- - infra-shiplogs:
- maven-version: '{maven-version}'
+ - lf-infra-publish
- checkstyle-result
- job-template:
name: '{project-name}-{stream}-{subproject}-verify-java'
- job-template:
- # Job template for Java daily release jobs
+ # Job template for Java integration pairwise jobs
#
# The purpose of this job template is to run:
- # 1. maven clean deploy with Sonar scans
+ # 1. maven clean install
#
# Required Variables:
# branch: git branch (eg. stable/lithium or master)
- name: '{project-name}-{stream}-release-java-daily'
-
- project-type: freestyle
- node: '{build-node}'
- disabled: '{disabled}'
- maven-deploy-properties:
- properties:
- - infra-properties:
- build-days-to-keep: '{build-days-to-keep}'
-
- parameters:
- - infra-parameters:
- project: '{project}'
- branch: '{branch}'
- refspec: 'refs/heads/{branch}'
- artifacts: '{archive-artifacts}'
- - maven-exec:
- maven-version: '{maven-version}'
-
- scm:
- - gerrit-trigger-scm:
- refspec: ''
- choosing-strategy: 'default'
- submodule-recursive: '{submodule-recursive}'
-
- wrappers:
- - infra-wrappers:
- build-timeout: '{build-timeout}'
-
+ <<: *verify_java_defaults
+ name: '{project-name}-{stream}-integration-pairwise'
triggers:
- # 11 AM UTC
- timed: '@daily'
- - gerrit-trigger-release-manually:
+ - gerrit-trigger-patch-submitted:
server: '{server-name}'
project: '{project}'
branch: '{branch}'
-
- builders:
- - lf-infra-pre-build
- - provide-maven-settings:
- global-settings-file: 'global-settings'
- settings-file: '{mvn-settings}'
-
- - maven-target:
- maven-version: '{maven-version}'
- goals: 'clean deploy -B
- -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
- properties:
- - '{maven-deploy-properties}'
- java-opts:
- - '-Xmx4096m -XX:MaxPermSize=512m'
- settings: '{mvn-settings}'
- settings-type: cfp
- global-settings: 'global-settings'
- global-settings-type: cfp
-
- publishers:
- - infra-shiplogs:
- maven-version: '{maven-version}'
+ files: '{obj:pattern}'
- job-template:
# Job template for Java daily release jobs running checkstyle at the end
settings-type: cfp
global-settings: 'global-settings'
global-settings-type: cfp
+
publishers:
- - infra-shiplogs:
- maven-version: '{maven-version}'
+ - lf-infra-publish
- checkstyle-result-daily
- job-template:
global-settings-type: cfp
publishers:
- - infra-shiplogs:
- maven-version: '{maven-version}'
-
-- job-template:
- # Job template for Java daily release jobs
- #
- # The purpose of this job template is to run:
- # 1. maven set versions
- # 2. maven clean deploy -P {mvn-profile} with Sonar scans
- #
- # Required Variables:
- # branch: git branch (eg. stable/lithium or master)
-
- name: '{project-name}-{stream}-release-version-profile-java-daily'
-
- project-type: freestyle
- node: '{build-node}'
- disabled: '{disabled}'
- maven-deploy-properties:
- properties:
- - infra-properties:
- build-days-to-keep: '{build-days-to-keep}'
-
- parameters:
- - infra-parameters:
- project: '{project}'
- branch: '{branch}'
- refspec: 'refs/heads/{branch}'
- artifacts: '{archive-artifacts}'
- - maven-exec:
- maven-version: '{maven-version}'
-
- scm:
- - gerrit-trigger-scm:
- refspec: ''
- choosing-strategy: 'default'
- submodule-recursive: '{submodule-recursive}'
-
- wrappers:
- - infra-wrappers:
- build-timeout: '{build-timeout}'
-
- triggers:
- # 11 AM UTC
- - timed: '@daily'
- - gerrit-trigger-release-manually:
- server: '{server-name}'
- project: '{project}'
- branch: '{branch}'
-
- builders:
- - lf-infra-pre-build
- - provide-maven-settings:
- global-settings-file: 'global-settings'
- settings-file: '{mvn-settings}'
-
- - inject:
- properties-file: version.properties
- - maven-set-release-version:
- maven-version: '{maven-version}'
- mvn-settings: '{mvn-settings}'
- pom:
-
- - maven-target:
- maven-version: '{maven-version}'
- goals: 'clean deploy -P {mvn-profile} -B
- -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
- properties:
- - '{maven-deploy-properties}'
- settings: '{mvn-settings}'
- settings-type: cfp
- global-settings: 'global-settings'
- global-settings-type: cfp
-
- publishers:
- - infra-shiplogs:
- maven-version: '{maven-version}'
-
-
-- job-template:
- # Job template for Java daily release jobs with POM not at the root
- #
- # The purpose of this job template is to run:
- # 1. maven clean deploy with Sonar scans
- #
- # This job supports subprojects.
- #
- # Required Variables:
- # branch: git branch (eg. stable/lithium or master)
- # pom: name/location of the pom.xml file relative to the workspace
-
- name: '{project-name}-{stream}-{subproject}-release-java-daily'
-
- project-type: freestyle
- node: '{build-node}'
- disabled: '{disabled}'
- maven-deploy-properties:
- properties:
- - infra-properties:
- build-days-to-keep: '{build-days-to-keep}'
-
- parameters:
- - infra-parameters:
- project: '{project}'
- branch: '{branch}'
- refspec: 'refs/heads/{branch}'
- artifacts: '{archive-artifacts}'
- - maven-exec:
- maven-version: '{maven-version}'
-
- scm:
- - gerrit-trigger-scm:
- refspec: ''
- choosing-strategy: 'default'
- submodule-recursive: '{submodule-recursive}'
-
- wrappers:
- - infra-wrappers:
- build-timeout: '{build-timeout}'
-
- triggers:
- # 11 AM UTC
- - timed: '@daily'
- - gerrit-trigger-release-manually:
- server: '{server-name}'
- project: '{project}'
- branch: '{branch}'
-
- builders:
- - lf-infra-pre-build
- - provide-maven-settings:
- global-settings-file: 'global-settings'
- settings-file: '{mvn-settings}'
-
- - maven-target:
- maven-version: '{maven-version}'
- pom: '{pom}'
- goals: 'clean deploy -B
- -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
- properties:
- - '{maven-deploy-properties}'
- java-opts:
- - '-Xmx4096m -XX:MaxPermSize=512m'
- settings: '{mvn-settings}'
- settings-type: cfp
- global-settings: 'global-settings'
- global-settings-type: cfp
-
- publishers:
- - infra-shiplogs:
- maven-version: '{maven-version}'
-
-- job-template:
- # Job template for Java daily release jobs with POM not at the root
- #
- # The purpose of this job template is to run:
- # 1. maven set versions
- # 2. maven clean deploy with Sonar scans
- #
- # This job supports subprojects.
- #
- # Required Variables:
- # branch: git branch (eg. stable/lithium or master)
- # pom: name/location of the pom.xml file relative to the workspace
-
- name: '{project-name}-{stream}-{subproject}-release-version-java-daily'
-
- project-type: freestyle
- node: '{build-node}'
- disabled: '{disabled}'
- maven-deploy-properties:
- properties:
- - infra-properties:
- build-days-to-keep: '{build-days-to-keep}'
-
- parameters:
- - infra-parameters:
- project: '{project}'
- branch: '{branch}'
- refspec: 'refs/heads/{branch}'
- artifacts: '{archive-artifacts}'
- - maven-exec:
- maven-version: '{maven-version}'
-
- scm:
- - gerrit-trigger-scm:
- refspec: ''
- choosing-strategy: 'default'
- submodule-recursive: '{submodule-recursive}'
-
- wrappers:
- - infra-wrappers:
- build-timeout: '{build-timeout}'
-
- triggers:
- # 11 AM UTC
- - timed: '@daily'
- - gerrit-trigger-release-manually:
- server: '{server-name}'
- project: '{project}'
- branch: '{branch}'
-
- builders:
- - lf-infra-pre-build
- - provide-maven-settings:
- global-settings-file: 'global-settings'
- settings-file: '{mvn-settings}'
-
- - inject:
- properties-file: version.properties
- - maven-set-release-version:
- maven-version: '{maven-version}'
- mvn-settings: '{mvn-settings}'
- pom: '{pom}'
-
- - maven-target:
- maven-version: '{maven-version}'
- pom: '{pom}'
- goals: 'clean deploy -B
- -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
- properties:
- - '{maven-deploy-properties}'
- settings: '{mvn-settings}'
- settings-type: cfp
- global-settings: 'global-settings'
- global-settings-type: cfp
-
- publishers:
- - infra-shiplogs:
- maven-version: '{maven-version}'
-
+ - lf-infra-publish
- job-template: &merge_java_defaults
# Job template for Java merge jobs
pom:
mvn_properties: []
mvn-params: ''
+ mvn-opts: ''
+ java-opts: ''
+ java-version: openjdk8
properties:
- infra-properties:
submodule-recursive: '{submodule-recursive}'
wrappers:
- - infra-wrappers:
+ - lf-infra-wrappers:
build-timeout: '{build-timeout}'
+ jenkins-ssh-credential: '{jenkins-ssh-credential}'
triggers:
- gerrit-trigger-patch-merged:
builders:
- lf-infra-pre-build
+ - lf-update-java-alternatives:
+ java-version: "{java-version}"
- provide-maven-settings:
global-settings-file: 'global-settings'
settings-file: '{mvn-settings}'
+ - conditional-step:
+ condition-kind: regex-match
+ regex: .*(amd64|arm64).*
+ label: '{project-name}'
+ steps:
+ - shell: !include-raw-escape: global-jjb/shell/docker-login.sh
- maven-target:
maven-version: '{maven-version}'
pom: '{obj:pom}'
goals: 'clean deploy -B {mvn-params}
-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
+ properties:
+ - MAVEN_OPTS='{mvn-opts}'
+ java-opts:
+ - "{java-opts}"
settings: '{mvn-settings}'
settings-type: cfp
global-settings: 'global-settings'
properties: '{obj:mvn_properties}'
publishers:
- - infra-shiplogs:
- maven-version: '{maven-version}'
+ - lf-infra-publish
- job-template:
# Job template for Java merge jobs based on
<<: *merge_java_defaults
name: '{project-name}-{stream}-merge-properties-java'
+ wrappers:
+ - lf-infra-wrappers:
+ build-timeout: '{build-timeout}'
+ jenkins-ssh-credential: '{jenkins-ssh-credential}'
+
- job-template:
# Job template for Java merge jobs that takes a maven template
#
project-type: freestyle
node: '{build-node}'
disabled: '{disabled}'
+ java-version: openjdk8
properties:
- infra-properties:
build-days-to-keep: '{build-days-to-keep}'
builders:
- lf-infra-pre-build
+ - lf-update-java-alternatives:
+ java-version: "{java-version}"
+
- provide-maven-settings:
global-settings-file: 'global-settings'
settings-file: '{mvn-settings}'
mvn-params: '{mvn-params}'
publishers:
- - infra-shiplogs:
- maven-version: '{maven-version}'
+ - lf-infra-publish
- job-template:
# Job template for Docker daily jobs
- infra-wrappers-docker-build:
build-timeout: '{build-timeout}'
-- job-template:
- # Job template for building & pushing docker images
- #
- # The purpose of this job template is to run:
- # 1. login to the docker registry
- # 2. maven clean deploy on the specified profile
- #
- # This job uses a conditional regex match step to set versions.
- # This template supports maven properties.
- #
- # Required Variables:
- # pom: name/location of the pom.xml file relative to the workspace
- # profile: the docker profile defined in the pom
- # maven-properties: properties passed to maven
-
- name: '{project-name}-{stream}-docker-java-properties-daily'
- project-type: freestyle
- node: '{build-node}'
- disabled: '{disabled}'
- properties:
- - infra-properties:
- build-days-to-keep: '{build-days-to-keep}'
- parameters:
- - infra-parameters:
- project: '{project}'
- branch: '{branch}'
- refspec: 'refs/heads/{branch}'
- artifacts: '{archive-artifacts}'
- - maven-exec:
- maven-version: '{maven-version}'
- - maven-params:
- mvn-params: '{mvn-params}'
- scm:
- - gerrit-trigger-scm:
- refspec: ''
- choosing-strategy: 'default'
- submodule-recursive: '{submodule-recursive}'
- wrappers:
- - infra-wrappers:
- build-timeout: '{build-timeout}'
- triggers:
- # 12 AM UTC
- - timed: '@daily'
- - gerrit-trigger-release-manually:
- server: '{server-name}'
- project: '{project}'
- branch: '{branch}'
- builders:
- - lf-infra-pre-build
- - provide-maven-settings:
- global-settings-file: 'global-settings'
- settings-file: '{mvn-settings}'
- - conditional-step:
- condition-kind: regex-match
- regex: DoSetVersion
- label: '{setVersion}'
- steps:
- - inject:
- properties-file: version.properties
- - maven-set-release-version:
- maven-version: '{maven-version}'
- mvn-settings: '{mvn-settings}'
- pom:
- - docker-login
- - maven-docker-push-daily:
- maven-version: '{maven-version}'
- mvn-settings: '{mvn-settings}'
- pom: '{docker-pom}'
- properties: '{maven-properties}'
- # use default as mvn-profile if profile is not needed
- mvn-profile: '{mvn-profile}'
- mvn-params: '{mvn-params}'
- publishers:
- - infra-shiplogs:
- maven-version: '{maven-version}'
-
- job-template:
# Job template for building & pushing docker images
#
- shell: '{script}'
publishers:
- - infra-shiplogs:
- maven-version: '{maven-version}'
+ - lf-infra-publish
- job-template:
# Job template for building & pushing docker images
- shell: '{script}'
publishers:
- - infra-shiplogs:
- maven-version: '{maven-version}'
+ - lf-infra-publish
- job-template:
# Job template for building & pushing docker images
name: '{project-name}-{stream}-docker-java-version-shell-daily'
project-type: freestyle
- node: 'ubuntu1604-docker-8c-8g'
+ node: '{build-node}'
disabled: '{disabled}'
properties:
- infra-properties:
- shell: '{script}'
publishers:
- - infra-shiplogs:
- maven-version: '{maven-version}'
+ - lf-infra-publish
- job-template:
# Job template for building & pushing docker images
name: '{project-name}-{stream}-{subproject}-docker-java-version-shell-daily'
project-type: freestyle
- node: 'ubuntu1604-docker-8c-8g'
+ node: 'ubuntu1804-docker-8c-8g'
disabled: '{disabled}'
properties:
- infra-properties:
- shell: '{script}'
publishers:
- - infra-shiplogs:
- maven-version: '{maven-version}'
+ - lf-infra-publish
- job-template: &docker_version_java_defaults
# Job template for building & pushing docker images
name: '{project-name}-{stream}-docker-version-java-daily'
id: '{project-name}-{stream}-docker-version-java-daily'
project-type: freestyle
- node: 'ubuntu1604-docker-8c-8g'
+ node: '{build-node}'
disabled: '{disabled}'
properties:
- infra-properties:
mvn-params: '{mvn-params}'
publishers:
- - infra-shiplogs:
- maven-version: '{maven-version}'
+ - lf-infra-publish
- job-template:
# Job template for building & pushing docker images
node: '{build-node}'
docker-image-name: ''
disabled: '{disabled}'
+ java-version: 'openjdk8'
properties:
- infra-properties:
build-days-to-keep: '{build-days-to-keep}'
builders:
- lf-infra-pre-build
+ - lf-update-java-alternatives:
+ java-version: "{java-version}"
- provide-maven-settings:
global-settings-file: 'global-settings'
settings-file: '{mvn-settings}'
- shell: !include-raw-escape: include-docker-push.sh
publishers:
- - infra-shiplogs:
- maven-version: '{maven-version}'
+ - lf-infra-publish
- job-template:
# Job template for Java merge jobs for SDC specific repos
<<: *merge_java_defaults
name: '{project-name}-{stream}-sdc-merge-java'
- node: 'ubuntu1604-docker-8c-8g'
+ node: '{build-node}'
build-timeout: 120
builders:
- lf-infra-pre-build
+ - lf-update-java-alternatives:
+ java-version: "{java-version}"
- provide-maven-settings:
global-settings-file: 'global-settings'
settings-file: '{mvn-settings}'
# use default as mvn-profile if profile is not needed
mvn-profile: '{mvn-profile}'
mvn-params: ''
+
+- job-template:
+ # Job template for Java merge jobs on multiple architectures
+ #
+ # The purpose of this job template is to:
+ # 1. Run parallel {project-name}-{stream}-verify-java jobs for each supported architecture
+ # 2. Build and push a docker manifest list for the images created by
+ # the previous jobs
+
+ name: '{project-name}-multiarch-{stream}-merge-java'
+ node: '{build-node}'
+ project-type: multijob
+ disabled: '{obj:disabled}'
+ 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'
+
+ properties:
+ - throttle:
+ max-per-node: 1
+ option: 'project'
+ - build-blocker:
+ use-build-blocker: true
+ blocking-jobs:
+ - '{project-name}-.*-merge-.*'
+ blocking-level: 'NODE'
+
+ scm:
+ - gerrit-trigger-scm:
+ refspec: ''
+ choosing-strategy: 'default'
+ submodule-recursive: '{submodule-recursive}'
+
+ wrappers:
+ - infra-wrappers:
+ build-timeout: '{build-timeout}'
+
+ triggers:
+ - gerrit-trigger-patch-merged:
+ server: '{server-name}'
+ project: '{project}'
+ branch: '{branch}'
+ files: '{pattern}'
+
+ builders:
+ - multijob:
+ name: 'build docker images'
+ condition: ALWAYS
+ execution-type: PARALLEL
+ projects:
+ - name: '{project-name}-amd64-{stream}-merge-java'
+ kill-phase-on: FAILURE
+ current-parameters: true
+ - name: '{project-name}-arm64-{stream}-merge-java'
+ 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