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-disable: false
41 submodule-recursive: true
43 choosing-strategy: default
48 jenkins-ssh-credential: opendaylight-jenkins-ssh
51 - shell: !include-raw-escape: branch-cut.sh
57 name: 'autorelease-release-{stream}-{mvn-version}-{java-version}'
59 ######################
60 # Default parameters #
61 ######################
63 build-node: '{build-node}'
65 java-version: '{java-version}'
66 mvn-global-settings: global-settings
67 mvn-goals: clean deploy
68 mvn-opts: '-Xmx8g -Dmaven.compile.fork=true'
70 mvn-settings: autorelease-settings
79 project-type: freestyle
81 disabled: '{disable-job}'
84 - lf-infra-properties:
85 build-days-to-keep: 30
88 - lf-infra-parameters:
92 lftools-version: '{lftools-version}'
93 - lf-infra-maven-parameters:
94 mvn-opts: '{mvn-opts}'
95 mvn-params: '{mvn-params}'
96 mvn-version: '{mvn-version}'
97 - distribution-karaf-version:
98 karaf-version: '{karaf-version}'
99 - autorelease-release-tag:
100 release-tag: '{stream}'
102 name: ARCHIVE_ARTIFACTS
103 default: '{archive-artifacts}'
104 description: Artifacts to archive to the logs server.
106 name: STAGING_PROFILE_ID
107 default: '{staging-profile-id}'
108 description: Nexus staging profile ID.
112 credentials-id: 'opendaylight-jenkins-ssh'
114 refspec: '$GERRIT_REFSPEC'
117 choosing-strategy: default
124 - opendaylight-infra-wrappers:
132 # force jenkins install of maven version before any shell scripts use it
134 mvn-version: '{mvn-version}'
135 - wipe-local-maven-repo
136 - lf-jacoco-nojava-workaround
137 - shell: "./scripts/list-project-dependencies.sh"
138 - autorelease-determine-merge-order
139 - lf-provide-maven-settings:
140 global-settings-file: '{mvn-global-settings}'
141 settings-file: '{mvn-settings}'
142 - autorelease-generate-release-patches
143 - autorelease-generate-artifact-versions
144 - lf-update-java-alternatives:
145 java-version: '{java-version}'
146 - autorelease-distribute-taglist
147 - distribute-build-url:
148 path: 'integration/distribution/$KARAF_ARTIFACT/src/main/assembly'
149 # In a perfect world projects should be releasing separately and we consume them
150 # via a project that pulls the release bits from each project from Nexus.
151 # Keep the patches compatible with that ideal, but apply an edit
152 # to enable building in a single maven reactor afterwards.
153 - autorelease-fix-relative-paths
155 mvn-goals: '{mvn-goals}'
157 sign-artifacts: '{sign-artifacts}'
158 sign-dir: '$WORKSPACE/m2repo'
161 mvn-global-settings: '{mvn-global-settings}'
162 mvn-settings: '{mvn-settings}'
163 mvn-staging-id: '{mvn-staging-id}'
164 - autorelease-get-integration-test-variables
165 - autorelease-maven-sources:
166 opendaylight-infra-mvn-opts: '{opendaylight-infra-mvn-opts}'
167 maven-version: '{mvn-version}'
168 settings: '{mvn-settings}'
169 global-settings: '{mvn-global-settings}'
175 - opendaylight-infra-notify-status
176 - trigger-parameterized-builds:
177 - project: 'integration-distribution-test-{integration-test}'
178 condition: UNSTABLE_OR_BETTER
179 property-file: variables.jenkins-trigger
180 fail-on-missing: true
181 - project: 'integration-distribution-test-{integration-test}'
183 trigger-with-no-params: true
184 - project: 'packaging-build-rpm-{stream}'
185 condition: UNSTABLE_OR_BETTER
186 predefined-parameters: DOWNLOAD_URL=$BUNDLE_URL
187 property-file: variables.jenkins-trigger
188 fail-on-missing: true
189 - project: 'packaging-build-deb-{stream}'
190 condition: UNSTABLE_OR_BETTER
191 predefined-parameters: DOWNLOAD_URL=$BUNDLE_URL
192 property-file: variables.jenkins-trigger
193 fail-on-missing: true
194 # Critical component of the OpenDaylight community
201 - shell: echo '#topic cookies'
202 mark-unstable-if-failed: false
206 name: 'autorelease-update-submodules-{stream}'
208 ######################
209 # Default parameters #
210 ######################
215 #####################
216 # Job configuration #
217 #####################
219 project-type: freestyle
220 node: centos7-builder-2c-2g
221 disabled: '{disable-job}'
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-disable: false
242 submodule-recursive: true
243 submodule-timeout: 10
244 choosing-strategy: default
249 jenkins-ssh-credential: opendaylight-jenkins-ssh
252 - timed: '{obj:cron}'
256 # Fetch latest head of branch
258 git checkout $GERRIT_BRANCH
259 git submodule update --remote
261 - lf-infra-push-gerrit-patch:
263 gerrit-user: 'jenkins-$SILO'
264 gerrit-host: 'git.opendaylight.org'
265 gerrit-topic: 'autorelease-update-submodules'
266 gerrit-commit-message: 'Update submodules to latest HEAD of branch'
273 name: autorelease-update-validate-jobs-{stream}
275 ######################
276 # Default parameters #
277 ######################
282 #####################
283 # Job configuration #
284 #####################
286 project-type: freestyle
287 node: centos7-builder-2c-1g
288 disabled: '{disable-job}'
291 - lf-infra-properties:
292 build-days-to-keep: 7
295 - lf-infra-parameters:
296 project: releng/builder
299 lftools-version: '{lftools-version}'
302 - lf-infra-gerrit-scm:
303 git-url: '$GIT_URL/releng/builder'
305 refspec: 'refs/heads/master'
306 jenkins-ssh-credential: opendaylight-jenkins-ssh
307 submodule-disable: false
308 submodule-recursive: true
309 submodule-timeout: 10
310 choosing-strategy: default
315 server-name: '{gerrit-server-name}'
317 - change-merged-event
318 - comment-added-contains-event:
319 comment-contains-value: remerge$
321 - project-compare-type: ANT
322 project-pattern: '{project}'
324 - branch-compare-type: ANT
325 branch-pattern: '**/{branch}'
333 jenkins-ssh-credential: opendaylight-jenkins-ssh
337 - autorelease-update-project-views
338 - autorelease-update-validate-projects
339 - lf-infra-push-gerrit-patch:
341 gerrit-user: 'jenkins-$SILO'
342 gerrit-host: 'git.opendaylight.org'
343 gerrit-topic: 'autorelease-update-validate-jobs-{stream}'
344 gerrit-commit-message: |
345 'Update validate autorelease projects for {stream}'
346 reviewers-email: 'jenkins-releng@opendaylight.org'
352 name: autorelease-version-bump-{stream}
354 #####################
355 # Default variables #
356 #####################
358 mvn-global-settings: global-settings
359 mvn-settings: autorelease-settings
363 #####################
364 # Job configuration #
365 #####################
367 project-type: freestyle
369 disabled: '{disable-job}'
372 - opendaylight-infra-properties:
373 build-days-to-keep: 7
376 - lf-infra-parameters:
377 project: releng/autorelease
380 refspec: 'refs/heads/{branch}'
381 lftools-version: '{lftools-version}'
386 Release that is being version bumped.
387 Eg. Lithium, Beryllium, Boron, Carbon, Carbon-SR1, Carbon-SR2...
392 If BRANCH_CUT is enabled, perform version bump for branch cutting
393 workflow, else perform version bump for simultaneous release
399 If DRY_RUN is enabled modifications are not published to Gerrit
400 and artifacts are not pushed to Nexus. Instead the build will be
401 performed using the goals "clean install".
403 maven-version: '{mvn-version}'
406 - lf-infra-gerrit-scm:
407 git-url: '$GIT_URL/$GERRIT_PROJECT'
409 refspec: 'refs/heads/{branch}'
410 jenkins-ssh-credential: opendaylight-jenkins-ssh
411 submodule-disable: false
412 submodule-recursive: true
413 submodule-timeout: 10
414 choosing-strategy: default
419 jenkins-ssh-credential: opendaylight-jenkins-ssh
423 # force jenkins install of maven version before any shell scripts use it
425 mvn-version: '{mvn-version}'
426 - lf-provide-maven-settings:
427 global-settings-file: '{mvn-global-settings}'
428 settings-file: '{mvn-settings}'
429 - shell: !include-raw-escape:
436 name: 'autorelease-generate-release-notes-{stream}'
438 ######################
439 # Default parameters #
440 ######################
443 gerrit_merge_triggers:
444 - comment-added-contains-event:
445 comment-contains-value: generate-release-notes .+$
447 #####################
448 # Job Configuration #
449 #####################
451 project-type: freestyle
452 node: centos7-builder-2c-8g
453 disabled: '{disable-job}'
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. Neon-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-disable: false
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
517 #####################
518 # Job Configuration #
519 #####################
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}'
527 disabled: '{disable-job}'
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 -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}]'