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}'
468 Release to generate release notes for.
469 Eg. Oxygen-SR1, Fluorine-SR2...
471 - lf-infra-gerrit-scm:
472 git-url: '$GIT_URL/$GERRIT_PROJECT'
473 branch: '$GERRIT_BRANCH'
474 refspec: '$GERRIT_REFSPEC'
475 jenkins-ssh-credential: opendaylight-jenkins-ssh
476 submodule-recursive: true
477 submodule-timeout: 10
478 choosing-strategy: default
483 jenkins-ssh-credential: opendaylight-jenkins-ssh
487 server-name: '{gerrit-server-name}'
488 trigger-on: '{obj:gerrit_merge_triggers}'
490 - project-compare-type: ANT
491 project-pattern: '{project}'
493 - branch-compare-type: ANT
494 branch-pattern: '**/{branch}'
498 - autorelease-generate-release-notes
504 name: '{project-name}-validate-autorelease-{stream}'
506 #####################
507 # Default variables #
508 #####################
510 java-version: openjdk8
511 mvn-global-settings: global-settings
512 mvn-settings: autorelease-settings
515 #####################
516 # Job Configuration #
517 #####################
520 project-type: freestyle
521 # Note: This NEEDS to be hardcoded as projects should NOT be allowed to
522 # override the build node.
523 node: centos7-builder-2c-8g
525 jdk: '{java-version}'
528 - lf-infra-properties:
529 build-days-to-keep: 7
532 - lf-infra-parameters:
536 lftools-version: '{lftools-version}'
537 - autorelease-release-tag:
538 release-tag: validate
541 default: '{git-url}/releng/autorelease'
542 description: "Autorelease clone URL"
547 credentials-id: 'opendaylight-jenkins-ssh'
557 - opendaylight-infra-wrappers:
558 build-timeout: '{build-timeout}'
561 - gerrit-trigger-patch-submitted:
562 gerrit-server-name: '{gerrit-server-name}'
570 - autorelease-checkout-gerrit-patch
571 - autorelease-compare-projects
572 - lf-jacoco-nojava-workaround
573 - shell: "./scripts/list-project-dependencies.sh"
574 - autorelease-determine-merge-order
575 - autorelease-generate-release-patches
576 # In a perfect world projects should be releasing separately and we consume them
577 # via a project that pulls the release bits from each project from Nexus.
578 # Keep the patches compatible with that ideal, but apply an edit
579 # to enable building in a single maven reactor afterwards.
580 - autorelease-fix-relative-paths
582 maven-version: '{mvn-version}'
583 pom: validate-pom.xml
585 clean install dependency:tree
588 {opendaylight-infra-mvn-opts}
591 settings: '{mvn-settings}'
593 global-settings: '{mvn-global-settings}'
594 global-settings-type: cfp
596 maven-version: '{mvn-version}'
601 {opendaylight-infra-mvn-opts}
603 - '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
604 settings: '{mvn-settings}'
606 global-settings: '{mvn-global-settings}'
607 global-settings-type: cfp
613 - email-notification:
614 email-recipients: '{email-recipients}'
615 email-prefix: '[autorelease] [{project-name}]'