X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=jjb%2Fglobal-macros.yaml;h=6aebfa0d64e52ce2977116a241df71effb568741;hb=2bbee9690f977d3b11dd7328c86a6444252310fc;hp=8e7878b5ee9990193431e20a1e9684bd124d20d3;hpb=fccf9af431f7daaf3e46d2f87e7b502bb7d6d92d;p=ci-management.git diff --git a/jjb/global-macros.yaml b/jjb/global-macros.yaml index 8e7878b5e..6aebfa0d6 100644 --- a/jjb/global-macros.yaml +++ b/jjb/global-macros.yaml @@ -25,6 +25,14 @@ default: '{project}' description: "GERRIT_PROJECT parameter if not given by trigger" +- parameter: + name: os-parameter + parameters: + - string: + name: OS + default: '{os}' + description: "OS parameter" + - parameter: name: gerrit-refspec-parameter parameters: @@ -41,6 +49,46 @@ default: '{maven}' description: 'Maven selector to be used by shell scripts' +- parameter: + name: maven-exec + parameters: + - string: + name: MVN + default: '/w/tools/hudson.tasks.Maven_MavenInstallation/{maven-version}/bin/mvn' + description: 'Maven selector to be used by shell scripts' + +- parameter: + name: repo-name-parameter + parameters: + - string: + name: REPO_NAME + default: '{repo-name}' + description: 'Name of repo to which to publish packaging' + +- parameter: + name: compiler-parameter + parameters: + - string: + name: CC + default: '{cc}' + description: "CC parameter, can be gnu or clang" + +- parameter: + name: is-csit-vpp-job-parameter + parameters: + - string: + name: IS_CSIT_VPP_JOB + default: '{is-csit-vpp-job}' + description: "Parameter is True if this is a CSIT vpp job." + +- parameter: + name: stream-parameter + parameters: + - string: + name: STREAM + default: '{stream}' + description: "Stream job parameter to be used in shell scripts." + ##### SCMS - scm: @@ -87,12 +135,48 @@ timeout: 360 fail: true +- wrapper: + # This wrapper is used for all jobs that require no-activity timeouts + name: fdio-infra-wrappers-non-activity-timeout + wrappers: + - timeout: + type: no-activity + timeout: '{build-timeout}' + fail: true + - timestamps + - ssh-agent-credentials: + users: + - 'jenkins-gerrit-credentials' + - jclouds: + single-use: True + - openstack: + single-use: True + +- wrapper: + # This wrapper is required for all jobs as it configures the wrappers + # needed by the fd.io infra. + name: fdio-infra-wrappers + wrappers: + - timeout: + type: absolute + timeout: '{build-timeout}' + timeout-var: 'BUILD_TIMEOUT' + fail: true + - timestamps + - ssh-agent-credentials: + users: + - 'jenkins-gerrit-credentials' + - jclouds: + single-use: True + - openstack: + single-use: True + ###### TRIGGERS - trigger: name: gerrit-trigger-patch-submitted triggers: - gerrit: - server-name: 'Default' + server-name: 'Primary' trigger-on: - patchset-created-event: exclude-drafts: 'false' @@ -114,7 +198,7 @@ name: gerrit-trigger-manually-triggered triggers: - gerrit: - server-name: 'Default' + server-name: 'Primary' trigger-on: - comment-added-contains-event: comment-contains-value: '{comment-trigger-value}' @@ -129,7 +213,7 @@ name: gerrit-trigger-patch-merged triggers: - gerrit: - server-name: 'Default' + server-name: 'Primary' trigger-on: - change-merged-event - comment-added-contains-event: @@ -140,6 +224,19 @@ branches: - branch-compare-type: 'ANT' branch-pattern: '**/{branch}' + # 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 # Publishers - publisher: @@ -193,6 +290,43 @@ output-path: '{output-path}' other-files: '' +- publisher: + name: fdio-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 + +- publisher: + name: retry-build-on-builder-error + publishers: + - naginator: + max-failed-builds: 1 + ###### BUILDERS - builder: name: ci-management-check-unicode @@ -210,3 +344,59 @@ - file-id: '{settings-file}' variable: 'SETTINGS_FILE' +- property: + name: fdio-infra-properties + properties: + - build-discarder: + days-to-keep: '{build-days-to-keep}' + num-to-keep: '{build-num-to-keep}' + + +- builder: + name: packer-validate + builders: + - config-file-provider: + files: + - file-id: 'packer-cloud-env' + variable: 'CLOUDENV' + - shell: | + #!/bin/bash + cd packer + 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 + if [ $? -ne 0 ]; then + break + fi + done + + +- builder: + name: packer-build + builders: + - config-file-provider: + files: + - file-id: 'packer-cloud-env' + variable: 'CLOUDENV' + - shell: | + #!/bin/bash + cd packer + export PACKER_LOG="yes" && \ + export PACKER_LOG_PATH="packer-build.log" && \ + packer.io build -var-file=$CLOUDENV \ + -var-file=../packer/vars/{platform}.json \ + ../packer/templates/{template}.json