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}'
58 ######################
59 # Default parameters #
60 ######################
62 build-node: '{build-node}'
64 java-version: openjdk8
65 mvn-global-settings: global-settings
66 mvn-settings: autorelease-settings
74 project-type: freestyle
79 - lf-infra-properties:
80 build-days-to-keep: 30
84 maven-version: '{mvn-version}'
85 - lf-infra-parameters:
89 lftools-version: '{lftools-version}'
90 - distribution-karaf-version:
91 karaf-version: '{karaf-version}'
92 - autorelease-release-tag:
93 release-tag: '{stream}'
96 default: '{extra-mvn-opts}'
98 Additional optional Maven Options to pass to the Maven Goals
102 -Dskip.karaf.featureTest=true # To disable karaf SingleFeatureTests
103 --fail-never # NEVER fail the build, regardless of project result
104 --fail-at-end # Only fail the build afterwards; allow all non-impacted builds to continue
106 name: ARCHIVE_ARTIFACTS
107 default: '{archive-artifacts}'
108 description: Artifacts to archive to the logs server.
110 name: STAGING_PROFILE_ID
111 default: '{staging-profile-id}'
112 description: Nexus staging profile ID.
116 credentials-id: 'opendaylight-jenkins-ssh'
118 refspec: '$GERRIT_REFSPEC'
121 choosing-strategy: default
128 - opendaylight-infra-wrappers:
136 # force jenkins install of maven version before any shell scripts use it
138 mvn-version: '{mvn-version}'
139 - wipe-local-maven-repo
140 - lf-jacoco-nojava-workaround
141 - shell: "./scripts/list-project-dependencies.sh"
142 - autorelease-determine-merge-order
143 - lf-provide-maven-settings:
144 global-settings-file: '{mvn-global-settings}'
145 settings-file: '{mvn-settings}'
146 - lf-infra-create-netrc:
147 server-id: '{mvn-staging-id}'
148 - autorelease-generate-release-patches
149 - autorelease-generate-artifact-versions
150 - autorelease-distribute-taglist
151 - distribute-build-url:
152 path: 'integration/distribution/$KARAF_ARTIFACT/src/main/assembly'
153 # In a perfect world projects should be releasing separately and we consume them
154 # via a project that pulls the release bits from each project from Nexus.
155 # Keep the patches compatible with that ideal, but apply an edit
156 # to enable building in a single maven reactor afterwards.
157 - autorelease-fix-relative-paths
159 maven-version: '{mvn-version}'
164 -Pintegrationtests,repoBuild
165 -Dcheckstyle.skip=true
166 -DaltDeploymentRepository=staging::default::file:"$WORKSPACE"/m2repo
167 {opendaylight-infra-mvn-opts}
169 - '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
170 settings: '{mvn-settings}'
172 global-settings: '{mvn-global-settings}'
173 global-settings-type: cfp
175 - autorelease-get-integration-test-variables
176 - autorelease-maven-sources:
177 opendaylight-infra-mvn-opts: '{opendaylight-infra-mvn-opts}'
178 maven-version: '{mvn-version}'
179 settings: '{mvn-settings}'
180 global-settings: '{mvn-global-settings}'
186 - opendaylight-infra-notify-status
187 - trigger-parameterized-builds:
188 - project: 'integration-distribution-test-{integration-test}'
190 predefined-parameters: |
191 BUNDLE_URL=autorelease
192 KARAF_VERSION=$KARAF_VERSION
193 fail-on-missing: true
194 - project: 'packaging-build-rpm-{stream}'
195 condition: UNSTABLE_OR_BETTER
196 predefined-parameters: DOWNLOAD_URL=$BUNDLE_URL
197 property-file: variables.jenkins-trigger
198 fail-on-missing: true
199 - project: 'packaging-build-deb-{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 # Critical component of the OpenDaylight community
211 - shell: echo '#topic cookies'
212 mark-unstable-if-failed: false
216 name: 'autorelease-update-submodules-{stream}'
218 ######################
219 # Default parameters #
220 ######################
224 #####################
225 # Job configuration #
226 #####################
228 project-type: freestyle
229 node: centos7-builder-2c-2g
232 - lf-infra-properties:
233 build-days-to-keep: 7
236 - lf-infra-parameters:
237 project: releng/autorelease
240 refspec: 'refs/heads/{branch}'
241 lftools-version: '{lftools-version}'
244 - lf-infra-gerrit-scm:
245 git-url: '$GIT_URL/$GERRIT_PROJECT'
247 refspec: 'refs/heads/{branch}'
248 jenkins-ssh-credential: opendaylight-jenkins-ssh
249 submodule-recursive: true
250 submodule-timeout: 10
251 choosing-strategy: default
256 jenkins-ssh-credential: opendaylight-jenkins-ssh
259 - timed: '{obj:cron}'
263 # Fetch latest head of branch
265 git checkout $GERRIT_BRANCH
266 git submodule update --remote
268 - lf-infra-push-gerrit-patch:
270 gerrit-user: 'jenkins-$SILO'
271 gerrit-host: 'git.opendaylight.org'
272 gerrit-topic: 'autorelease-update-submodules'
273 gerrit-commit-message: 'Update submodules to latest HEAD of branch'
280 name: autorelease-update-validate-jobs-{stream}
282 ######################
283 # Default parameters #
284 ######################
288 #####################
289 # Job configuration #
290 #####################
292 project-type: freestyle
293 node: centos7-builder-2c-1g
296 - lf-infra-properties:
297 build-days-to-keep: 7
300 - lf-infra-parameters:
301 project: releng/builder
304 lftools-version: '{lftools-version}'
307 - lf-infra-gerrit-scm:
308 git-url: '$GIT_URL/releng/builder'
310 refspec: 'refs/heads/master'
311 jenkins-ssh-credential: opendaylight-jenkins-ssh
312 submodule-recursive: true
313 submodule-timeout: 10
314 choosing-strategy: default
319 server-name: '{gerrit-server-name}'
321 - change-merged-event
322 - comment-added-contains-event:
323 comment-contains-value: remerge$
325 - project-compare-type: ANT
326 project-pattern: '{project}'
328 - branch-compare-type: ANT
329 branch-pattern: '**/{branch}'
337 jenkins-ssh-credential: opendaylight-jenkins-ssh
341 - autorelease-update-project-views
342 - autorelease-update-validate-projects
343 - lf-infra-push-gerrit-patch:
345 gerrit-user: 'jenkins-$SILO'
346 gerrit-host: 'git.opendaylight.org'
347 gerrit-topic: 'autorelease-update-validate-jobs-{stream}'
348 gerrit-commit-message: |
349 'Update validate autorelease projects for {stream}'
350 reviewers-email: 'jenkins-releng@opendaylight.org'
356 name: autorelease-version-bump-{stream}
358 #####################
359 # Default variables #
360 #####################
362 mvn-global-settings: global-settings
363 mvn-settings: autorelease-settings
366 #####################
367 # Job configuration #
368 #####################
370 project-type: freestyle
374 - opendaylight-infra-properties:
375 build-days-to-keep: 7
378 - lf-infra-parameters:
379 project: releng/autorelease
382 refspec: 'refs/heads/{branch}'
383 lftools-version: '{lftools-version}'
388 Release that is being version bumped.
389 Eg. Lithium, Beryllium, Boron, Carbon, Carbon-SR1, Carbon-SR2...
394 If BRANCH_CUT is enabled, perform version bump for branch cutting
395 workflow, else perform version bump for simultaneous release
401 If DRY_RUN is enabled modifications are not published to Gerrit
402 and artifacts are not pushed to Nexus. Instead the build will be
403 performed using the goals "clean install".
405 maven-version: '{mvn-version}'
408 - lf-infra-gerrit-scm:
409 git-url: '$GIT_URL/$GERRIT_PROJECT'
411 refspec: 'refs/heads/{branch}'
412 jenkins-ssh-credential: opendaylight-jenkins-ssh
413 submodule-recursive: true
414 submodule-timeout: 10
415 choosing-strategy: default
420 jenkins-ssh-credential: opendaylight-jenkins-ssh
424 # force jenkins install of maven version before any shell scripts use it
426 mvn-version: '{mvn-version}'
427 - lf-provide-maven-settings:
428 global-settings-file: '{mvn-global-settings}'
429 settings-file: '{mvn-settings}'
430 - shell: !include-raw-escape:
437 name: 'autorelease-generate-release-notes-{stream}'
439 ######################
440 # Default parameters #
441 ######################
443 gerrit_merge_triggers:
444 - comment-added-contains-event:
445 comment-contains-value: generate-release-notes .+$
447 #####################
448 # Job Configuration #
449 #####################
451 project-type: freestyle
452 node: centos7-builder-2c-8g
455 - lf-infra-properties:
456 build-days-to-keep: 7
459 - lf-infra-parameters:
463 lftools-version: '{lftools-version}'
467 Release to generate release notes for.
468 Eg. Oxygen-SR1, Fluorine-SR2...
470 - lf-infra-gerrit-scm:
471 git-url: '$GIT_URL/$GERRIT_PROJECT'
472 branch: '$GERRIT_BRANCH'
473 refspec: '$GERRIT_REFSPEC'
474 jenkins-ssh-credential: opendaylight-jenkins-ssh
475 submodule-recursive: true
476 submodule-timeout: 10
477 choosing-strategy: default
482 jenkins-ssh-credential: opendaylight-jenkins-ssh
486 server-name: '{gerrit-server-name}'
487 trigger-on: '{obj:gerrit_merge_triggers}'
489 - project-compare-type: ANT
490 project-pattern: '{project}'
492 - branch-compare-type: ANT
493 branch-pattern: '**/{branch}'
497 - autorelease-generate-release-notes
503 name: '{project-name}-validate-autorelease-{stream}'
505 #####################
506 # Default variables #
507 #####################
509 java-version: openjdk8
510 mvn-global-settings: global-settings
511 mvn-settings: autorelease-settings
514 #####################
515 # Job Configuration #
516 #####################
519 project-type: freestyle
520 # Note: This NEEDS to be hardcoded as projects should NOT be allowed to
521 # override the build node.
522 node: centos7-builder-2c-8g
524 jdk: '{java-version}'
527 - lf-infra-properties:
528 build-days-to-keep: 7
531 - lf-infra-parameters:
535 lftools-version: '{lftools-version}'
536 - autorelease-release-tag:
537 release-tag: validate
540 default: '{git-url}/releng/autorelease'
541 description: "Autorelease clone URL"
546 credentials-id: 'opendaylight-jenkins-ssh'
556 - opendaylight-infra-wrappers:
557 build-timeout: '{build-timeout}'
560 - gerrit-trigger-patch-submitted:
561 gerrit-server-name: '{gerrit-server-name}'
569 - autorelease-checkout-gerrit-patch
570 - autorelease-compare-projects
571 - lf-jacoco-nojava-workaround
572 - shell: "./scripts/list-project-dependencies.sh"
573 - autorelease-determine-merge-order
574 - autorelease-generate-release-patches
575 # In a perfect world projects should be releasing separately and we consume them
576 # via a project that pulls the release bits from each project from Nexus.
577 # Keep the patches compatible with that ideal, but apply an edit
578 # to enable building in a single maven reactor afterwards.
579 - autorelease-fix-relative-paths
581 maven-version: '{mvn-version}'
582 pom: validate-pom.xml
584 clean install dependency:tree
587 {opendaylight-infra-mvn-opts}
590 settings: '{mvn-settings}'
592 global-settings: '{mvn-global-settings}'
593 global-settings-type: cfp
595 maven-version: '{mvn-version}'
600 {opendaylight-infra-mvn-opts}
602 - '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
603 settings: '{mvn-settings}'
605 global-settings: '{mvn-global-settings}'
606 global-settings-type: cfp
612 - email-notification:
613 email-recipients: '{email-recipients}'
614 email-prefix: '[autorelease] [{project-name}]'