2 # Autorelease build jobs
4 name: autorelease-branch-cut
10 project-type: freestyle
11 node: centos7-builder-2c-2g
14 - opendaylight-infra-properties:
18 - lf-infra-parameters:
19 project: releng/autorelease
22 lftools-version: '{lftools-version}'
26 Release name to branch cut.
27 Eg. Lithium, Beryllium, Boron, Carbon...
32 If DRY_RUN is enabled modifications are not published to Gerrit.
35 - lf-infra-gerrit-scm:
36 git-url: '$GIT_URL/$GERRIT_PROJECT'
38 refspec: 'refs/heads/master'
39 jenkins-ssh-credential: opendaylight-jenkins-ssh
40 submodule-recursive: true
42 choosing-strategy: default
47 jenkins-ssh-credential: opendaylight-jenkins-ssh
50 - shell: !include-raw-escape: branch-cut.sh
56 name: 'autorelease-release-{stream}-{mvn-version}-{java-version}'
58 ######################
59 # Default parameters #
60 ######################
62 build-node: '{build-node}'
64 java-version: '{java-version}'
65 mvn-global-settings: global-settings
66 mvn-settings: autorelease-settings
71 ossrh-profile-id: 6386ebbbf3a563
78 project-type: freestyle
81 disabled: '{disable-job}'
84 - lf-infra-properties:
85 build-days-to-keep: 30
89 maven-version: '{mvn-version}'
90 - lf-infra-parameters:
94 lftools-version: '{lftools-version}'
95 - distribution-karaf-version:
96 karaf-version: '{karaf-version}'
97 - autorelease-release-tag:
98 release-tag: '{stream}'
101 default: '{extra-mvn-opts}'
103 Additional optional Maven Options to pass to the Maven Goals
107 -Dskip.karaf.featureTest=true # To disable karaf SingleFeatureTests
108 --fail-never # NEVER fail the build, regardless of project result
109 --fail-at-end # Only fail the build afterwards; allow all non-impacted builds to continue
111 name: ARCHIVE_ARTIFACTS
112 default: '{archive-artifacts}'
113 description: Artifacts to archive to the logs server.
115 name: STAGING_PROFILE_ID
116 default: '{staging-profile-id}'
117 description: Nexus staging profile ID.
121 credentials-id: 'opendaylight-jenkins-ssh'
123 refspec: '$GERRIT_REFSPEC'
126 choosing-strategy: default
133 - opendaylight-infra-wrappers:
141 # force jenkins install of maven version before any shell scripts use it
143 mvn-version: '{mvn-version}'
144 - wipe-local-maven-repo
145 - lf-jacoco-nojava-workaround
146 - shell: "./scripts/list-project-dependencies.sh"
147 - autorelease-determine-merge-order
148 - lf-provide-maven-settings:
149 global-settings-file: '{mvn-global-settings}'
150 settings-file: '{mvn-settings}'
151 - lf-infra-create-netrc:
152 server-id: '{mvn-staging-id}'
153 - autorelease-generate-release-patches
154 - autorelease-generate-artifact-versions
155 - lf-update-java-alternatives:
156 java-version: '{java-version}'
157 - autorelease-distribute-taglist
158 - distribute-build-url:
159 path: 'integration/distribution/$KARAF_ARTIFACT/src/main/assembly'
160 # In a perfect world projects should be releasing separately and we consume them
161 # via a project that pulls the release bits from each project from Nexus.
162 # Keep the patches compatible with that ideal, but apply an edit
163 # to enable building in a single maven reactor afterwards.
164 - autorelease-fix-relative-paths
166 maven-version: '{mvn-version}'
171 -Pintegrationtests,repoBuild
172 -Dcheckstyle.skip=true
173 -DaltDeploymentRepository=staging::default::file:"$WORKSPACE"/m2repo
174 {opendaylight-infra-mvn-opts}
176 - '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
177 settings: '{mvn-settings}'
179 global-settings: '{mvn-global-settings}'
180 global-settings-type: cfp
182 sign-artifacts: '{sign-artifacts}'
183 sign-dir: '$WORKSPACE/m2repo'
186 mvn-central: '{mvn-central}'
187 ossrh-profile-id: '{ossrh-profile-id}'
188 - autorelease-get-integration-test-variables
189 - autorelease-maven-sources:
190 opendaylight-infra-mvn-opts: '{opendaylight-infra-mvn-opts}'
191 maven-version: '{mvn-version}'
192 settings: '{mvn-settings}'
193 global-settings: '{mvn-global-settings}'
199 - opendaylight-infra-notify-status
200 - trigger-parameterized-builds:
201 - project: 'integration-distribution-test-{integration-test}'
202 condition: UNSTABLE_OR_BETTER
203 property-file: variables.jenkins-trigger
204 fail-on-missing: true
205 - project: 'integration-distribution-test-{integration-test}'
207 trigger-with-no-params: true
208 - project: 'packaging-build-rpm-{stream}'
209 condition: UNSTABLE_OR_BETTER
210 predefined-parameters: DOWNLOAD_URL=$BUNDLE_URL
211 property-file: variables.jenkins-trigger
212 fail-on-missing: true
213 - project: 'packaging-build-deb-{stream}'
214 condition: UNSTABLE_OR_BETTER
215 predefined-parameters: DOWNLOAD_URL=$BUNDLE_URL
216 property-file: variables.jenkins-trigger
217 fail-on-missing: true
218 # Critical component of the OpenDaylight community
225 - shell: echo '#topic cookies'
226 mark-unstable-if-failed: false
230 name: 'autorelease-update-submodules-{stream}'
232 ######################
233 # Default parameters #
234 ######################
239 #####################
240 # Job configuration #
241 #####################
243 project-type: freestyle
244 node: centos7-builder-2c-2g
245 disabled: '{disable-job}'
248 - lf-infra-properties:
249 build-days-to-keep: 7
252 - lf-infra-parameters:
253 project: releng/autorelease
256 refspec: 'refs/heads/{branch}'
257 lftools-version: '{lftools-version}'
260 - lf-infra-gerrit-scm:
261 git-url: '$GIT_URL/$GERRIT_PROJECT'
263 refspec: 'refs/heads/{branch}'
264 jenkins-ssh-credential: opendaylight-jenkins-ssh
265 submodule-recursive: true
266 submodule-timeout: 10
267 choosing-strategy: default
272 jenkins-ssh-credential: opendaylight-jenkins-ssh
275 - timed: '{obj:cron}'
279 # Fetch latest head of branch
281 git checkout $GERRIT_BRANCH
282 git submodule update --remote
284 - lf-infra-push-gerrit-patch:
286 gerrit-user: 'jenkins-$SILO'
287 gerrit-host: 'git.opendaylight.org'
288 gerrit-topic: 'autorelease-update-submodules'
289 gerrit-commit-message: 'Update submodules to latest HEAD of branch'
296 name: autorelease-update-validate-jobs-{stream}
298 ######################
299 # Default parameters #
300 ######################
305 #####################
306 # Job configuration #
307 #####################
309 project-type: freestyle
310 node: centos7-builder-2c-1g
311 disabled: '{disable-job}'
314 - lf-infra-properties:
315 build-days-to-keep: 7
318 - lf-infra-parameters:
319 project: releng/builder
322 lftools-version: '{lftools-version}'
325 - lf-infra-gerrit-scm:
326 git-url: '$GIT_URL/releng/builder'
328 refspec: 'refs/heads/master'
329 jenkins-ssh-credential: opendaylight-jenkins-ssh
330 submodule-recursive: true
331 submodule-timeout: 10
332 choosing-strategy: default
337 server-name: '{gerrit-server-name}'
339 - change-merged-event
340 - comment-added-contains-event:
341 comment-contains-value: remerge$
343 - project-compare-type: ANT
344 project-pattern: '{project}'
346 - branch-compare-type: ANT
347 branch-pattern: '**/{branch}'
355 jenkins-ssh-credential: opendaylight-jenkins-ssh
359 - autorelease-update-project-views
360 - autorelease-update-validate-projects
361 - lf-infra-push-gerrit-patch:
363 gerrit-user: 'jenkins-$SILO'
364 gerrit-host: 'git.opendaylight.org'
365 gerrit-topic: 'autorelease-update-validate-jobs-{stream}'
366 gerrit-commit-message: |
367 'Update validate autorelease projects for {stream}'
368 reviewers-email: 'jenkins-releng@opendaylight.org'
374 name: autorelease-version-bump-{stream}
376 #####################
377 # Default variables #
378 #####################
380 mvn-global-settings: global-settings
381 mvn-settings: autorelease-settings
385 #####################
386 # Job configuration #
387 #####################
389 project-type: freestyle
391 disabled: '{disable-job}'
394 - opendaylight-infra-properties:
395 build-days-to-keep: 7
398 - lf-infra-parameters:
399 project: releng/autorelease
402 refspec: 'refs/heads/{branch}'
403 lftools-version: '{lftools-version}'
408 Release that is being version bumped.
409 Eg. Lithium, Beryllium, Boron, Carbon, Carbon-SR1, Carbon-SR2...
414 If BRANCH_CUT is enabled, perform version bump for branch cutting
415 workflow, else perform version bump for simultaneous release
421 If DRY_RUN is enabled modifications are not published to Gerrit
422 and artifacts are not pushed to Nexus. Instead the build will be
423 performed using the goals "clean install".
425 maven-version: '{mvn-version}'
428 - lf-infra-gerrit-scm:
429 git-url: '$GIT_URL/$GERRIT_PROJECT'
431 refspec: 'refs/heads/{branch}'
432 jenkins-ssh-credential: opendaylight-jenkins-ssh
433 submodule-recursive: true
434 submodule-timeout: 10
435 choosing-strategy: default
440 jenkins-ssh-credential: opendaylight-jenkins-ssh
444 # force jenkins install of maven version before any shell scripts use it
446 mvn-version: '{mvn-version}'
447 - lf-provide-maven-settings:
448 global-settings-file: '{mvn-global-settings}'
449 settings-file: '{mvn-settings}'
450 - shell: !include-raw-escape:
457 name: 'autorelease-generate-release-notes-{stream}'
459 ######################
460 # Default parameters #
461 ######################
464 gerrit_merge_triggers:
465 - comment-added-contains-event:
466 comment-contains-value: generate-release-notes .+$
468 #####################
469 # Job Configuration #
470 #####################
472 project-type: freestyle
473 node: centos7-builder-2c-8g
474 disabled: '{disable-job}'
477 - lf-infra-properties:
478 build-days-to-keep: 7
481 - lf-infra-parameters:
485 lftools-version: '{lftools-version}'
489 Release to generate release notes for.
490 Eg. Oxygen-SR1, Fluorine-SR2...
492 - lf-infra-gerrit-scm:
493 git-url: '$GIT_URL/$GERRIT_PROJECT'
494 branch: '$GERRIT_BRANCH'
495 refspec: '$GERRIT_REFSPEC'
496 jenkins-ssh-credential: opendaylight-jenkins-ssh
497 submodule-recursive: true
498 submodule-timeout: 10
499 choosing-strategy: default
504 jenkins-ssh-credential: opendaylight-jenkins-ssh
508 server-name: '{gerrit-server-name}'
509 trigger-on: '{obj:gerrit_merge_triggers}'
511 - project-compare-type: ANT
512 project-pattern: '{project}'
514 - branch-compare-type: ANT
515 branch-pattern: '**/{branch}'
519 - autorelease-generate-release-notes
525 name: '{project-name}-validate-autorelease-{stream}'
527 #####################
528 # Default variables #
529 #####################
531 java-version: openjdk8
532 mvn-global-settings: global-settings
533 mvn-settings: autorelease-settings
537 #####################
538 # Job Configuration #
539 #####################
541 project-type: freestyle
542 # Note: This NEEDS to be hardcoded as projects should NOT be allowed to
543 # override the build node.
544 node: centos7-builder-2c-8g
546 jdk: '{java-version}'
547 disabled: '{disable-job}'
550 - lf-infra-properties:
551 build-days-to-keep: 7
554 - lf-infra-parameters:
558 lftools-version: '{lftools-version}'
559 - autorelease-release-tag:
560 release-tag: validate
563 default: '{git-url}/releng/autorelease'
564 description: "Autorelease clone URL"
569 credentials-id: 'opendaylight-jenkins-ssh'
579 - opendaylight-infra-wrappers:
580 build-timeout: '{build-timeout}'
583 - gerrit-trigger-patch-submitted:
584 gerrit-server-name: '{gerrit-server-name}'
592 - autorelease-checkout-gerrit-patch
593 - autorelease-compare-projects
594 - lf-jacoco-nojava-workaround
595 - shell: "./scripts/list-project-dependencies.sh"
596 - autorelease-determine-merge-order
597 - autorelease-generate-release-patches
598 # In a perfect world projects should be releasing separately and we consume them
599 # via a project that pulls the release bits from each project from Nexus.
600 # Keep the patches compatible with that ideal, but apply an edit
601 # to enable building in a single maven reactor afterwards.
602 - autorelease-fix-relative-paths
604 maven-version: '{mvn-version}'
605 pom: validate-pom.xml
607 clean install dependency:tree
610 {opendaylight-infra-mvn-opts}
613 settings: '{mvn-settings}'
615 global-settings: '{mvn-global-settings}'
616 global-settings-type: cfp
618 maven-version: '{mvn-version}'
623 {opendaylight-infra-mvn-opts}
625 - '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
626 settings: '{mvn-settings}'
628 global-settings: '{mvn-global-settings}'
629 global-settings-type: cfp
635 - email-notification:
636 email-recipients: '{email-recipients}'
637 email-prefix: '[autorelease] [{project-name}]'