--- # Autorelease build jobs - job-template: name: autorelease-branch-cut ##################### # Job Configuration # ##################### project-type: freestyle 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-disable: false submodule-recursive: true submodule-timeout: 10 choosing-strategy: default wrappers: - lf-infra-wrappers: build-timeout: 10 jenkins-ssh-credential: opendaylight-jenkins-ssh builders: - shell: !include-raw-escape: branch-cut.sh publishers: - lf-infra-publish - job-template: name: "autorelease-release-{stream}-{mvn-version}-{java-version}" ###################### # Default parameters # ###################### build-node: "{build-node}" cron: "H 0 * * *" java-version: "{java-version}" mvn-global-settings: global-settings mvn-goals: clean deploy mvn-opts: "-Xmx8g -Dmaven.compile.fork=true" mvn-params: "" mvn-settings: autorelease-settings mvn-version: mvn35 sign-artifacts: true disable-job: "false" ##################### # Job Configuration # ##################### project-type: freestyle node: "{build-node}" disabled: "{disable-job}" properties: - lf-infra-properties: build-days-to-keep: 30 parameters: - lf-infra-parameters: project: "{project}" stream: "{stream}" branch: "{branch}" lftools-version: "{lftools-version}" - lf-infra-maven-parameters: mvn-opts: "{mvn-opts}" mvn-params: "{mvn-params}" mvn-version: "{mvn-version}" - distribution-karaf-version: karaf-version: "{karaf-version}" - autorelease-release-tag: release-tag: "{stream}" - string: name: ARCHIVE_ARTIFACTS default: "{archive-artifacts}" description: Artifacts to archive to the logs server. - string: name: STAGING_PROFILE_ID default: "{staging-profile-id}" description: Nexus staging profile ID. scm: - git: credentials-id: "opendaylight-jenkins-ssh" url: "$GIT_BASE" refspec: "$GERRIT_REFSPEC" branches: - "$GERRIT_BRANCH" choosing-strategy: default skip-tag: true submodule: recursive: true timeout: 60 wrappers: - opendaylight-infra-wrappers: build-timeout: "900" triggers: - timed: "{cron}" builders: - lf-infra-pre-build # force jenkins install of maven version before any shell scripts use it - lf-maven-install: mvn-version: "{mvn-version}" - wipe-local-maven-repo - lf-jacoco-nojava-workaround - shell: "./scripts/list-project-dependencies.sh" - autorelease-determine-merge-order - lf-provide-maven-settings: global-settings-file: "{mvn-global-settings}" settings-file: "{mvn-settings}" - autorelease-generate-release-patches - autorelease-generate-artifact-versions - lf-update-java-alternatives: java-version: "{java-version}" - autorelease-distribute-taglist - distribute-build-url: path: "integration/distribution/$KARAF_ARTIFACT/src/main/assembly" # 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 - lf-maven-build: mvn-goals: "{mvn-goals}" - lf-sigul-sign-dir: sign-artifacts: "{sign-artifacts}" sign-dir: "$WORKSPACE/m2repo" sign-mode: serial - lf-maven-stage: mvn-global-settings: "{mvn-global-settings}" mvn-settings: "{mvn-settings}" mvn-staging-id: "{mvn-staging-id}" - autorelease-get-integration-test-variables - autorelease-maven-sources: opendaylight-infra-mvn-opts: "{opendaylight-infra-mvn-opts}" maven-version: "{mvn-version}" settings: "{mvn-settings}" global-settings: "{mvn-global-settings}" - shell: | mkdir -p archives/ cp *.log *.prop $_ 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: "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 # Critical component of the OpenDaylight community - postbuildscript: builders: - role: BOTH build-on: - SUCCESS build-steps: - shell: echo '#topic cookies' mark-unstable-if-failed: false - lf-infra-publish - job-template: name: "autorelease-update-submodules-{stream}" ###################### # Default parameters # ###################### cron: "H 0 * * *" disable-job: "false" ##################### # Job configuration # ##################### project-type: freestyle node: centos7-builder-2c-2g disabled: "{disable-job}" properties: - lf-infra-properties: build-days-to-keep: 7 parameters: - lf-infra-parameters: project: releng/autorelease branch: "{branch}" stream: "{stream}" refspec: "refs/heads/{branch}" lftools-version: "{lftools-version}" scm: - lf-infra-gerrit-scm: git-url: "$GIT_URL/$GERRIT_PROJECT" branch: "{branch}" refspec: "refs/heads/{branch}" jenkins-ssh-credential: opendaylight-jenkins-ssh submodule-disable: false submodule-recursive: true submodule-timeout: 10 choosing-strategy: default wrappers: - lf-infra-wrappers: build-timeout: 10 jenkins-ssh-credential: opendaylight-jenkins-ssh triggers: - timed: "{obj:cron}" builders: - lf-infra-pre-build # Fetch latest head of branch - shell: | git checkout $GERRIT_BRANCH git submodule update --remote git add . - lf-infra-push-gerrit-patch: project: "{project}" gerrit-user: "jenkins-$SILO" gerrit-host: "git.opendaylight.org" gerrit-topic: "autorelease-update-submodules" gerrit-commit-message: "Update submodules to latest HEAD of branch" reviewers-email: "" publishers: - lf-infra-publish - job-template: name: autorelease-update-validate-jobs-{stream} ###################### # Default parameters # ###################### cron: "@weekly" disable-job: "false" ##################### # Job configuration # ##################### project-type: freestyle node: centos7-builder-2c-1g disabled: "{disable-job}" 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-disable: false submodule-recursive: true submodule-timeout: 10 choosing-strategy: default triggers: - timed: "{cron}" - 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: - lf-infra-pre-build - autorelease-update-project-views - autorelease-update-validate-projects - lf-infra-push-gerrit-patch: project: "{project}" gerrit-user: "jenkins-$SILO" gerrit-host: "git.opendaylight.org" gerrit-topic: "autorelease-update-validate-jobs-{stream}" gerrit-commit-message: "Update validate-ar jobs for {stream}" reviewers-email: "jenkins-releng@opendaylight.org" publishers: - lf-infra-publish - job-template: name: autorelease-version-bump-{stream}-{mvn-version}-{java-version} ##################### # Default variables # ##################### mvn-global-settings: global-settings mvn-settings: autorelease-settings mvn-version: mvn35 disable-job: "false" ##################### # Job configuration # ##################### project-type: freestyle node: "{build-node}" disabled: "{disable-job}" properties: - opendaylight-infra-properties: build-days-to-keep: 7 parameters: - lf-infra-parameters: project: releng/autorelease branch: "{branch}" stream: "{stream}" refspec: "refs/heads/{branch}" lftools-version: "{lftools-version}" - string: name: RELEASE_TAG default: "{stream}" description: | Release that is being version bumped. Eg. Lithium, Beryllium, Boron, Carbon, Carbon-SR1, Carbon-SR2... - bool: name: BRANCH_CUT default: false description: | If BRANCH_CUT is enabled, perform version bump for branch cutting workflow, else perform version bump for simultaneous release workflow (detault). - bool: name: DRY_RUN default: true description: | 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: "{mvn-version}" scm: - lf-infra-gerrit-scm: git-url: "$GIT_URL/$GERRIT_PROJECT" branch: "{branch}" refspec: "refs/heads/{branch}" jenkins-ssh-credential: opendaylight-jenkins-ssh submodule-disable: false submodule-recursive: true submodule-timeout: 10 choosing-strategy: default wrappers: - lf-infra-wrappers: build-timeout: 480 jenkins-ssh-credential: opendaylight-jenkins-ssh builders: - lf-infra-pre-build # force jenkins install of maven version before any shell scripts use it - lf-update-java-alternatives: java-version: "{java-version}" - lf-maven-install: mvn-version: "{mvn-version}" - lf-provide-maven-settings: global-settings-file: "{mvn-global-settings}" settings-file: "{mvn-settings}" - shell: !include-raw-escape: - version-bump.sh publishers: - lf-infra-publish - job-template: name: "autorelease-generate-release-notes-{stream}" ###################### # Default parameters # ###################### disable-job: "false" gerrit_merge_triggers: - comment-added-contains-event: comment-contains-value: generate-release-notes .+$ ##################### # Job Configuration # ##################### project-type: freestyle node: centos7-builder-2c-8g disabled: "{disable-job}" properties: - lf-infra-properties: build-days-to-keep: 7 parameters: - lf-infra-parameters: project: "{project}" branch: "{branch}" stream: "{stream}" lftools-version: "{lftools-version}" - string: name: RELEASE description: | Release to generate release notes for. Eg. Magnesium-SR2, Silicon-SR1 ... scm: - lf-infra-gerrit-scm: git-url: "$GIT_URL/$GERRIT_PROJECT" branch: "$GERRIT_BRANCH" refspec: "$GERRIT_REFSPEC" jenkins-ssh-credential: opendaylight-jenkins-ssh submodule-disable: false submodule-recursive: true submodule-timeout: 10 choosing-strategy: default wrappers: - lf-infra-wrappers: build-timeout: 10 jenkins-ssh-credential: opendaylight-jenkins-ssh triggers: - 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-infra-pre-build - autorelease-generate-release-notes publishers: - lf-infra-publish - job-template: name: "{project-name}-validate-autorelease-{stream}" ##################### # Default variables # ##################### java-version: openjdk8 mvn-global-settings: global-settings mvn-settings: autorelease-settings mvn-version: mvn35 disable-job: "false" ##################### # Job Configuration # ##################### 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}" disabled: "{disable-job}" 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" forbidden-files: "" builders: - lf-infra-pre-build - lf-update-java-alternatives: java-version: "{java-version}" - autorelease-checkout-gerrit-patch - lf-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: "{mvn-version}" pom: validate-pom.xml goals: | clean install dependency:tree -T1.5C -Pq {opendaylight-infra-mvn-opts} java-opts: - "-Xmx8g" settings: "{mvn-settings}" settings-type: cfp global-settings: "{mvn-global-settings}" global-settings-type: cfp - maven-target: maven-version: "{mvn-version}" pom: pom.xml goals: | clean validate -Pq {opendaylight-infra-mvn-opts} java-opts: - "-Xmx8g -Dmaven.compile.fork=true" settings: "{mvn-settings}" settings-type: cfp global-settings: "{mvn-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