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
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 - lf-update-java-alternatives:
151 java-version: '{java-version}'
152 - autorelease-distribute-taglist
153 - distribute-build-url:
154 path: 'integration/distribution/$KARAF_ARTIFACT/src/main/assembly'
155 # In a perfect world projects should be releasing separately and we consume them
156 # via a project that pulls the release bits from each project from Nexus.
157 # Keep the patches compatible with that ideal, but apply an edit
158 # to enable building in a single maven reactor afterwards.
159 - autorelease-fix-relative-paths
161 maven-version: '{mvn-version}'
166 -Pintegrationtests,repoBuild
167 -Dcheckstyle.skip=true
168 -DaltDeploymentRepository=staging::default::file:"$WORKSPACE"/m2repo
169 {opendaylight-infra-mvn-opts}
171 - '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
172 settings: '{mvn-settings}'
174 global-settings: '{mvn-global-settings}'
175 global-settings-type: cfp
177 - autorelease-get-integration-test-variables
178 - autorelease-maven-sources:
179 opendaylight-infra-mvn-opts: '{opendaylight-infra-mvn-opts}'
180 maven-version: '{mvn-version}'
181 settings: '{mvn-settings}'
182 global-settings: '{mvn-global-settings}'
188 - opendaylight-infra-notify-status
189 - trigger-parameterized-builds:
190 - project: 'integration-distribution-test-{integration-test}'
191 condition: UNSTABLE_OR_BETTER
192 property-file: variables.jenkins-trigger
193 fail-on-missing: true
194 - project: 'integration-distribution-test-{integration-test}'
196 trigger-with-no-params: true
197 - project: 'packaging-build-rpm-{stream}'
198 condition: UNSTABLE_OR_BETTER
199 predefined-parameters: DOWNLOAD_URL=$BUNDLE_URL
200 property-file: variables.jenkins-trigger
201 fail-on-missing: true
202 - project: 'packaging-build-deb-{stream}'
203 condition: UNSTABLE_OR_BETTER
204 predefined-parameters: DOWNLOAD_URL=$BUNDLE_URL
205 property-file: variables.jenkins-trigger
206 fail-on-missing: true
207 # Critical component of the OpenDaylight community
214 - shell: echo '#topic cookies'
215 mark-unstable-if-failed: false
219 name: 'autorelease-update-submodules-{stream}'
221 ######################
222 # Default parameters #
223 ######################
227 #####################
228 # Job configuration #
229 #####################
231 project-type: freestyle
232 node: centos7-builder-2c-2g
235 - lf-infra-properties:
236 build-days-to-keep: 7
239 - lf-infra-parameters:
240 project: releng/autorelease
243 refspec: 'refs/heads/{branch}'
244 lftools-version: '{lftools-version}'
247 - lf-infra-gerrit-scm:
248 git-url: '$GIT_URL/$GERRIT_PROJECT'
250 refspec: 'refs/heads/{branch}'
251 jenkins-ssh-credential: opendaylight-jenkins-ssh
252 submodule-recursive: true
253 submodule-timeout: 10
254 choosing-strategy: default
259 jenkins-ssh-credential: opendaylight-jenkins-ssh
262 - timed: '{obj:cron}'
266 # Fetch latest head of branch
268 git checkout $GERRIT_BRANCH
269 git submodule update --remote
271 - lf-infra-push-gerrit-patch:
273 gerrit-user: 'jenkins-$SILO'
274 gerrit-host: 'git.opendaylight.org'
275 gerrit-topic: 'autorelease-update-submodules'
276 gerrit-commit-message: 'Update submodules to latest HEAD of branch'
283 name: autorelease-update-validate-jobs-{stream}
285 ######################
286 # Default parameters #
287 ######################
291 #####################
292 # Job configuration #
293 #####################
295 project-type: freestyle
296 node: centos7-builder-2c-1g
299 - lf-infra-properties:
300 build-days-to-keep: 7
303 - lf-infra-parameters:
304 project: releng/builder
307 lftools-version: '{lftools-version}'
310 - lf-infra-gerrit-scm:
311 git-url: '$GIT_URL/releng/builder'
313 refspec: 'refs/heads/master'
314 jenkins-ssh-credential: opendaylight-jenkins-ssh
315 submodule-recursive: true
316 submodule-timeout: 10
317 choosing-strategy: default
322 server-name: '{gerrit-server-name}'
324 - change-merged-event
325 - comment-added-contains-event:
326 comment-contains-value: remerge$
328 - project-compare-type: ANT
329 project-pattern: '{project}'
331 - branch-compare-type: ANT
332 branch-pattern: '**/{branch}'
340 jenkins-ssh-credential: opendaylight-jenkins-ssh
344 - autorelease-update-project-views
345 - autorelease-update-validate-projects
346 - lf-infra-push-gerrit-patch:
348 gerrit-user: 'jenkins-$SILO'
349 gerrit-host: 'git.opendaylight.org'
350 gerrit-topic: 'autorelease-update-validate-jobs-{stream}'
351 gerrit-commit-message: |
352 'Update validate autorelease projects for {stream}'
353 reviewers-email: 'jenkins-releng@opendaylight.org'
359 name: autorelease-version-bump-{stream}
361 #####################
362 # Default variables #
363 #####################
365 mvn-global-settings: global-settings
366 mvn-settings: autorelease-settings
369 #####################
370 # Job configuration #
371 #####################
373 project-type: freestyle
377 - opendaylight-infra-properties:
378 build-days-to-keep: 7
381 - lf-infra-parameters:
382 project: releng/autorelease
385 refspec: 'refs/heads/{branch}'
386 lftools-version: '{lftools-version}'
391 Release that is being version bumped.
392 Eg. Lithium, Beryllium, Boron, Carbon, Carbon-SR1, Carbon-SR2...
397 If BRANCH_CUT is enabled, perform version bump for branch cutting
398 workflow, else perform version bump for simultaneous release
404 If DRY_RUN is enabled modifications are not published to Gerrit
405 and artifacts are not pushed to Nexus. Instead the build will be
406 performed using the goals "clean install".
408 maven-version: '{mvn-version}'
411 - lf-infra-gerrit-scm:
412 git-url: '$GIT_URL/$GERRIT_PROJECT'
414 refspec: 'refs/heads/{branch}'
415 jenkins-ssh-credential: opendaylight-jenkins-ssh
416 submodule-recursive: true
417 submodule-timeout: 10
418 choosing-strategy: default
423 jenkins-ssh-credential: opendaylight-jenkins-ssh
427 # force jenkins install of maven version before any shell scripts use it
429 mvn-version: '{mvn-version}'
430 - lf-provide-maven-settings:
431 global-settings-file: '{mvn-global-settings}'
432 settings-file: '{mvn-settings}'
433 - shell: !include-raw-escape:
440 name: 'autorelease-generate-release-notes-{stream}'
442 ######################
443 # Default parameters #
444 ######################
446 gerrit_merge_triggers:
447 - comment-added-contains-event:
448 comment-contains-value: generate-release-notes .+$
450 #####################
451 # Job Configuration #
452 #####################
454 project-type: freestyle
455 node: centos7-builder-2c-8g
458 - lf-infra-properties:
459 build-days-to-keep: 7
462 - lf-infra-parameters:
466 lftools-version: '{lftools-version}'
470 Release to generate release notes for.
471 Eg. Oxygen-SR1, Fluorine-SR2...
473 - lf-infra-gerrit-scm:
474 git-url: '$GIT_URL/$GERRIT_PROJECT'
475 branch: '$GERRIT_BRANCH'
476 refspec: '$GERRIT_REFSPEC'
477 jenkins-ssh-credential: opendaylight-jenkins-ssh
478 submodule-recursive: true
479 submodule-timeout: 10
480 choosing-strategy: default
485 jenkins-ssh-credential: opendaylight-jenkins-ssh
489 server-name: '{gerrit-server-name}'
490 trigger-on: '{obj:gerrit_merge_triggers}'
492 - project-compare-type: ANT
493 project-pattern: '{project}'
495 - branch-compare-type: ANT
496 branch-pattern: '**/{branch}'
500 - autorelease-generate-release-notes
506 name: '{project-name}-validate-autorelease-{stream}'
508 #####################
509 # Default variables #
510 #####################
512 java-version: openjdk8
513 mvn-global-settings: global-settings
514 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
584 maven-version: '{mvn-version}'
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
598 maven-version: '{mvn-version}'
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}]'