--- # 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-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 publishers: - lf-infra-publish - job-template: name: 'autorelease-release-{stream}' ###################### # Default parameters # ###################### build-node: '{build-node}' cron: 'H 0 * * *' java-version: openjdk8 mvn-version: mvn35 extra-mvn-opts: '' ##################### # Job Configuration # ##################### project-type: freestyle node: '{build-node}' jdk: '{java-version}' properties: - lf-infra-properties: build-days-to-keep: 30 parameters: - maven-exec: maven-version: 'mvn35' - lf-infra-parameters: project: '{project}' stream: '{stream}' branch: '{branch}' lftools-version: '{lftools-version}' - distribution-karaf-version: karaf-version: '{karaf-version}' - autorelease-release-tag: release-tag: '{stream}' - string: name: EXTRA_MVN_OPTS default: '{extra-mvn-opts}' description: | Additional optional Maven Options to pass to the Maven Goals parameter. Examples: -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: 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 - autorelease-cfp: autorelease-settings: 'autorelease-settings' global-settings: 'odl-global-settings' - autorelease-generate-release-patches - autorelease-generate-artifact-versions - 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 - maven-target: maven-version: 'mvn35' pom: 'pom.xml' goals: | clean deploy $EXTRA_MVN_OPTS -Pintegrationtests,repoBuild -Dcheckstyle.skip=true -DaltDeploymentRepository=staging::default::file:hide/from/pom/files/stage {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 - autorelease-maven-deploy - autorelease-get-integration-test-variables - autorelease-maven-sources: opendaylight-infra-mvn-opts: '{opendaylight-infra-mvn-opts}' maven-version: 'mvn35' settings: 'autorelease-settings' global-settings: 'global-settings' - autorelease-maven-sources-post-process - 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 * * *' ##################### # Job configuration # ##################### project-type: freestyle node: centos7-builder-2c-2g 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-recursive: true 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' ##################### # Job configuration # ##################### 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: - 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 autorelease projects for {stream}' reviewers-email: 'jenkins-releng@opendaylight.org' publishers: - lf-infra-publish - job-template: name: autorelease-version-bump-{stream} project-type: freestyle node: '{build-node}' 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: mvn35 scm: - lf-infra-gerrit-scm: git-url: '$GIT_URL/$GERRIT_PROJECT' branch: '{branch}' refspec: 'refs/heads/{branch}' jenkins-ssh-credential: opendaylight-jenkins-ssh submodule-recursive: true 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 - maven-target: maven-version: mvn35 goals: '-version' settings: autorelease-settings settings-type: cfp global-settings: global-settings global-settings-type: cfp - autorelease-cfp - shell: !include-raw-escape: - version-bump.sh publishers: - lf-infra-publish - 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-builder-2c-8g 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. scm: - lf-infra-gerrit-scm: git-url: '$GIT_URL/$GERRIT_PROJECT' branch: '$GERRIT_BRANCH' refspec: '$GERRIT_REFSPEC' 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 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}' ############ # 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' forbidden-files: '' builders: - lf-infra-pre-build - autorelease-checkout-gerrit-patch - autorelease-compare-projects - 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: mvn35 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: mvn35 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