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
367 #####################
368 # Job configuration #
369 #####################
371 project-type: freestyle
375 - opendaylight-infra-properties:
376 build-days-to-keep: 7
379 - lf-infra-parameters:
380 project: releng/autorelease
383 refspec: 'refs/heads/{branch}'
384 lftools-version: '{lftools-version}'
389 Release that is being version bumped.
390 Eg. Lithium, Beryllium, Boron, Carbon, Carbon-SR1, Carbon-SR2...
395 If BRANCH_CUT is enabled, perform version bump for branch cutting
396 workflow, else perform version bump for simultaneous release
402 If DRY_RUN is enabled modifications are not published to Gerrit
403 and artifacts are not pushed to Nexus. Instead the build will be
404 performed using the goals "clean install".
406 maven-version: '{mvn-version}'
409 - lf-infra-gerrit-scm:
410 git-url: '$GIT_URL/$GERRIT_PROJECT'
412 refspec: 'refs/heads/{branch}'
413 jenkins-ssh-credential: opendaylight-jenkins-ssh
414 submodule-recursive: true
415 submodule-timeout: 10
416 choosing-strategy: default
421 jenkins-ssh-credential: opendaylight-jenkins-ssh
425 # force jenkins install of maven version before any shell scripts use it
427 mvn-version: '{mvn-version}'
428 - lf-provide-maven-settings:
429 global-settings-file: '{mvn-global-settings}'
430 settings-file: '{mvn-settings}'
431 - shell: !include-raw-escape:
438 name: 'autorelease-generate-release-notes-{stream}'
440 ######################
441 # Default parameters #
442 ######################
444 gerrit_merge_triggers:
445 - comment-added-contains-event:
446 comment-contains-value: generate-release-notes .+$
448 #####################
449 # Job Configuration #
450 #####################
452 project-type: freestyle
453 node: centos7-builder-2c-8g
456 - lf-infra-properties:
457 build-days-to-keep: 7
460 - lf-infra-parameters:
464 lftools-version: '{lftools-version}'
467 description: Release to generate release notes for.
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}]'