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}'
468 description: Release to generate release notes for.
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}]'