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
75 project-type: freestyle
78 disabled: '{disable-job}'
81 - lf-infra-properties:
82 build-days-to-keep: 30
86 maven-version: '{mvn-version}'
87 - lf-infra-parameters:
91 lftools-version: '{lftools-version}'
92 - distribution-karaf-version:
93 karaf-version: '{karaf-version}'
94 - autorelease-release-tag:
95 release-tag: '{stream}'
98 default: '{extra-mvn-opts}'
100 Additional optional Maven Options to pass to the Maven Goals
104 -Dskip.karaf.featureTest=true # To disable karaf SingleFeatureTests
105 --fail-never # NEVER fail the build, regardless of project result
106 --fail-at-end # Only fail the build afterwards; allow all non-impacted builds to continue
108 name: ARCHIVE_ARTIFACTS
109 default: '{archive-artifacts}'
110 description: Artifacts to archive to the logs server.
112 name: STAGING_PROFILE_ID
113 default: '{staging-profile-id}'
114 description: Nexus staging profile ID.
118 credentials-id: 'opendaylight-jenkins-ssh'
120 refspec: '$GERRIT_REFSPEC'
123 choosing-strategy: default
130 - opendaylight-infra-wrappers:
138 # force jenkins install of maven version before any shell scripts use it
140 mvn-version: '{mvn-version}'
141 - wipe-local-maven-repo
142 - lf-jacoco-nojava-workaround
143 - shell: "./scripts/list-project-dependencies.sh"
144 - autorelease-determine-merge-order
145 - lf-provide-maven-settings:
146 global-settings-file: '{mvn-global-settings}'
147 settings-file: '{mvn-settings}'
148 - lf-infra-create-netrc:
149 server-id: '{mvn-staging-id}'
150 - autorelease-generate-release-patches
151 - autorelease-generate-artifact-versions
152 - lf-update-java-alternatives:
153 java-version: '{java-version}'
154 - autorelease-distribute-taglist
155 - distribute-build-url:
156 path: 'integration/distribution/$KARAF_ARTIFACT/src/main/assembly'
157 # In a perfect world projects should be releasing separately and we consume them
158 # via a project that pulls the release bits from each project from Nexus.
159 # Keep the patches compatible with that ideal, but apply an edit
160 # to enable building in a single maven reactor afterwards.
161 - autorelease-fix-relative-paths
163 maven-version: '{mvn-version}'
168 -Pintegrationtests,repoBuild
169 -Dcheckstyle.skip=true
170 -DaltDeploymentRepository=staging::default::file:"$WORKSPACE"/m2repo
171 {opendaylight-infra-mvn-opts}
173 - '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
174 settings: '{mvn-settings}'
176 global-settings: '{mvn-global-settings}'
177 global-settings-type: cfp
179 - autorelease-get-integration-test-variables
180 - autorelease-maven-sources:
181 opendaylight-infra-mvn-opts: '{opendaylight-infra-mvn-opts}'
182 maven-version: '{mvn-version}'
183 settings: '{mvn-settings}'
184 global-settings: '{mvn-global-settings}'
190 - opendaylight-infra-notify-status
191 - trigger-parameterized-builds:
192 - project: 'integration-distribution-test-{integration-test}'
193 condition: UNSTABLE_OR_BETTER
194 property-file: variables.jenkins-trigger
195 fail-on-missing: true
196 - project: 'integration-distribution-test-{integration-test}'
198 trigger-with-no-params: true
199 - project: 'packaging-build-rpm-{stream}'
200 condition: UNSTABLE_OR_BETTER
201 predefined-parameters: DOWNLOAD_URL=$BUNDLE_URL
202 property-file: variables.jenkins-trigger
203 fail-on-missing: true
204 - project: 'packaging-build-deb-{stream}'
205 condition: UNSTABLE_OR_BETTER
206 predefined-parameters: DOWNLOAD_URL=$BUNDLE_URL
207 property-file: variables.jenkins-trigger
208 fail-on-missing: true
209 # Critical component of the OpenDaylight community
216 - shell: echo '#topic cookies'
217 mark-unstable-if-failed: false
221 name: 'autorelease-update-submodules-{stream}'
223 ######################
224 # Default parameters #
225 ######################
230 #####################
231 # Job configuration #
232 #####################
234 project-type: freestyle
235 node: centos7-builder-2c-2g
236 disabled: '{disable-job}'
239 - lf-infra-properties:
240 build-days-to-keep: 7
243 - lf-infra-parameters:
244 project: releng/autorelease
247 refspec: 'refs/heads/{branch}'
248 lftools-version: '{lftools-version}'
251 - lf-infra-gerrit-scm:
252 git-url: '$GIT_URL/$GERRIT_PROJECT'
254 refspec: 'refs/heads/{branch}'
255 jenkins-ssh-credential: opendaylight-jenkins-ssh
256 submodule-recursive: true
257 submodule-timeout: 10
258 choosing-strategy: default
263 jenkins-ssh-credential: opendaylight-jenkins-ssh
266 - timed: '{obj:cron}'
270 # Fetch latest head of branch
272 git checkout $GERRIT_BRANCH
273 git submodule update --remote
275 - lf-infra-push-gerrit-patch:
277 gerrit-user: 'jenkins-$SILO'
278 gerrit-host: 'git.opendaylight.org'
279 gerrit-topic: 'autorelease-update-submodules'
280 gerrit-commit-message: 'Update submodules to latest HEAD of branch'
287 name: autorelease-update-validate-jobs-{stream}
289 ######################
290 # Default parameters #
291 ######################
296 #####################
297 # Job configuration #
298 #####################
300 project-type: freestyle
301 node: centos7-builder-2c-1g
302 disabled: '{disable-job}'
305 - lf-infra-properties:
306 build-days-to-keep: 7
309 - lf-infra-parameters:
310 project: releng/builder
313 lftools-version: '{lftools-version}'
316 - lf-infra-gerrit-scm:
317 git-url: '$GIT_URL/releng/builder'
319 refspec: 'refs/heads/master'
320 jenkins-ssh-credential: opendaylight-jenkins-ssh
321 submodule-recursive: true
322 submodule-timeout: 10
323 choosing-strategy: default
328 server-name: '{gerrit-server-name}'
330 - change-merged-event
331 - comment-added-contains-event:
332 comment-contains-value: remerge$
334 - project-compare-type: ANT
335 project-pattern: '{project}'
337 - branch-compare-type: ANT
338 branch-pattern: '**/{branch}'
346 jenkins-ssh-credential: opendaylight-jenkins-ssh
350 - autorelease-update-project-views
351 - autorelease-update-validate-projects
352 - lf-infra-push-gerrit-patch:
354 gerrit-user: 'jenkins-$SILO'
355 gerrit-host: 'git.opendaylight.org'
356 gerrit-topic: 'autorelease-update-validate-jobs-{stream}'
357 gerrit-commit-message: |
358 'Update validate autorelease projects for {stream}'
359 reviewers-email: 'jenkins-releng@opendaylight.org'
365 name: autorelease-version-bump-{stream}
367 #####################
368 # Default variables #
369 #####################
371 mvn-global-settings: global-settings
372 mvn-settings: autorelease-settings
376 #####################
377 # Job configuration #
378 #####################
380 project-type: freestyle
382 disabled: '{disable-job}'
385 - opendaylight-infra-properties:
386 build-days-to-keep: 7
389 - lf-infra-parameters:
390 project: releng/autorelease
393 refspec: 'refs/heads/{branch}'
394 lftools-version: '{lftools-version}'
399 Release that is being version bumped.
400 Eg. Lithium, Beryllium, Boron, Carbon, Carbon-SR1, Carbon-SR2...
405 If BRANCH_CUT is enabled, perform version bump for branch cutting
406 workflow, else perform version bump for simultaneous release
412 If DRY_RUN is enabled modifications are not published to Gerrit
413 and artifacts are not pushed to Nexus. Instead the build will be
414 performed using the goals "clean install".
416 maven-version: '{mvn-version}'
419 - lf-infra-gerrit-scm:
420 git-url: '$GIT_URL/$GERRIT_PROJECT'
422 refspec: 'refs/heads/{branch}'
423 jenkins-ssh-credential: opendaylight-jenkins-ssh
424 submodule-recursive: true
425 submodule-timeout: 10
426 choosing-strategy: default
431 jenkins-ssh-credential: opendaylight-jenkins-ssh
435 # force jenkins install of maven version before any shell scripts use it
437 mvn-version: '{mvn-version}'
438 - lf-provide-maven-settings:
439 global-settings-file: '{mvn-global-settings}'
440 settings-file: '{mvn-settings}'
441 - shell: !include-raw-escape:
448 name: 'autorelease-generate-release-notes-{stream}'
450 ######################
451 # Default parameters #
452 ######################
455 gerrit_merge_triggers:
456 - comment-added-contains-event:
457 comment-contains-value: generate-release-notes .+$
459 #####################
460 # Job Configuration #
461 #####################
463 project-type: freestyle
464 node: centos7-builder-2c-8g
465 disabled: '{disable-job}'
468 - lf-infra-properties:
469 build-days-to-keep: 7
472 - lf-infra-parameters:
476 lftools-version: '{lftools-version}'
480 Release to generate release notes for.
481 Eg. Oxygen-SR1, Fluorine-SR2...
483 - lf-infra-gerrit-scm:
484 git-url: '$GIT_URL/$GERRIT_PROJECT'
485 branch: '$GERRIT_BRANCH'
486 refspec: '$GERRIT_REFSPEC'
487 jenkins-ssh-credential: opendaylight-jenkins-ssh
488 submodule-recursive: true
489 submodule-timeout: 10
490 choosing-strategy: default
495 jenkins-ssh-credential: opendaylight-jenkins-ssh
499 server-name: '{gerrit-server-name}'
500 trigger-on: '{obj:gerrit_merge_triggers}'
502 - project-compare-type: ANT
503 project-pattern: '{project}'
505 - branch-compare-type: ANT
506 branch-pattern: '**/{branch}'
510 - autorelease-generate-release-notes
516 name: '{project-name}-validate-autorelease-{stream}'
518 #####################
519 # Default variables #
520 #####################
522 java-version: openjdk8
523 mvn-global-settings: global-settings
524 mvn-settings: autorelease-settings
528 #####################
529 # Job Configuration #
530 #####################
532 project-type: freestyle
533 # Note: This NEEDS to be hardcoded as projects should NOT be allowed to
534 # override the build node.
535 node: centos7-builder-2c-8g
537 jdk: '{java-version}'
538 disabled: '{disable-job}'
541 - lf-infra-properties:
542 build-days-to-keep: 7
545 - lf-infra-parameters:
549 lftools-version: '{lftools-version}'
550 - autorelease-release-tag:
551 release-tag: validate
554 default: '{git-url}/releng/autorelease'
555 description: "Autorelease clone URL"
560 credentials-id: 'opendaylight-jenkins-ssh'
570 - opendaylight-infra-wrappers:
571 build-timeout: '{build-timeout}'
574 - gerrit-trigger-patch-submitted:
575 gerrit-server-name: '{gerrit-server-name}'
583 - autorelease-checkout-gerrit-patch
584 - autorelease-compare-projects
585 - lf-jacoco-nojava-workaround
586 - shell: "./scripts/list-project-dependencies.sh"
587 - autorelease-determine-merge-order
588 - autorelease-generate-release-patches
589 # In a perfect world projects should be releasing separately and we consume them
590 # via a project that pulls the release bits from each project from Nexus.
591 # Keep the patches compatible with that ideal, but apply an edit
592 # to enable building in a single maven reactor afterwards.
593 - autorelease-fix-relative-paths
595 maven-version: '{mvn-version}'
596 pom: validate-pom.xml
598 clean install dependency:tree
601 {opendaylight-infra-mvn-opts}
604 settings: '{mvn-settings}'
606 global-settings: '{mvn-global-settings}'
607 global-settings-type: cfp
609 maven-version: '{mvn-version}'
614 {opendaylight-infra-mvn-opts}
616 - '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
617 settings: '{mvn-settings}'
619 global-settings: '{mvn-global-settings}'
620 global-settings-type: cfp
626 - email-notification:
627 email-recipients: '{email-recipients}'
628 email-prefix: '[autorelease] [{project-name}]'