---
# Global macros
# vim: sw=2 ts=2 sts=2 et :
# BUILDERS
- builder:
name: provide-maven-settings
builders:
- config-file-provider:
files:
- file-id: '{global-settings-file}'
variable: 'GLOBAL_SETTINGS_FILE'
- file-id: '{settings-file}'
variable: 'SETTINGS_FILE'
# call maven-target builder with a goal of --version to force Jenkins to
# install the needed maven version
- builder:
name: maven-install
builders:
- maven-target:
maven-version: '{maven-version}'
goals: '--version'
- builder:
name: maven-set-release-version
builders:
- maven-target:
maven-version: '{maven-version}'
pom: '{pom}'
goals: 'versions:set versions:update-child-modules versions:commit -B'
properties:
- 'newVersion=${{release_version}}'
settings: '{mvn-settings}'
settings-type: cfp
global-settings: 'global-settings'
global-settings-type: cfp
- builder:
name: maven-docker-push-release
builders:
- maven-target:
maven-version: '{maven-version}'
pom: '{pom}'
goals: 'clean deploy -B -P {mvn-profile}'
settings: '{mvn-settings}'
settings-type: cfp
global-settings: 'global-settings'
global-settings-type: cfp
properties:
- maven.test.skip=true
- docker.pull.registry=nexus3.onap.org:10001
- docker.push.registry=nexus3.onap.org:10002
- builder:
name: maven-docker-push-daily
builders:
- maven-target:
maven-version: '{maven-version}'
pom: '{pom}'
goals: 'clean deploy -B -P {mvn-profile} {mvn-params}'
settings: '{mvn-settings}'
settings-type: cfp
global-settings: 'global-settings'
global-settings-type: cfp
properties:
- docker.pull.registry=nexus3.onap.org:10001
- docker.push.registry=nexus3.onap.org:10003
- builder:
name: docker-login
builders:
- shell: !include-raw: include-docker-login.sh
- builder:
name: publish-pypi
builders:
- inject:
properties-content: PYPI_SERVER={pypi-server}
- shell:
!include-raw-escape: ../shell/pypi-publish.sh
# PARAMETERS
- parameter:
name: infra-parameters
parameters:
- string:
name: PROJECT
default: '{project}'
# yamllint disable rule:line-length
description: 'JJB configured PROJECT parameter to identify a Gerrit project'
# yamllint enable
- string:
name: ARCHIVE_ARTIFACTS
default: '{artifacts} **/target/surefire-reports/*-output.txt'
# yamllint disable rule:line-length
description: 'Space separated glob patterns for artifacts to archive to logs hosting'
# yamllint enable
- string:
name: GERRIT_BRANCH
default: '{branch}'
description: 'JJB configured GERRIT_BRANCH parameter'
- string:
name: GERRIT_PROJECT
default: '{project}'
description: 'GERRIT_PROJECT parameter if not given by trigger'
- string:
name: GERRIT_REFSPEC
default: '{refspec}'
description: 'GERRIT_REFSPEC parameter if not given by trigger'
- string:
name: STACK_NAME
default: '$JOB_NAME-$BUILD_NUMBER'
description: 'Used by Heat to generate a unique stack & vm name'
- parameter:
name: maven-params
parameters:
- string:
name: MAVEN_PARAMS
default: '{mvn-params}'
description: Maven parameters to pass to the mvn command.
- parameter:
name: maven-exec
parameters:
- string:
name: MVN
# yamllint disable rule:line-length
default: '/w/tools/hudson.tasks.Maven_MavenInstallation/{maven-version}/bin/mvn'
# yamllint enable
description: 'Maven selector to be used by shell scripts'
- parameter:
name: docker-image-name
parameters:
- string:
name: DOCKER_IMAGE_NAME
# yamllint disable rule:line-length
default: '{docker-image-name}'
# yamllint enable
description: 'Docker image name, e.g. onap/appc'
# PROPERTIES
- property:
name: infra-properties
properties:
- build-discarder:
days-to-keep: '{build-days-to-keep}'
num-to-keep: 40
artifact-days-to-keep: -1
artifact-num-to-keep: 5
# PUBLISHERS
- publisher:
name: archive-artifacts
publishers:
- archive:
artifacts: '{artifacts}'
allow-empty: true
fingerprint: true
latest-only: true
- publisher:
name: email-notification
publishers:
- email-ext:
recipients: 'nobody@open-o.org'
reply-to:
content-type: default
# yamllint disable rule:line-length
subject: '{email-prefix} $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!'
# yamllint enable
body: |
$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS:
Check console output at $BUILD_URL to view the results.
unstable: true
fixed: true
send-to:
- developers
- recipients
- publisher:
name: jacoco-report
publishers:
- jacoco:
exec-pattern: '**/**.exec'
class-pattern: '**/classes'
source-pattern: '**/src/main/java'
# yamllint disable rule:line-length
exclusion-pattern: '**/gen**,**/generated-sources/**,**/yang-gen**,**/pax/**'
# yamllint enable
status-update: true
targets:
- branch:
healthy: 10
unhealthy: 20
- method:
healthy: 50
unhealthy: 40
- publisher:
name: checkstyle-result
publishers:
- checkstyle:
pattern: '**/checkstyle-result.xml'
healthy: 0
unhealthy: 100
health-threshold: 'high'
thresholds:
unstable:
total-all: 30
total-high: 15
total-normal: 20
total-low: 25
new-all: 5
new-high: 0
new-normal: 2
new-low: 5
- publisher:
name: checkstyle-result-daily
publishers:
- checkstyle:
pattern: '**/checkstyle-result.xml'
healthy: 0
unhealthy: 100
health-threshold: 'high'
thresholds:
unstable:
total-all: 30
total-high: 15
total-normal: 20
total-low: 25
new-all: 1
new-high: 0
new-normal: 1
new-low: 1
- publisher:
name: infra-shiplogs
# lf-infra macro to finish up a build.
#
# Handles the following:
# - Shipping logs to Nexus logs site repository
# - Cleanup workspace
publishers:
- postbuildscript:
builders:
- role: BOTH
build-on:
- ABORTED
- FAILURE
- NOT_BUILT
- SUCCESS
- UNSTABLE
build-steps:
- lf-infra-sysstat
- lf-infra-ship-logs
mark-unstable-if-failed: true
- workspace-cleanup:
exclude:
# Do not clean up *.jenkins-trigger files for jobs that use a
# properties file as input for triggering another build.
- '**/*.jenkins-trigger'
fail-build: false
# SCMS
- scm:
name: git-scm
scm:
- git:
credentials-id: 'onap-jenkins-ssh'
url: '$GIT_BASE'
refspec: ''
branches:
- 'origin/{branch}'
skip-tag: true
wipe-workspace: true
timeout: 30
- scm:
name: gerrit-trigger-scm
scm:
- git:
credentials-id: 'onap-jenkins-ssh'
url: '$GIT_BASE'
refspec: '{refspec}'
branches:
- 'origin/$GERRIT_BRANCH'
skip-tag: true
timeout: 30
choosing-strategy: '{choosing-strategy}'
submodule:
recursive: '{submodule-recursive}'
- scm:
name: gerrit-trigger-scm-basedir
scm:
- git:
credentials-id: 'onap-jenkins-ssh'
url: '$GIT_BASE'
refspec: '{refspec}'
branches:
- 'origin/$GERRIT_BRANCH'
skip-tag: true
timeout: 30
choosing-strategy: '{choosing-strategy}'
basedir: '{basedir}'
- scm:
name: git-branch-scm
scm:
- git:
credentials-id: 'onap-jenkins-ssh'
url: '$GIT_BASE'
refspec: ''
branches:
- 'origin/{branch}'
skip-tag: true
timeout: 30
wipe-workspace: true
- scm:
name: git-extra-project
scm:
- git:
credentials-id: 'onap-jenkins-ssh'
url: '$GIT_NO_PROJECT/{project}'
refspec: '{refspec}'
branches:
- 'origin/{branch}'
skip-tag: true
timeoute: 30
wipe-workspace: false
basedir: '{checkout-dir}'
# TRIGGERS
# This is a single macro to use for all jobs who vote on every (relevant) patch
# set. Only 'recheck' trigger word is supported, it always triggers the full set
# of relevant jobs, in order to prevent Jenkins from starting only a subset and
# still voting Verified+1
# Arguments:
# server: name of gerrit server to listen to
# project: pattern to match triggering projects
# branch: triggering branch name
# files: pattern to match triggering filepaths
- trigger:
name: gerrit-trigger-patch-submitted
triggers:
- gerrit:
server-name: '{server}'
trigger-on:
- patchset-created-event:
exclude-drafts: 'false'
exclude-trivial-rebase: 'false'
exclude-no-code-change: 'false'
- draft-published-event
- comment-added-contains-event:
comment-contains-value: 'recheck'
projects:
- project-compare-type: 'ANT'
project-pattern: '{project}'
branches:
- branch-compare-type: 'ANT'
branch-pattern: '**/{branch}'
file-paths:
- compare-type: 'ANT'
pattern: '{files}'
- trigger:
name: gerrit-trigger-patch-merged
triggers:
- gerrit:
server-name: '{server}'
trigger-on:
- change-merged-event
- comment-added-contains-event:
comment-contains-value: 'remerge'
projects:
- project-compare-type: 'ANT'
project-pattern: '{project}'
branches:
- branch-compare-type: 'ANT'
branch-pattern: '**/{branch}'
file-paths:
- compare-type: 'ANT'
pattern: '{files}'
- trigger:
name: gerrit-trigger-helm-patch-submitted
triggers:
- gerrit:
server-name: '{server}'
trigger-on:
- patchset-created-event:
exclude-drafts: 'false'
exclude-trivial-rebase: 'false'
exclude-no-code-change: 'false'
- draft-published-event
- comment-added-contains-event:
comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify|verify-helm)\s*$'
projects:
- project-compare-type: 'ANT'
project-pattern: '{project}'
branches:
- branch-compare-type: 'ANT'
branch-pattern: '**/{branch}'
file-paths:
- compare-type: 'ANT'
pattern: '{files}'
- trigger:
name: gerrit-trigger-helm-patch-merged
triggers:
- gerrit:
server-name: '{server}'
trigger-on:
- change-merged-event
- comment-added-contains-event:
comment-contains-value: '^remerge-helm$'
projects:
- project-compare-type: 'ANT'
project-pattern: '{project}'
branches:
- branch-compare-type: 'ANT'
branch-pattern: '**/{branch}'
file-paths:
- compare-type: 'ANT'
pattern: '{files}'
- trigger:
name: gerrit-trigger-release-manually
triggers:
- gerrit:
server-name: '{server}'
trigger-on:
- comment-added-contains-event:
comment-contains-value: 'please release'
projects:
- project-compare-type: 'ANT'
project-pattern: '{project}'
branches:
- branch-compare-type: 'ANT'
branch-pattern: '**/{branch}'
file-paths:
- compare-type: 'ANT'
pattern: '**'
- trigger:
name: trigger-on-build-success
triggers:
- reverse:
jobs: '{job-name}'
result: 'success'
# WRAPPERS
- wrapper:
name: build-timeout
wrappers:
- timeout:
type: absolute
timeout: 360
fail: true
- wrapper:
name: golang110
wrappers:
- raw:
xml: |
Golang 1.10
- wrapper:
name: golang111
wrappers:
- raw:
xml: |
Golang 1.11
- wrapper:
name: golang112
wrappers:
- raw:
xml: |
Golang 1.12
- wrapper:
name: golang114
wrappers:
- raw:
xml: |
Golang 1.14
- wrapper:
# This wrapper is required for all jobs as it configures the wrappers
# needed by the eCOMP infra.
name: infra-wrappers
wrappers:
- timestamps
- timeout:
type: absolute
timeout: '{build-timeout}'
timeout-var: 'BUILD_TIMEOUT'
fail: true
- ssh-agent-credentials:
users:
- 'onap-jenkins-ssh'
- openstack:
single-use: true
- wrapper:
# This wrapper is used for docker build jobs to use the dedicated docker
# build VM and turn off OpenStack single-use
name: infra-wrappers-docker-build
wrappers:
- timestamps
- timeout:
type: absolute
timeout: '{build-timeout}'
timeout-var: 'BUILD_TIMEOUT'
fail: true
- ssh-agent-credentials:
users:
- 'onap-jenkins-ssh'
- openstack:
single-use: false