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
41 choosing-strategy: default
46 jenkins-ssh-credential: opendaylight-jenkins-ssh
49 - shell: !include-raw-escape: branch-cut.sh
55 name: 'autorelease-release-{stream}'
57 ######################
58 # Default parameters #
59 ######################
61 build-node: '{build-node}'
63 java-version: openjdk8
71 project-type: freestyle
76 - lf-infra-properties:
77 build-days-to-keep: 30
81 maven-version: 'mvn35'
82 - lf-infra-parameters:
86 lftools-version: '{lftools-version}'
87 - distribution-karaf-version:
88 karaf-version: '{karaf-version}'
89 - autorelease-release-tag:
90 release-tag: '{stream}'
93 default: '{extra-mvn-opts}'
95 Additional optional Maven Options to pass to the Maven Goals
99 -Dskip.karaf.featureTest=true # To disable karaf SingleFeatureTests
100 --fail-never # NEVER fail the build, regardless of project result
101 --fail-at-end # Only fail the build afterwards; allow all non-impacted builds to continue
103 name: ARCHIVE_ARTIFACTS
104 default: '{archive-artifacts}'
105 description: Artifacts to archive to the logs server.
109 credentials-id: 'opendaylight-jenkins-ssh'
111 refspec: '$GERRIT_REFSPEC'
114 choosing-strategy: default
121 - opendaylight-infra-wrappers:
128 # force jenkins install of maven version before any shell scripts use it
130 mvn-version: '{mvn-version}'
131 - wipe-local-maven-repo
132 - jacoco-nojava-workaround
133 - shell: "./scripts/list-project-dependencies.sh"
134 - autorelease-determine-merge-order
136 autorelease-settings: 'autorelease-settings'
137 global-settings: 'odl-global-settings'
138 - autorelease-generate-release-patches
139 - autorelease-generate-artifact-versions
140 - autorelease-distribute-taglist
141 - distribute-build-url:
142 path: 'integration/distribution/$KARAF_ARTIFACT/src/main/assembly'
143 # In a perfect world projects should be releasing separately and we consume them
144 # via a project that pulls the release bits from each project from Nexus.
145 # Keep the patches compatible with that ideal, but apply an edit
146 # to enable building in a single maven reactor afterwards.
147 - autorelease-fix-relative-paths
149 maven-version: 'mvn35'
154 -Pintegrationtests,repoBuild
155 -Dcheckstyle.skip=true
156 -DaltDeploymentRepository=staging::default::file:hide/from/pom/files/stage
157 {opendaylight-infra-mvn-opts}
159 - '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
160 settings: 'autorelease-settings'
162 global-settings: 'global-settings'
163 global-settings-type: cfp
164 - autorelease-maven-deploy
165 - autorelease-get-integration-test-variables
166 - autorelease-maven-sources:
167 opendaylight-infra-mvn-opts: '{opendaylight-infra-mvn-opts}'
168 maven-version: 'mvn35'
169 settings: 'autorelease-settings'
170 global-settings: 'global-settings'
171 - autorelease-maven-sources-post-process
177 - opendaylight-infra-notify-status
178 - trigger-parameterized-builds:
179 - project: 'integration-distribution-test-{integration-test}'
180 condition: UNSTABLE_OR_BETTER
181 property-file: variables.jenkins-trigger
182 fail-on-missing: true
183 - project: 'integration-distribution-test-{integration-test}'
185 trigger-with-no-params: true
186 - project: 'packaging-build-rpm-{stream}'
187 condition: UNSTABLE_OR_BETTER
188 predefined-parameters: DOWNLOAD_URL=$BUNDLE_URL
189 property-file: variables.jenkins-trigger
190 fail-on-missing: true
191 - project: 'packaging-build-deb-{stream}'
192 condition: UNSTABLE_OR_BETTER
193 predefined-parameters: DOWNLOAD_URL=$BUNDLE_URL
194 property-file: variables.jenkins-trigger
195 fail-on-missing: true
196 # Critical component of the OpenDaylight community
203 - shell: echo '#topic cookies'
204 mark-unstable-if-failed: false
208 name: 'autorelease-update-submodules-{stream}'
210 ######################
211 # Default parameters #
212 ######################
216 #####################
217 # Job configuration #
218 #####################
220 project-type: freestyle
221 node: centos7-builder-2c-2g
224 - lf-infra-properties:
225 build-days-to-keep: 7
228 - lf-infra-parameters:
229 project: releng/autorelease
232 refspec: 'refs/heads/{branch}'
233 lftools-version: '{lftools-version}'
236 - lf-infra-gerrit-scm:
237 git-url: '$GIT_URL/$GERRIT_PROJECT'
239 refspec: 'refs/heads/{branch}'
240 jenkins-ssh-credential: opendaylight-jenkins-ssh
241 submodule-recursive: true
242 choosing-strategy: default
247 jenkins-ssh-credential: opendaylight-jenkins-ssh
250 - timed: '{obj:cron}'
253 # Fetch latest head of branch
255 git checkout $GERRIT_BRANCH
256 git submodule update --remote
258 - lf-infra-push-gerrit-patch:
260 gerrit-user: 'jenkins-$SILO'
261 gerrit-host: 'git.opendaylight.org'
262 gerrit-topic: 'autorelease-update-submodules'
263 gerrit-commit-message: 'Update submodules to latest HEAD of branch'
270 name: autorelease-update-validate-jobs-{stream}
272 ######################
273 # Default parameters #
274 ######################
278 #####################
279 # Job configuration #
280 #####################
282 project-type: freestyle
283 node: centos7-builder-2c-1g
286 - lf-infra-properties:
287 build-days-to-keep: 7
290 - lf-infra-parameters:
291 project: releng/builder
294 lftools-version: '{lftools-version}'
297 - lf-infra-gerrit-scm:
298 git-url: '$GIT_URL/releng/builder'
300 refspec: 'refs/heads/master'
301 jenkins-ssh-credential: opendaylight-jenkins-ssh
302 submodule-recursive: true
303 choosing-strategy: default
308 server-name: '{gerrit-server-name}'
310 - change-merged-event
311 - comment-added-contains-event:
312 comment-contains-value: remerge$
314 - project-compare-type: ANT
315 project-pattern: '{project}'
317 - branch-compare-type: ANT
318 branch-pattern: '**/{branch}'
326 jenkins-ssh-credential: opendaylight-jenkins-ssh
329 - autorelease-update-project-views
330 - autorelease-update-validate-projects
331 - lf-infra-push-gerrit-patch:
333 gerrit-user: 'jenkins-$SILO'
334 gerrit-host: 'git.opendaylight.org'
335 gerrit-topic: 'autorelease-update-validate-jobs-{stream}'
336 gerrit-commit-message: |
337 'Update validate autorelease projects for {stream}'
338 reviewers-email: 'jenkins-releng@opendaylight.org'
344 name: autorelease-version-bump-{stream}
345 project-type: freestyle
349 - opendaylight-infra-properties:
350 build-days-to-keep: 7
353 - lf-infra-parameters:
354 project: releng/autorelease
357 refspec: 'refs/heads/{branch}'
358 lftools-version: '{lftools-version}'
363 Release that is being version bumped.
364 Eg. Lithium, Beryllium, Boron, Carbon, Carbon-SR1, Carbon-SR2...
369 If BRANCH_CUT is enabled, perform version bump for branch cutting
370 workflow, else perform version bump for simultaneous release
376 If DRY_RUN is enabled modifications are not published to Gerrit
377 and artifacts are not pushed to Nexus. Instead the build will be
378 performed using the goals "clean install".
383 - lf-infra-gerrit-scm:
384 git-url: '$GIT_URL/$GERRIT_PROJECT'
386 refspec: 'refs/heads/{branch}'
387 jenkins-ssh-credential: opendaylight-jenkins-ssh
388 submodule-recursive: true
389 choosing-strategy: default
394 jenkins-ssh-credential: opendaylight-jenkins-ssh
397 # force jenkins install of maven version before any shell scripts use it
401 settings: autorelease-settings
403 global-settings: global-settings
404 global-settings-type: cfp
406 - shell: !include-raw-escape:
407 - ../global-jjb/shell/lftools-install.sh
414 name: 'autorelease-generate-release-notes-{stream}'
416 ######################
417 # Default parameters #
418 ######################
420 gerrit_merge_triggers:
421 - comment-added-contains-event:
422 comment-contains-value: generate-release-notes .+$
424 #####################
425 # Job Configuration #
426 #####################
428 project-type: freestyle
429 node: centos7-builder-2c-8g
432 - lf-infra-properties:
433 build-days-to-keep: 7
436 - lf-infra-parameters:
440 lftools-version: '{lftools-version}'
443 description: Release to generate release notes for.
446 - lf-infra-gerrit-scm:
447 git-url: '$GIT_URL/$GERRIT_PROJECT'
448 branch: '$GERRIT_BRANCH'
449 refspec: '$GERRIT_REFSPEC'
450 jenkins-ssh-credential: opendaylight-jenkins-ssh
451 submodule-recursive: true
452 choosing-strategy: default
457 jenkins-ssh-credential: opendaylight-jenkins-ssh
461 server-name: '{gerrit-server-name}'
462 trigger-on: '{obj:gerrit_merge_triggers}'
464 - project-compare-type: ANT
465 project-pattern: '{project}'
467 - branch-compare-type: ANT
468 branch-pattern: '**/{branch}'
471 - autorelease-generate-release-notes
477 name: '{project-name}-validate-autorelease-{stream}'
483 java-version: openjdk8
485 #####################
486 # Job Configuration #
487 #####################
490 project-type: freestyle
491 # Note: This NEEDS to be hardcoded as projects should NOT be allowed to
492 # override the build node.
493 node: centos7-builder-2c-8g
495 jdk: '{java-version}'
498 - lf-infra-properties:
499 build-days-to-keep: 7
502 - lf-infra-parameters:
506 lftools-version: '{lftools-version}'
507 - autorelease-release-tag:
508 release-tag: validate
511 default: '{git-url}/releng/autorelease'
512 description: "Autorelease clone URL"
517 credentials-id: 'opendaylight-jenkins-ssh'
527 - opendaylight-infra-wrappers:
528 build-timeout: '{build-timeout}'
531 - gerrit-trigger-patch-submitted:
532 gerrit-server-name: '{gerrit-server-name}'
540 - autorelease-checkout-gerrit-patch
541 - autorelease-compare-projects
542 - jacoco-nojava-workaround
543 - shell: "./scripts/list-project-dependencies.sh"
544 - autorelease-determine-merge-order
545 - autorelease-generate-release-patches
546 # In a perfect world projects should be releasing separately and we consume them
547 # via a project that pulls the release bits from each project from Nexus.
548 # Keep the patches compatible with that ideal, but apply an edit
549 # to enable building in a single maven reactor afterwards.
550 - autorelease-fix-relative-paths
553 pom: validate-pom.xml
555 clean install dependency:tree
558 {opendaylight-infra-mvn-opts}
561 settings: autorelease-settings
563 global-settings: global-settings
564 global-settings-type: cfp
571 {opendaylight-infra-mvn-opts}
573 - '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
574 settings: autorelease-settings
576 global-settings: global-settings
577 global-settings-type: cfp
583 - email-notification:
584 email-recipients: '{email-recipients}'
585 email-prefix: '[autorelease] [{project-name}]'