X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=jjb%2Fautorelease%2Fautorelease-templates.yaml;h=d1e3ec70601c75bfb0e6ddfe46fa82e2dc78198c;hb=cb52af35b0fa1272dec4181513fd3227b4df9f4c;hp=66ed354f915fef07f32ce6c04906a2bbf0013d37;hpb=1cf391d4911d3a4768db0aa6d6f254f47c963538;p=releng%2Fbuilder.git diff --git a/jjb/autorelease/autorelease-templates.yaml b/jjb/autorelease/autorelease-templates.yaml index 66ed354f9..58a2336fa 100644 --- a/jjb/autorelease/autorelease-templates.yaml +++ b/jjb/autorelease/autorelease-templates.yaml @@ -1,35 +1,93 @@ --- # Autorelease build jobs - job-template: - name: 'autorelease-release-{stream}' + name: autorelease-branch-cut + + ##################### + # Job Configuration # + ##################### project-type: freestyle - node: centos7-autorelease-4c-16g - jdk: '{jdk}' - cron: 'H 0 * * *' + node: centos7-builder-2c-2g + + properties: + - opendaylight-infra-properties: + build-days-to-keep: 7 + + parameters: + - lf-infra-parameters: + project: releng/autorelease + branch: master + stream: master + lftools-version: '{lftools-version}' + - string: + name: RELEASE + description: | + Release name to branch cut. + Eg. Lithium, Beryllium, Boron, Carbon... + - bool: + name: DRY_RUN + default: true + description: | + If DRY_RUN is enabled modifications are not published to Gerrit. + + scm: + - lf-infra-gerrit-scm: + git-url: '$GIT_URL/$GERRIT_PROJECT' + branch: master + refspec: 'refs/heads/master' + jenkins-ssh-credential: opendaylight-jenkins-ssh + submodule-recursive: true + choosing-strategy: default + + wrappers: + - lf-infra-wrappers: + build-timeout: 10 + jenkins-ssh-credential: opendaylight-jenkins-ssh + + builders: + - shell: !include-raw-escape: branch-cut.sh - # Default variable values + publishers: + - lf-infra-publish + +- job-template: + name: 'autorelease-release-{stream}' + + ############ + # Defaults # + ############ + + build-node: '{build-node}' + java-version: openjdk8 + mvn-version: mvn33 extra-mvn-opts: '' + ##################### + # Job Configuration # + ##################### + + project-type: freestyle + node: '{build-node}' + jdk: '{java-version}' + cron: 'H 0 * * *' + 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}' + lftools-version: '{lftools-version}' - 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 +99,10 @@ -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. scm: - git: @@ -49,7 +111,7 @@ refspec: '$GERRIT_REFSPEC' branches: - '$GERRIT_BRANCH' - choosing-strategy: 'gerrit' + choosing-strategy: default skip-tag: true submodule: recursive: true @@ -64,13 +126,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 +135,11 @@ - autorelease-cfp: autorelease-settings: 'autorelease-settings' global-settings: 'odl-global-settings' - - autorelease-generate-taglist + - autorelease-generate-release-patches + - autorelease-generate-artifact-versions - 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 @@ -99,7 +156,7 @@ -DaltDeploymentRepository=staging::default::file:hide/from/pom/files/stage {opendaylight-infra-mvn-opts} java-opts: - - '-Xmx10g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true' + - '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true' settings: 'autorelease-settings' settings-type: cfp global-settings: 'global-settings' @@ -119,10 +176,6 @@ publishers: - opendaylight-infra-notify-status - trigger-parameterized-builds: - - project: 'autorelease-generate-release-notes-{stream}' - condition: UNSTABLE_OR_BETTER - property-file: variables.jenkins-trigger - fail-on-missing: true - project: 'integration-distribution-test-{integration-test}' condition: UNSTABLE_OR_BETTER property-file: variables.jenkins-trigger @@ -137,17 +190,80 @@ - project: 'integration-sanity-test-{integration-test}' condition: FAILED trigger-with-no-params: true - - project: 'packaging-build-rpm-master' + - 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 + - lf-infra-publish + +- job-template: + name: autorelease-update-validate-jobs-{stream} + project-type: freestyle + node: centos7-builder-2c-1g + + properties: + - lf-infra-properties: + build-days-to-keep: 7 + + parameters: + - lf-infra-parameters: + project: releng/builder + branch: '{branch}' + stream: '{stream}' + lftools-version: '{lftools-version}' + + 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: + - autorelease-update-validate-projects + - 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: name: autorelease-version-bump-{stream} project-type: freestyle - node: centos7-autorelease-4c-16g + node: '{build-node}' properties: - opendaylight-infra-properties: @@ -157,7 +273,9 @@ - lf-infra-parameters: project: releng/autorelease branch: '{branch}' + stream: '{stream}' refspec: 'refs/heads/{branch}' + lftools-version: '{lftools-version}' - string: name: RELEASE_TAG default: '{next-release-tag}' @@ -168,7 +286,9 @@ name: DRY_RUN default: true description: | - If DRY_RUN is enabled modifications are not published to Gerrit. + If DRY_RUN is enabled modifications are not published to Gerrit + and artifacts are not pushed to Nexus. Instead the build will be + performed using the goals "clean install". - maven-exec: maven-version: mvn33 @@ -183,7 +303,7 @@ wrappers: - lf-infra-wrappers: - build-timeout: 240 + build-timeout: 480 jenkins-ssh-credential: opendaylight-jenkins-ssh builders: @@ -206,8 +326,20 @@ - job-template: name: 'autorelease-generate-release-notes-{stream}' + ###################### + # Default parameters # + ###################### + + gerrit_merge_triggers: + - comment-added-contains-event: + comment-contains-value: generate-release-notes .+$ + + ##################### + # Job Configuration # + ##################### + project-type: freestyle - node: centos7-java-builder-2c-4g + node: centos7-builder-2c-8g properties: - lf-infra-properties: @@ -217,12 +349,17 @@ - lf-infra-parameters: project: '{project}' branch: '{branch}' + stream: '{stream}' + lftools-version: '{lftools-version}' + - string: + name: RELEASE + description: Release to generate release notes for. scm: - lf-infra-gerrit-scm: git-url: '$GIT_URL/$GERRIT_PROJECT' - branch: '{branch}' - refspec: 'refs/heads/{branch}' + branch: '$GERRIT_BRANCH' + refspec: '$GERRIT_REFSPEC' jenkins-ssh-credential: opendaylight-jenkins-ssh submodule-recursive: true choosing-strategy: default @@ -233,22 +370,129 @@ jenkins-ssh-credential: opendaylight-jenkins-ssh triggers: - - timed: '0 0 * * 0' + - gerrit: + server-name: '{gerrit-server-name}' + trigger-on: '{obj:gerrit_merge_triggers}' + projects: + - project-compare-type: ANT + project-pattern: '{project}' + branches: + - branch-compare-type: ANT + branch-pattern: '**/{branch}' builders: - - lf-maven-install: - mvn-version: mvn33 + - autorelease-generate-release-notes + + publishers: + - lf-infra-publish + +- job-template: + name: '{project-name}-validate-autorelease-{stream}' + + ############ + # Defaults # + ############ + + java-version: openjdk8 + + ##################### + # Job Configuration # + ##################### + + disabled: false + project-type: freestyle + # Note: This NEEDS to be hardcoded as projects should NOT be allowed to + # override the build node. + node: centos7-builder-2c-8g + concurrent: true + jdk: '{java-version}' + + properties: + - lf-infra-properties: + build-days-to-keep: 7 + + parameters: + - lf-infra-parameters: + project: '{project}' + stream: '{stream}' + branch: '{branch}' + lftools-version: '{lftools-version}' + - 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: + gerrit-server-name: '{gerrit-server-name}' + project: '{project}' + branch: '{branch}' + files: '**/*.xml' + + builders: + - autorelease-checkout-gerrit-patch + - jacoco-nojava-workaround + - shell: "./scripts/list-project-dependencies.sh" + - autorelease-determine-merge-order + - 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: '$WORKSPACE/scripts/release_notes_management/pom.xml' + pom: validate-pom.xml goals: | - clean package + 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 - - autorelease-generate-release-notes + # Hack to workaround the duplicate-finder plugin in odlparent breaking validate-autorelease + - shell: sed -i 's/validate/none/' /tmp/r/org/opendaylight/odlparent/odlparent/3.0.2/odlparent-3.0.2.pom + - 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 + - shell: | + mkdir -p archives/ + cp *.log $_ publishers: + - email-notification: + email-recipients: '{email-recipients}' + email-prefix: '[autorelease] [{project-name}]' - lf-infra-publish