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}'
189 condition: UNSTABLE_OR_BETTER
190 property-file: variables.jenkins-trigger
191 fail-on-missing: true
192 - project: 'integration-distribution-test-{integration-test}'
194 trigger-with-no-params: true
195 - project: 'packaging-build-rpm-{stream}'
196 condition: UNSTABLE_OR_BETTER
197 predefined-parameters: DOWNLOAD_URL=$BUNDLE_URL
198 property-file: variables.jenkins-trigger
199 fail-on-missing: true
200 - project: 'packaging-build-deb-{stream}'
201 condition: UNSTABLE_OR_BETTER
202 predefined-parameters: DOWNLOAD_URL=$BUNDLE_URL
203 property-file: variables.jenkins-trigger
204 fail-on-missing: true
205 # Critical component of the OpenDaylight community
212 - shell: echo '#topic cookies'
213 mark-unstable-if-failed: false
217 name: 'autorelease-update-submodules-{stream}'
219 ######################
220 # Default parameters #
221 ######################
225 #####################
226 # Job configuration #
227 #####################
229 project-type: freestyle
230 node: centos7-builder-2c-2g
233 - lf-infra-properties:
234 build-days-to-keep: 7
237 - lf-infra-parameters:
238 project: releng/autorelease
241 refspec: 'refs/heads/{branch}'
242 lftools-version: '{lftools-version}'
245 - lf-infra-gerrit-scm:
246 git-url: '$GIT_URL/$GERRIT_PROJECT'
248 refspec: 'refs/heads/{branch}'
249 jenkins-ssh-credential: opendaylight-jenkins-ssh
250 submodule-recursive: true
251 submodule-timeout: 10
252 choosing-strategy: default
257 jenkins-ssh-credential: opendaylight-jenkins-ssh
260 - timed: '{obj:cron}'
264 # Fetch latest head of branch
266 git checkout $GERRIT_BRANCH
267 git submodule update --remote
269 - lf-infra-push-gerrit-patch:
271 gerrit-user: 'jenkins-$SILO'
272 gerrit-host: 'git.opendaylight.org'
273 gerrit-topic: 'autorelease-update-submodules'
274 gerrit-commit-message: 'Update submodules to latest HEAD of branch'
281 name: autorelease-update-validate-jobs-{stream}
283 ######################
284 # Default parameters #
285 ######################
289 #####################
290 # Job configuration #
291 #####################
293 project-type: freestyle
294 node: centos7-builder-2c-1g
297 - lf-infra-properties:
298 build-days-to-keep: 7
301 - lf-infra-parameters:
302 project: releng/builder
305 lftools-version: '{lftools-version}'
308 - lf-infra-gerrit-scm:
309 git-url: '$GIT_URL/releng/builder'
311 refspec: 'refs/heads/master'
312 jenkins-ssh-credential: opendaylight-jenkins-ssh
313 submodule-recursive: true
314 submodule-timeout: 10
315 choosing-strategy: default
320 server-name: '{gerrit-server-name}'
322 - change-merged-event
323 - comment-added-contains-event:
324 comment-contains-value: remerge$
326 - project-compare-type: ANT
327 project-pattern: '{project}'
329 - branch-compare-type: ANT
330 branch-pattern: '**/{branch}'
338 jenkins-ssh-credential: opendaylight-jenkins-ssh
342 - autorelease-update-project-views
343 - autorelease-update-validate-projects
344 - lf-infra-push-gerrit-patch:
346 gerrit-user: 'jenkins-$SILO'
347 gerrit-host: 'git.opendaylight.org'
348 gerrit-topic: 'autorelease-update-validate-jobs-{stream}'
349 gerrit-commit-message: |
350 'Update validate autorelease projects for {stream}'
351 reviewers-email: 'jenkins-releng@opendaylight.org'
357 name: autorelease-version-bump-{stream}
359 #####################
360 # Default variables #
361 #####################
363 mvn-global-settings: global-settings
364 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".
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
428 settings: '{mvn-settings}'
430 global-settings: '{mvn-global-settings}'
431 global-settings-type: cfp
432 - lf-provide-maven-settings:
433 global-settings-file: '{mvn-global-settings}'
434 settings-file: '{mvn-settings}'
435 - shell: !include-raw-escape:
442 name: 'autorelease-generate-release-notes-{stream}'
444 ######################
445 # Default parameters #
446 ######################
448 gerrit_merge_triggers:
449 - comment-added-contains-event:
450 comment-contains-value: generate-release-notes .+$
452 #####################
453 # Job Configuration #
454 #####################
456 project-type: freestyle
457 node: centos7-builder-2c-8g
460 - lf-infra-properties:
461 build-days-to-keep: 7
464 - lf-infra-parameters:
468 lftools-version: '{lftools-version}'
471 description: Release to generate release notes for.
474 - lf-infra-gerrit-scm:
475 git-url: '$GIT_URL/$GERRIT_PROJECT'
476 branch: '$GERRIT_BRANCH'
477 refspec: '$GERRIT_REFSPEC'
478 jenkins-ssh-credential: opendaylight-jenkins-ssh
479 submodule-recursive: true
480 submodule-timeout: 10
481 choosing-strategy: default
486 jenkins-ssh-credential: opendaylight-jenkins-ssh
490 server-name: '{gerrit-server-name}'
491 trigger-on: '{obj:gerrit_merge_triggers}'
493 - project-compare-type: ANT
494 project-pattern: '{project}'
496 - branch-compare-type: ANT
497 branch-pattern: '**/{branch}'
501 - autorelease-generate-release-notes
507 name: '{project-name}-validate-autorelease-{stream}'
513 java-version: openjdk8
514 mvn-global-settings: global-settings
515 mvn-settings: autorelease-settings
517 #####################
518 # Job Configuration #
519 #####################
522 project-type: freestyle
523 # Note: This NEEDS to be hardcoded as projects should NOT be allowed to
524 # override the build node.
525 node: centos7-builder-2c-8g
527 jdk: '{java-version}'
530 - lf-infra-properties:
531 build-days-to-keep: 7
534 - lf-infra-parameters:
538 lftools-version: '{lftools-version}'
539 - autorelease-release-tag:
540 release-tag: validate
543 default: '{git-url}/releng/autorelease'
544 description: "Autorelease clone URL"
549 credentials-id: 'opendaylight-jenkins-ssh'
559 - opendaylight-infra-wrappers:
560 build-timeout: '{build-timeout}'
563 - gerrit-trigger-patch-submitted:
564 gerrit-server-name: '{gerrit-server-name}'
572 - autorelease-checkout-gerrit-patch
573 - autorelease-compare-projects
574 - lf-jacoco-nojava-workaround
575 - shell: "./scripts/list-project-dependencies.sh"
576 - autorelease-determine-merge-order
577 - autorelease-generate-release-patches
578 # In a perfect world projects should be releasing separately and we consume them
579 # via a project that pulls the release bits from each project from Nexus.
580 # Keep the patches compatible with that ideal, but apply an edit
581 # to enable building in a single maven reactor afterwards.
582 - autorelease-fix-relative-paths
585 pom: validate-pom.xml
587 clean install dependency:tree
590 {opendaylight-infra-mvn-opts}
593 settings: '{mvn-settings}'
595 global-settings: '{mvn-global-settings}'
596 global-settings-type: cfp
603 {opendaylight-infra-mvn-opts}
605 - '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
606 settings: '{mvn-settings}'
608 global-settings: '{mvn-global-settings}'
609 global-settings-type: cfp
615 - email-notification:
616 email-recipients: '{email-recipients}'
617 email-prefix: '[autorelease] [{project-name}]'