blob: a9681033fe4d940c37f94b6f32e0b90cc2771dd7 [file] [log] [blame]
---
# Global macros
# vim: sw=2 ts=2 sts=2 et :
# BUILDERS
- builder:
name: ci-management-check-unicode
builders:
- shell: |
$WORKSPACE/scripts/check-unicode.sh jjb/
- 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'
# PARAMETERS
- parameter:
name: ecomp-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-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'
# PROPERTIES
- property:
name: ecomp-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: ecomp-infra-shiplogs
# To archive things, the job will need to create an "archives" directory in
# the workspace and this macro will handle copying the contents of the
# archives directory.
#
# Uses the build parameter ARCHIVE_ARTIFACTS if not empty to find files to
# archive. You can pass globstar patterns for example "**/*.xml **/*.log" as
# the archive pattern. This is a space separated list of files to archive.
#
# Also ensure that the workspace is cleaned up at the end of the build.
publishers:
- postbuildscript:
builders:
- shell: !include-raw: include-raw-deploy-archives.sh
- maven-target:
maven-version: '{maven-version}'
pom: '.archives/deploy-archives.xml'
goals: 'clean deploy -V -B -q -Dmaven.repo.local=/tmp/r'
settings: 'jenkins-log-archives-settings'
settings-type: cfp
global-settings: 'global-settings'
global-settings-type: cfp
- description-setter:
regexp: '^Build logs: .*'
script-only-if-succeeded: false
script-only-if-failed: false
mark-unstable-if-failed: true
- workspace-cleanup:
fail-build: false`
# SCMS
- scm:
name: git-scm
scm:
- git:
credentials-id: 'ecomp-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: 'ecomp-jenkins-ssh'
url: '$GIT_BASE'
refspec: '{refspec}'
branches:
- 'origin/$GERRIT_BRANCH'
skip-tag: true
timeout: 30
choosing-strategy: '{choosing-strategy}'
- scm:
name: gerrit-trigger-scm-basedir
scm:
- git:
credentials-id: 'ecomp-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: 'ecomp-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: 'ecomp-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}'
# WRAPPERS
- wrapper:
name: build-timeout
wrappers:
- timeout:
type: absolute
timeout: 360
fail: true
- wrapper:
# This wrapper is required for all jobs as it configures the wrappers
# needed by the eCOMP infra.
name: ecomp-infra-wrappers
wrappers:
- timeout:
type: absolute
timeout: '{build-timeout}'
timeout-var: 'BUILD_TIMEOUT'
fail: true
- ssh-agent-credentials:
users:
- 'ecomp-jenkins-ssh'
- openstack:
single-use: true