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
76 project-type: freestyle
79 disabled: '{disable-job}'
82 - lf-infra-properties:
83 build-days-to-keep: 30
87 maven-version: '{mvn-version}'
88 - lf-infra-parameters:
92 lftools-version: '{lftools-version}'
93 - distribution-karaf-version:
94 karaf-version: '{karaf-version}'
95 - autorelease-release-tag:
96 release-tag: '{stream}'
99 default: '{extra-mvn-opts}'
101 Additional optional Maven Options to pass to the Maven Goals
105 -Dskip.karaf.featureTest=true # To disable karaf SingleFeatureTests
106 --fail-never # NEVER fail the build, regardless of project result
107 --fail-at-end # Only fail the build afterwards; allow all non-impacted builds to continue
109 name: ARCHIVE_ARTIFACTS
110 default: '{archive-artifacts}'
111 description: Artifacts to archive to the logs server.
113 name: STAGING_PROFILE_ID
114 default: '{staging-profile-id}'
115 description: Nexus staging profile ID.
119 credentials-id: 'opendaylight-jenkins-ssh'
121 refspec: '$GERRIT_REFSPEC'
124 choosing-strategy: default
131 - opendaylight-infra-wrappers:
139 # force jenkins install of maven version before any shell scripts use it
141 mvn-version: '{mvn-version}'
142 - wipe-local-maven-repo
143 - lf-jacoco-nojava-workaround
144 - shell: "./scripts/list-project-dependencies.sh"
145 - autorelease-determine-merge-order
146 - lf-provide-maven-settings:
147 global-settings-file: '{mvn-global-settings}'
148 settings-file: '{mvn-settings}'
149 - lf-infra-create-netrc:
150 server-id: '{mvn-staging-id}'
151 - autorelease-generate-release-patches
152 - autorelease-generate-artifact-versions
153 - lf-update-java-alternatives:
154 java-version: '{java-version}'
155 - autorelease-distribute-taglist
156 - distribute-build-url:
157 path: 'integration/distribution/$KARAF_ARTIFACT/src/main/assembly'
158 # In a perfect world projects should be releasing separately and we consume them
159 # via a project that pulls the release bits from each project from Nexus.
160 # Keep the patches compatible with that ideal, but apply an edit
161 # to enable building in a single maven reactor afterwards.
162 - autorelease-fix-relative-paths
164 maven-version: '{mvn-version}'
169 -Pintegrationtests,repoBuild
170 -Dcheckstyle.skip=true
171 -DaltDeploymentRepository=staging::default::file:"$WORKSPACE"/m2repo
172 {opendaylight-infra-mvn-opts}
174 - '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
175 settings: '{mvn-settings}'
177 global-settings: '{mvn-global-settings}'
178 global-settings-type: cfp
180 sign-artifacts: '{sign-artifacts}'
181 sign-dir: '$WORKSPACE/m2repo'
183 - autorelease-get-integration-test-variables
184 - autorelease-maven-sources:
185 opendaylight-infra-mvn-opts: '{opendaylight-infra-mvn-opts}'
186 maven-version: '{mvn-version}'
187 settings: '{mvn-settings}'
188 global-settings: '{mvn-global-settings}'
194 - opendaylight-infra-notify-status
195 - trigger-parameterized-builds:
196 - project: 'integration-distribution-test-{integration-test}'
197 condition: UNSTABLE_OR_BETTER
198 property-file: variables.jenkins-trigger
199 fail-on-missing: true
200 - project: 'integration-distribution-test-{integration-test}'
202 trigger-with-no-params: true
203 - project: 'packaging-build-rpm-{stream}'
204 condition: UNSTABLE_OR_BETTER
205 predefined-parameters: DOWNLOAD_URL=$BUNDLE_URL
206 property-file: variables.jenkins-trigger
207 fail-on-missing: true
208 - project: 'packaging-build-deb-{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 # Critical component of the OpenDaylight community
220 - shell: echo '#topic cookies'
221 mark-unstable-if-failed: false
225 name: 'autorelease-update-submodules-{stream}'
227 ######################
228 # Default parameters #
229 ######################
234 #####################
235 # Job configuration #
236 #####################
238 project-type: freestyle
239 node: centos7-builder-2c-2g
240 disabled: '{disable-job}'
243 - lf-infra-properties:
244 build-days-to-keep: 7
247 - lf-infra-parameters:
248 project: releng/autorelease
251 refspec: 'refs/heads/{branch}'
252 lftools-version: '{lftools-version}'
255 - lf-infra-gerrit-scm:
256 git-url: '$GIT_URL/$GERRIT_PROJECT'
258 refspec: 'refs/heads/{branch}'
259 jenkins-ssh-credential: opendaylight-jenkins-ssh
260 submodule-recursive: true
261 submodule-timeout: 10
262 choosing-strategy: default
267 jenkins-ssh-credential: opendaylight-jenkins-ssh
270 - timed: '{obj:cron}'
274 # Fetch latest head of branch
276 git checkout $GERRIT_BRANCH
277 git submodule update --remote
279 - lf-infra-push-gerrit-patch:
281 gerrit-user: 'jenkins-$SILO'
282 gerrit-host: 'git.opendaylight.org'
283 gerrit-topic: 'autorelease-update-submodules'
284 gerrit-commit-message: 'Update submodules to latest HEAD of branch'
291 name: autorelease-update-validate-jobs-{stream}
293 ######################
294 # Default parameters #
295 ######################
300 #####################
301 # Job configuration #
302 #####################
304 project-type: freestyle
305 node: centos7-builder-2c-1g
306 disabled: '{disable-job}'
309 - lf-infra-properties:
310 build-days-to-keep: 7
313 - lf-infra-parameters:
314 project: releng/builder
317 lftools-version: '{lftools-version}'
320 - lf-infra-gerrit-scm:
321 git-url: '$GIT_URL/releng/builder'
323 refspec: 'refs/heads/master'
324 jenkins-ssh-credential: opendaylight-jenkins-ssh
325 submodule-recursive: true
326 submodule-timeout: 10
327 choosing-strategy: default
332 server-name: '{gerrit-server-name}'
334 - change-merged-event
335 - comment-added-contains-event:
336 comment-contains-value: remerge$
338 - project-compare-type: ANT
339 project-pattern: '{project}'
341 - branch-compare-type: ANT
342 branch-pattern: '**/{branch}'
350 jenkins-ssh-credential: opendaylight-jenkins-ssh
354 - autorelease-update-project-views
355 - autorelease-update-validate-projects
356 - lf-infra-push-gerrit-patch:
358 gerrit-user: 'jenkins-$SILO'
359 gerrit-host: 'git.opendaylight.org'
360 gerrit-topic: 'autorelease-update-validate-jobs-{stream}'
361 gerrit-commit-message: |
362 'Update validate autorelease projects for {stream}'
363 reviewers-email: 'jenkins-releng@opendaylight.org'
369 name: autorelease-version-bump-{stream}
371 #####################
372 # Default variables #
373 #####################
375 mvn-global-settings: global-settings
376 mvn-settings: autorelease-settings
380 #####################
381 # Job configuration #
382 #####################
384 project-type: freestyle
386 disabled: '{disable-job}'
389 - opendaylight-infra-properties:
390 build-days-to-keep: 7
393 - lf-infra-parameters:
394 project: releng/autorelease
397 refspec: 'refs/heads/{branch}'
398 lftools-version: '{lftools-version}'
403 Release that is being version bumped.
404 Eg. Lithium, Beryllium, Boron, Carbon, Carbon-SR1, Carbon-SR2...
409 If BRANCH_CUT is enabled, perform version bump for branch cutting
410 workflow, else perform version bump for simultaneous release
416 If DRY_RUN is enabled modifications are not published to Gerrit
417 and artifacts are not pushed to Nexus. Instead the build will be
418 performed using the goals "clean install".
420 maven-version: '{mvn-version}'
423 - lf-infra-gerrit-scm:
424 git-url: '$GIT_URL/$GERRIT_PROJECT'
426 refspec: 'refs/heads/{branch}'
427 jenkins-ssh-credential: opendaylight-jenkins-ssh
428 submodule-recursive: true
429 submodule-timeout: 10
430 choosing-strategy: default
435 jenkins-ssh-credential: opendaylight-jenkins-ssh
439 # force jenkins install of maven version before any shell scripts use it
441 mvn-version: '{mvn-version}'
442 - lf-provide-maven-settings:
443 global-settings-file: '{mvn-global-settings}'
444 settings-file: '{mvn-settings}'
445 - shell: !include-raw-escape:
452 name: 'autorelease-generate-release-notes-{stream}'
454 ######################
455 # Default parameters #
456 ######################
459 gerrit_merge_triggers:
460 - comment-added-contains-event:
461 comment-contains-value: generate-release-notes .+$
463 #####################
464 # Job Configuration #
465 #####################
467 project-type: freestyle
468 node: centos7-builder-2c-8g
469 disabled: '{disable-job}'
472 - lf-infra-properties:
473 build-days-to-keep: 7
476 - lf-infra-parameters:
480 lftools-version: '{lftools-version}'
484 Release to generate release notes for.
485 Eg. Oxygen-SR1, Fluorine-SR2...
487 - lf-infra-gerrit-scm:
488 git-url: '$GIT_URL/$GERRIT_PROJECT'
489 branch: '$GERRIT_BRANCH'
490 refspec: '$GERRIT_REFSPEC'
491 jenkins-ssh-credential: opendaylight-jenkins-ssh
492 submodule-recursive: true
493 submodule-timeout: 10
494 choosing-strategy: default
499 jenkins-ssh-credential: opendaylight-jenkins-ssh
503 server-name: '{gerrit-server-name}'
504 trigger-on: '{obj:gerrit_merge_triggers}'
506 - project-compare-type: ANT
507 project-pattern: '{project}'
509 - branch-compare-type: ANT
510 branch-pattern: '**/{branch}'
514 - autorelease-generate-release-notes
520 name: '{project-name}-validate-autorelease-{stream}'
522 #####################
523 # Default variables #
524 #####################
526 java-version: openjdk8
527 mvn-global-settings: global-settings
528 mvn-settings: autorelease-settings
532 #####################
533 # Job Configuration #
534 #####################
536 project-type: freestyle
537 # Note: This NEEDS to be hardcoded as projects should NOT be allowed to
538 # override the build node.
539 node: centos7-builder-2c-8g
541 jdk: '{java-version}'
542 disabled: '{disable-job}'
545 - lf-infra-properties:
546 build-days-to-keep: 7
549 - lf-infra-parameters:
553 lftools-version: '{lftools-version}'
554 - autorelease-release-tag:
555 release-tag: validate
558 default: '{git-url}/releng/autorelease'
559 description: "Autorelease clone URL"
564 credentials-id: 'opendaylight-jenkins-ssh'
574 - opendaylight-infra-wrappers:
575 build-timeout: '{build-timeout}'
578 - gerrit-trigger-patch-submitted:
579 gerrit-server-name: '{gerrit-server-name}'
587 - autorelease-checkout-gerrit-patch
588 - autorelease-compare-projects
589 - lf-jacoco-nojava-workaround
590 - shell: "./scripts/list-project-dependencies.sh"
591 - autorelease-determine-merge-order
592 - autorelease-generate-release-patches
593 # In a perfect world projects should be releasing separately and we consume them
594 # via a project that pulls the release bits from each project from Nexus.
595 # Keep the patches compatible with that ideal, but apply an edit
596 # to enable building in a single maven reactor afterwards.
597 - autorelease-fix-relative-paths
599 maven-version: '{mvn-version}'
600 pom: validate-pom.xml
602 clean install dependency:tree
605 {opendaylight-infra-mvn-opts}
608 settings: '{mvn-settings}'
610 global-settings: '{mvn-global-settings}'
611 global-settings-type: cfp
613 maven-version: '{mvn-version}'
618 {opendaylight-infra-mvn-opts}
620 - '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
621 settings: '{mvn-settings}'
623 global-settings: '{mvn-global-settings}'
624 global-settings-type: cfp
630 - email-notification:
631 email-recipients: '{email-recipients}'
632 email-prefix: '[autorelease] [{project-name}]'