X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=jjb%2Fautorelease%2Fautorelease-templates.yaml;h=d1e3ec70601c75bfb0e6ddfe46fa82e2dc78198c;hb=8d2f7df3cdb581f4d69c6617177d40537ab9fb0b;hp=44e88757099c846d86d9bef6881b3fa1a86a81f7;hpb=bdf8b630e2cd60dbb3ba59a3009a4fbdb8c04e57;p=releng%2Fbuilder.git diff --git a/jjb/autorelease/autorelease-templates.yaml b/jjb/autorelease/autorelease-templates.yaml index 44e887570..d1e3ec706 100644 --- a/jjb/autorelease/autorelease-templates.yaml +++ b/jjb/autorelease/autorelease-templates.yaml @@ -9,27 +9,24 @@ cron: 'H 0 * * *' # Default variable values + mvn-version: mvn33 extra-mvn-opts: '' properties: - - opendaylight-infra-properties: - build-days-to-keep: '30' + - lf-infra-properties: + build-days-to-keep: 30 parameters: - maven-exec: maven-version: 'mvn33' - - opendaylight-infra-parameters: - os-cloud: '{os-cloud}' + - lf-infra-parameters: project: '{project}' + stream: '{stream}' branch: '{branch}' - refspec: 'refs/heads/{branch}' - artifacts: '{archive-artifacts}' - distribution-karaf-version: karaf-version: '{karaf-version}' - autorelease-release-tag: release-tag: '{next-release-tag}' - - autorelease-release-branch: - release-branch: '{branch}' - string: name: EXTRA_MVN_OPTS default: '{extra-mvn-opts}' @@ -41,6 +38,16 @@ -Dskip.karaf.featureTest=true # To disable karaf SingleFeatureTests --fail-never # NEVER fail the build, regardless of project result --fail-at-end # Only fail the build afterwards; allow all non-impacted builds to continue + - string: + name: ARCHIVE_ARTIFACTS + default: '{archive-artifacts}' + description: Artifacts to archive to the logs server. + - bool: + name: TRIGGER_DOWNSTREAM_JOBS + default: true + description: | + Used by the post-build-script step to determine if downstream + jobs should be triggered for this run or not. scm: - git: @@ -49,7 +56,7 @@ refspec: '$GERRIT_REFSPEC' branches: - '$GERRIT_BRANCH' - choosing-strategy: 'gerrit' + choosing-strategy: default skip-tag: true submodule: recursive: true @@ -64,13 +71,8 @@ builders: # force jenkins install of maven version before any shell scripts use it - - maven-target: - maven-version: 'mvn33' - goals: '-version' - settings: 'autorelease-settings' - settings-type: cfp - global-settings: 'global-settings' - global-settings-type: cfp + - lf-maven-install: + mvn-version: '{mvn-version}' - wipe-local-maven-repo - jacoco-nojava-workaround - shell: "./scripts/list-project-dependencies.sh" @@ -78,11 +80,10 @@ - autorelease-cfp: autorelease-settings: 'autorelease-settings' global-settings: 'odl-global-settings' - - autorelease-generate-taglist + - autorelease-generate-release-patches - autorelease-distribute-taglist - distribute-build-url: path: 'integration/distribution/$KARAF_ARTIFACT/src/main/assembly' - - autorelease-generate-release-patches # In a perfect world projects should be releasing separately and we consume them # via a project that pulls the release bits from each project from Nexus. # Keep the patches compatible with that ideal, but apply an edit @@ -118,26 +119,97 @@ publishers: - opendaylight-infra-notify-status - - trigger-parameterized-builds: - - project: 'integration-distribution-test-{integration-test}' - condition: UNSTABLE_OR_BETTER - property-file: variables.jenkins-trigger - fail-on-missing: true - - project: 'integration-distribution-test-{integration-test}' - condition: FAILED - trigger-with-no-params: true - - project: 'integration-sanity-test-{integration-test}' - condition: UNSTABLE_OR_BETTER - property-file: variables.jenkins-trigger - fail-on-missing: true - - project: 'integration-sanity-test-{integration-test}' - condition: FAILED - trigger-with-no-params: true - - project: 'packaging-build-rpm-master' - condition: UNSTABLE_OR_BETTER - predefined-parameters: DOWNLOAD_URL=$BUNDLE_URL - property-file: variables.jenkins-trigger - fail-on-missing: true + - postbuildscript: + builders: + - conditional-step: + condition-kind: boolean-expression + condition-expression: $TRIGGER_DOWNSTREAM_JOBS + steps: + - trigger-builds: + - project: 'integration-distribution-test-{integration-test}' + condition: UNSTABLE_OR_BETTER + property-file: variables.jenkins-trigger + fail-on-missing: true + - project: 'integration-distribution-test-{integration-test}' + condition: FAILED + trigger-with-no-params: true + - project: 'integration-sanity-test-{integration-test}' + condition: UNSTABLE_OR_BETTER + property-file: variables.jenkins-trigger + fail-on-missing: true + - project: 'integration-sanity-test-{integration-test}' + condition: FAILED + trigger-with-no-params: true + - project: 'packaging-build-rpm-{stream}' + condition: UNSTABLE_OR_BETTER + predefined-parameters: DOWNLOAD_URL=$BUNDLE_URL + property-file: variables.jenkins-trigger + fail-on-missing: true + - project: 'packaging-build-deb-{stream}' + condition: UNSTABLE_OR_BETTER + predefined-parameters: DOWNLOAD_URL=$BUNDLE_URL + property-file: variables.jenkins-trigger + fail-on-missing: true + script-only-if-succeeded: false + script-only-if-failed: false + - lf-infra-publish + +- job-template: + name: autorelease-update-validate-jobs-{stream} + project-type: freestyle + node: centos7-java-builder-2c-4g + + properties: + - lf-infra-properties: + build-days-to-keep: 7 + + parameters: + - lf-infra-parameters: + project: releng/builder + branch: '{branch}' + stream: '{stream}' + + scm: + - lf-infra-gerrit-scm: + git-url: '$GIT_URL/releng/builder' + branch: master + refspec: 'refs/heads/master' + jenkins-ssh-credential: opendaylight-jenkins-ssh + submodule-recursive: true + choosing-strategy: default + + triggers: + - gerrit: + server-name: '{gerrit-server-name}' + 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: pom.xml + + wrappers: + - lf-infra-wrappers: + build-timeout: 10 + jenkins-ssh-credential: opendaylight-jenkins-ssh + + builders: + - shell: !include-raw-escape: + - update-validate-autorelease-projects.sh + - opendaylight-infra-push-gerrit-patch: + project: 'releng/builder' + gerrit-topic: 'autorelease-update-validate-jobs-{stream}' + gerrit-commit-message: | + Update validate autorelease projects for {stream} + + publishers: - lf-infra-publish - job-template: @@ -153,6 +225,7 @@ - lf-infra-parameters: project: releng/autorelease branch: '{branch}' + stream: '{stream}' refspec: 'refs/heads/{branch}' - string: name: RELEASE_TAG @@ -217,6 +290,7 @@ - lf-infra-parameters: project: '{project}' branch: '{branch}' + stream: '{stream}' scm: - lf-infra-gerrit-scm: @@ -252,3 +326,94 @@ publishers: - lf-infra-publish + +- job-template: + name: '{project-name}-validate-autorelease-{stream}' + disabled: false + + project-type: freestyle + node: '{build-node}' + concurrent: true + jdk: openjdk8 + + properties: + - lf-infra-properties: + build-days-to-keep: 7 + + parameters: + - lf-infra-parameters: + project: '{project}' + stream: '{stream}' + branch: '{branch}' + - autorelease-release-tag: + release-tag: validate + - string: + name: CLONE_URL + default: '{git-url}/releng/autorelease' + description: "Autorelease clone URL" + + scm: + - git: + url: '$CLONE_URL' + credentials-id: 'opendaylight-jenkins-ssh' + refspec: '' + branches: + - 'origin/{branch}' + skip-tag: true + submodule: + recursive: true + timeout: 60 + + wrappers: + - opendaylight-infra-wrappers: + build-timeout: '{build-timeout}' + + triggers: + - gerrit-trigger-patch-submitted: + server: '{server-name}' + project: '{project}' + branch: '{branch}' + files: '**/*.xml' + + builders: + - jacoco-nojava-workaround + - autorelease-checkout-gerrit-patch + - autorelease-generate-release-patches + # In a perfect world projects should be releasing separately and we consume them + # via a project that pulls the release bits from each project from Nexus. + # Keep the patches compatible with that ideal, but apply an edit + # to enable building in a single maven reactor afterwards. + - autorelease-fix-relative-paths + - maven-target: + maven-version: mvn33 + pom: validate-pom.xml + goals: | + clean install dependency:tree + -T1.5C + -Pq + {opendaylight-infra-mvn-opts} + java-opts: + - '-Xmx8g' + settings: autorelease-settings + settings-type: cfp + global-settings: global-settings + global-settings-type: cfp + - maven-target: + maven-version: mvn33 + pom: pom.xml + goals: | + clean validate + -Pq + {opendaylight-infra-mvn-opts} + java-opts: + - '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true' + settings: autorelease-settings + settings-type: cfp + global-settings: global-settings + global-settings-type: cfp + + publishers: + - email-notification: + email-recipients: '{email-recipients}' + email-prefix: '[autorelease] [{project-name}]' + - lf-infra-publish