| --- |
| # 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: | |
| <org.jenkinsci.plugins.golang.GolangBuildWrapper plugin="golang@1.2"> |
| <goVersion>Golang 1.10</goVersion> |
| </org.jenkinsci.plugins.golang.GolangBuildWrapper> |
| |
| - wrapper: |
| name: golang111 |
| wrappers: |
| - raw: |
| xml: | |
| <org.jenkinsci.plugins.golang.GolangBuildWrapper plugin="golang@1.2"> |
| <goVersion>Golang 1.11</goVersion> |
| </org.jenkinsci.plugins.golang.GolangBuildWrapper> |
| |
| - wrapper: |
| name: golang112 |
| wrappers: |
| - raw: |
| xml: | |
| <org.jenkinsci.plugins.golang.GolangBuildWrapper plugin="golang@1.2"> |
| <goVersion>Golang 1.12</goVersion> |
| </org.jenkinsci.plugins.golang.GolangBuildWrapper> |
| |
| - wrapper: |
| name: golang114 |
| wrappers: |
| - raw: |
| xml: | |
| <org.jenkinsci.plugins.golang.GolangBuildWrapper plugin="golang@1.2"> |
| <goVersion>Golang 1.14</goVersion> |
| </org.jenkinsci.plugins.golang.GolangBuildWrapper> |
| |
| - 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 |