--- # 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 # 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-no-code-change: "false" exclude-trivial-rebase: "false" exclude-wip: "true" - 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