--- # 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: '^verify-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-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: golang wrappers: - raw: xml: | Golang 1.10 - 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