X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=jjb%2Freleng-macros.yaml;h=c068143a63e5ce4714bea11be611928195157315;hb=098435742c9e0baa3f458f2827ffbcfcf6b7fe91;hp=80464d1c294cff3b00e0ebf16f4f497c5c202a2f;hpb=b25fab3b6ffe33665bda35905cb4a7f5361ebe43;p=releng%2Fbuilder.git diff --git a/jjb/releng-macros.yaml b/jjb/releng-macros.yaml index 80464d1c2..c068143a6 100644 --- a/jjb/releng-macros.yaml +++ b/jjb/releng-macros.yaml @@ -1,5 +1,11 @@ # OLD Releng macros +- property: + name: opendaylight-infra-properties + properties: + - build-discarder: + days-to-keep: '{build-days-to-keep}' + - parameter: name: opendaylight-infra-parameters parameters: @@ -9,7 +15,7 @@ description: 'Parameter to identify an ODL Gerrit project' - string: name: ARCHIVE_ARTIFACTS - default: '{artifacts} **/target/surefire-reports/*-output.txt' + default: '{artifacts} **/target/surefire-reports/*-output.txt **/hs_err_*.log' description: 'Space separated glob patterns for artifacts to archive into logs.opendaylight.org' - string: name: GERRIT_PROJECT @@ -23,6 +29,10 @@ 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: build-tag @@ -126,33 +136,19 @@ timeout: 360 fail: true +# 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: 'OpenDaylight' - 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' - - comment-added-contains-event: - comment-contains-value: 'reverify' - projects: - - project-compare-type: 'ANT' - project-pattern: '{name}' - branches: - - branch-compare-type: 'ANT' - branch-pattern: '**/{branch}' - -- trigger: - name: gerrit-trigger-relevant-patch-submitted - triggers: - - gerrit: - server-name: 'OpenDaylight' + server-name: '{server}' trigger-on: - patchset-created-event: exclude-drafts: 'true' @@ -161,41 +157,57 @@ - draft-published-event - comment-added-contains-event: comment-contains-value: 'recheck' - - comment-added-contains-event: - comment-contains-value: 'reverify' projects: - - project-compare-type: 'ANT' - project-pattern: '{name}' - branches: - - branch-compare-type: 'ANT' - branch-pattern: '**/{branch}' - + - project-compare-type: 'ANT' + project-pattern: '{project}' + branches: + - branch-compare-type: 'ANT' + branch-pattern: '**/{branch}' + file-paths: + - compare-type: 'ANT' + pattern: '{files}' + +# TODO: Unify argument names across gerrit-trigger-* macros. - trigger: name: gerrit-trigger-patch-merged triggers: - gerrit: - server-name: 'OpenDaylight' + server-name: '{server-name}' trigger-on: - change-merged-event - comment-added-contains-event: comment-contains-value: 'remerge' projects: - - project-compare-type: 'ANT' - project-pattern: '{name}' - branches: - - branch-compare-type: 'ANT' - branch-pattern: '**/{branch}' + - project-compare-type: 'ANT' + project-pattern: '{name}' + branches: + - branch-compare-type: 'ANT' + branch-pattern: '**/{branch}' skip-vote: successful: true failed: true unstable: true notbuilt: true - + # Force Jenkins always vote the values it should already have voted + # during the prior verify phase + override-votes: true + gerrit-build-started-verified-value: 1 + gerrit-build-successful-verified-value: 1 + gerrit-build-failed-verified-value: 1 + gerrit-build-unstable-verified-value: 1 + gerrit-build-notbuilt-verified-value: 1 + gerrit-build-started-codereview-value: 0 + gerrit-build-successful-codereview-value: 0 + gerrit-build-failed-codereview-value: 0 + gerrit-build-unstable-codereview-value: 0 + gerrit-build-notbuilt-codereview-value: 0 + +# TODO: Unify argument names across gerrit-trigger-* macros. - trigger: name: gerrit-trigger-patch-sonar triggers: - gerrit: - server-name: 'OpenDaylight' + server-name: '{server-name}' trigger-on: - comment-added-contains-event: comment-contains-value: 'run-sonar' @@ -211,22 +223,6 @@ unstable: true notbuilt: true -- trigger: - name: gerrit-trigger-patch-site-merged - triggers: - - gerrit: - server-name: 'OpenDaylight' - trigger-on: - - change-merged-event - - comment-added-contains-event: - comment-contains-value: 'republish' - projects: - - project-compare-type: 'ANT' - project-pattern: '{name}' - branches: - - branch-compare-type: 'ANT' - branch-pattern: '**/{branch}' - - publisher: name: archive-artifacts publishers: @@ -240,14 +236,21 @@ name: email-notification publishers: - email-ext: - recipients: 'jenkins@lists.opendaylight.org' - reply-to: + recipients: '{email-recipients}' + reply-to: '' content-type: default subject: '{email-prefix} $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!' body: | $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS: - Check console output at $BUILD_URL to view the results. + Please refer to the logs server URL for console logs when possible + and use the Jenkins Build URL as a last resort. + + Console Logs URL: + https://logs.opendaylight.org/$SILO/$JENKINS_HOSTNAME/$JOB_NAME/$BUILD_NUMBER + + Jenkins Build URL: + $BUILD_URL unstable: true fixed: true send-to: @@ -284,6 +287,7 @@ publishers: - postbuildscript: builders: + - shell: !include-raw: include-raw-stack-delete.sh - shell: !include-raw: include-raw-deploy-archives.sh - maven-target: maven-version: '{maven-version}' @@ -302,11 +306,43 @@ mark-unstable-if-failed: True - workspace-cleanup: exclude: - # autorelease-release-{stream} reqires vaiables.prop file to be preserved - # as the downstream test jobs fails invoke without automatically - - variables.prop + # 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 +- builder: + name: opendaylight-infra-stack + # opendaylight-infra-stack.sh has a required variable {stack-template} that + # must be passed into this macro. + builders: + - shell: !include-raw: opendaylight-infra-stack.sh + - shell: !include-raw-escape: opendaylight-infra-copy-ssh-keys.sh + +- builder: + name: opendaylight-infra-push-gerrit-patch + # opendaylight-infra-push-gerrit-patch.sh allows a job to push a patch to + # Gerrit in an automated fashion. This is meant for tasks that creates + # the same patch regularly and needs the ability to detect if an unreviewed + # patch already exists. In which case it will update the existing patch. + # + # Note: This patch assumes the $WORKSPACE contains the project repo with + # the files changed already "git add" and waiting for a "git commit" call. + # + # This script requires the following JJB variables to be passed in: + # {project} Gerrit project-name + # {gerrit-topic} Gerrit topic, please make a unique topic. + # {gerrit-commit-message} Commit message to assign to commit. + # NOTE: Requires git review to be installed on node. + builders: + - shell: !include-raw: opendaylight-infra-push-gerrit-patch.sh + +- builder: + name: distribute-build-url + # Place URL of the current run of a build job to a file at given path. + builders: + - shell: 'echo "$BUILD_URL" > {path}/build.url' + - builder: name: wipe-org-opendaylight-repo builders: @@ -394,6 +430,11 @@ # needed by OpenDaylight infra. name: opendaylight-infra-wrappers wrappers: + - mask-passwords + - config-file-provider: + files: + - file-id: rackspace-heat + target: '$HOME/.config/openstack/clouds.yaml' - timeout: type: absolute timeout: '{build-timeout}' @@ -403,8 +444,6 @@ - ssh-agent-credentials: users: - 'opendaylight-jenkins-ssh' - - jclouds: - single-use: True - openstack: single-use: True @@ -417,15 +456,33 @@ variable: 'CLOUDENV' - shell: | cd packer - export PACKER_LOG="yes" && \ - export PACKER_LOG_PATH="packer-validate.log" && \ - packer.io validate -var-file=$CLOUDENV \ - -var-file=../packer/vars/{platform}.json \ - ../packer/templates/{template}.json + varfiles="../packer/vars/*" + templates="../packer/templates/*" + provision="../packer/provision/*.sh" + for v in $varfiles; do + [[ "${v##*/}" =~ ^(cloud-env.*)$ ]] && continue + for t in $templates; do + export PACKER_LOG="yes" && \ + export PACKER_LOG_PATH="packer-validate-${v##*/}-${t##*/}.log" && \ + packer.io validate -var-file=$CLOUDENV \ + -var-file=$v $t + if [ $? -ne 0 ]; then + break + fi + done + done + for p in $provision; do + /bin/bash -n $p > provision-validate-${p##*/}.log 2>&1 + done + - builder: name: packer-build builders: + - config-file-provider: + files: + - file-id: 'packer-cloud-env' + variable: 'CLOUDENV' - shell: | cd packer export PACKER_LOG="yes" && \ @@ -433,3 +490,19 @@ packer.io build -var-file=$CLOUDENV \ -var-file=../packer/vars/{platform}.json \ ../packer/templates/{template}.json + +- builder: + # TODO: Verify signature after downloading users public key from a locally created + # repository instead of the public keymesh. This requires a process in place to get ODL + # developers public keys into a local repository without increasing the job thoughput. + name: verify-gpg-signature + builders: + - shell: !include-raw: include-raw-verify-gpg-signatures.sh + +- builder: + name: opendaylight-infra-jjbini + builders: + - config-file-provider: + files: + - file-id: 'jjbini' + target: '$HOME/.config/jenkins_jobs/jenkins_jobs.ini'