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}'
184 - lf-provide-maven-settings-cleanup
187 - opendaylight-infra-notify-status
188 - trigger-parameterized-builds:
189 - project: 'integration-distribution-test-{integration-test}'
190 condition: UNSTABLE_OR_BETTER
191 property-file: variables.jenkins-trigger
192 fail-on-missing: true
193 - project: 'integration-distribution-test-{integration-test}'
195 trigger-with-no-params: true
196 - project: 'packaging-build-rpm-{stream}'
197 condition: UNSTABLE_OR_BETTER
198 predefined-parameters: DOWNLOAD_URL=$BUNDLE_URL
199 property-file: variables.jenkins-trigger
200 fail-on-missing: true
201 - project: 'packaging-build-deb-{stream}'
202 condition: UNSTABLE_OR_BETTER
203 predefined-parameters: DOWNLOAD_URL=$BUNDLE_URL
204 property-file: variables.jenkins-trigger
205 fail-on-missing: true
206 # Critical component of the OpenDaylight community
213 - shell: echo '#topic cookies'
214 mark-unstable-if-failed: false
218 name: 'autorelease-update-submodules-{stream}'
220 ######################
221 # Default parameters #
222 ######################
226 #####################
227 # Job configuration #
228 #####################
230 project-type: freestyle
231 node: centos7-builder-2c-2g
234 - lf-infra-properties:
235 build-days-to-keep: 7
238 - lf-infra-parameters:
239 project: releng/autorelease
242 refspec: 'refs/heads/{branch}'
243 lftools-version: '{lftools-version}'
246 - lf-infra-gerrit-scm:
247 git-url: '$GIT_URL/$GERRIT_PROJECT'
249 refspec: 'refs/heads/{branch}'
250 jenkins-ssh-credential: opendaylight-jenkins-ssh
251 submodule-recursive: true
252 submodule-timeout: 10
253 choosing-strategy: default
258 jenkins-ssh-credential: opendaylight-jenkins-ssh
261 - timed: '{obj:cron}'
265 # Fetch latest head of branch
267 git checkout $GERRIT_BRANCH
268 git submodule update --remote
270 - lf-infra-push-gerrit-patch:
272 gerrit-user: 'jenkins-$SILO'
273 gerrit-host: 'git.opendaylight.org'
274 gerrit-topic: 'autorelease-update-submodules'
275 gerrit-commit-message: 'Update submodules to latest HEAD of branch'
282 name: autorelease-update-validate-jobs-{stream}
284 ######################
285 # Default parameters #
286 ######################
290 #####################
291 # Job configuration #
292 #####################
294 project-type: freestyle
295 node: centos7-builder-2c-1g
298 - lf-infra-properties:
299 build-days-to-keep: 7
302 - lf-infra-parameters:
303 project: releng/builder
306 lftools-version: '{lftools-version}'
309 - lf-infra-gerrit-scm:
310 git-url: '$GIT_URL/releng/builder'
312 refspec: 'refs/heads/master'
313 jenkins-ssh-credential: opendaylight-jenkins-ssh
314 submodule-recursive: true
315 submodule-timeout: 10
316 choosing-strategy: default
321 server-name: '{gerrit-server-name}'
323 - change-merged-event
324 - comment-added-contains-event:
325 comment-contains-value: remerge$
327 - project-compare-type: ANT
328 project-pattern: '{project}'
330 - branch-compare-type: ANT
331 branch-pattern: '**/{branch}'
339 jenkins-ssh-credential: opendaylight-jenkins-ssh
343 - autorelease-update-project-views
344 - autorelease-update-validate-projects
345 - lf-infra-push-gerrit-patch:
347 gerrit-user: 'jenkins-$SILO'
348 gerrit-host: 'git.opendaylight.org'
349 gerrit-topic: 'autorelease-update-validate-jobs-{stream}'
350 gerrit-commit-message: |
351 'Update validate autorelease projects for {stream}'
352 reviewers-email: 'jenkins-releng@opendaylight.org'
358 name: autorelease-version-bump-{stream}
360 #####################
361 # Default variables #
362 #####################
364 mvn-global-settings: global-settings
365 mvn-settings: autorelease-settings
368 #####################
369 # Job configuration #
370 #####################
372 project-type: freestyle
376 - opendaylight-infra-properties:
377 build-days-to-keep: 7
380 - lf-infra-parameters:
381 project: releng/autorelease
384 refspec: 'refs/heads/{branch}'
385 lftools-version: '{lftools-version}'
390 Release that is being version bumped.
391 Eg. Lithium, Beryllium, Boron, Carbon, Carbon-SR1, Carbon-SR2...
396 If BRANCH_CUT is enabled, perform version bump for branch cutting
397 workflow, else perform version bump for simultaneous release
403 If DRY_RUN is enabled modifications are not published to Gerrit
404 and artifacts are not pushed to Nexus. Instead the build will be
405 performed using the goals "clean install".
407 maven-version: '{mvn-version}'
410 - lf-infra-gerrit-scm:
411 git-url: '$GIT_URL/$GERRIT_PROJECT'
413 refspec: 'refs/heads/{branch}'
414 jenkins-ssh-credential: opendaylight-jenkins-ssh
415 submodule-recursive: true
416 submodule-timeout: 10
417 choosing-strategy: default
422 jenkins-ssh-credential: opendaylight-jenkins-ssh
426 # force jenkins install of maven version before any shell scripts use it
428 mvn-version: '{mvn-version}'
429 - lf-provide-maven-settings:
430 global-settings-file: '{mvn-global-settings}'
431 settings-file: '{mvn-settings}'
432 - shell: !include-raw-escape:
439 name: 'autorelease-generate-release-notes-{stream}'
441 ######################
442 # Default parameters #
443 ######################
445 gerrit_merge_triggers:
446 - comment-added-contains-event:
447 comment-contains-value: generate-release-notes .+$
449 #####################
450 # Job Configuration #
451 #####################
453 project-type: freestyle
454 node: centos7-builder-2c-8g
457 - lf-infra-properties:
458 build-days-to-keep: 7
461 - lf-infra-parameters:
465 lftools-version: '{lftools-version}'
469 Release to generate release notes for.
470 Eg. Oxygen-SR1, Fluorine-SR2...
472 - lf-infra-gerrit-scm:
473 git-url: '$GIT_URL/$GERRIT_PROJECT'
474 branch: '$GERRIT_BRANCH'
475 refspec: '$GERRIT_REFSPEC'
476 jenkins-ssh-credential: opendaylight-jenkins-ssh
477 submodule-recursive: true
478 submodule-timeout: 10
479 choosing-strategy: default
484 jenkins-ssh-credential: opendaylight-jenkins-ssh
488 server-name: '{gerrit-server-name}'
489 trigger-on: '{obj:gerrit_merge_triggers}'
491 - project-compare-type: ANT
492 project-pattern: '{project}'
494 - branch-compare-type: ANT
495 branch-pattern: '**/{branch}'
499 - autorelease-generate-release-notes
505 name: '{project-name}-validate-autorelease-{stream}'
507 #####################
508 # Default variables #
509 #####################
511 java-version: openjdk8
512 mvn-global-settings: global-settings
513 mvn-settings: autorelease-settings
516 #####################
517 # Job Configuration #
518 #####################
521 project-type: freestyle
522 # Note: This NEEDS to be hardcoded as projects should NOT be allowed to
523 # override the build node.
524 node: centos7-builder-2c-8g
526 jdk: '{java-version}'
529 - lf-infra-properties:
530 build-days-to-keep: 7
533 - lf-infra-parameters:
537 lftools-version: '{lftools-version}'
538 - autorelease-release-tag:
539 release-tag: validate
542 default: '{git-url}/releng/autorelease'
543 description: "Autorelease clone URL"
548 credentials-id: 'opendaylight-jenkins-ssh'
558 - opendaylight-infra-wrappers:
559 build-timeout: '{build-timeout}'
562 - gerrit-trigger-patch-submitted:
563 gerrit-server-name: '{gerrit-server-name}'
571 - autorelease-checkout-gerrit-patch
572 - autorelease-compare-projects
573 - lf-jacoco-nojava-workaround
574 - shell: "./scripts/list-project-dependencies.sh"
575 - autorelease-determine-merge-order
576 - autorelease-generate-release-patches
577 # In a perfect world projects should be releasing separately and we consume them
578 # via a project that pulls the release bits from each project from Nexus.
579 # Keep the patches compatible with that ideal, but apply an edit
580 # to enable building in a single maven reactor afterwards.
581 - autorelease-fix-relative-paths
583 maven-version: '{mvn-version}'
584 pom: validate-pom.xml
586 clean install dependency:tree
589 {opendaylight-infra-mvn-opts}
592 settings: '{mvn-settings}'
594 global-settings: '{mvn-global-settings}'
595 global-settings-type: cfp
597 maven-version: '{mvn-version}'
602 {opendaylight-infra-mvn-opts}
604 - '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
605 settings: '{mvn-settings}'
607 global-settings: '{mvn-global-settings}'
608 global-settings-type: cfp
614 - email-notification:
615 email-recipients: '{email-recipients}'
616 email-prefix: '[autorelease] [{project-name}]'