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: "Update validate-ar jobs for {stream}"
345 reviewers-email: "jenkins-releng@opendaylight.org"
351 name: autorelease-version-bump-{stream}-{mvn-version}-{java-version}
353 #####################
354 # Default variables #
355 #####################
357 mvn-global-settings: global-settings
358 mvn-settings: autorelease-settings
362 #####################
363 # Job configuration #
364 #####################
366 project-type: freestyle
368 disabled: "{disable-job}"
371 - opendaylight-infra-properties:
372 build-days-to-keep: 7
375 - lf-infra-parameters:
376 project: releng/autorelease
379 refspec: "refs/heads/{branch}"
380 lftools-version: "{lftools-version}"
385 Release that is being version bumped.
386 Eg. Lithium, Beryllium, Boron, Carbon, Carbon-SR1, Carbon-SR2...
391 If BRANCH_CUT is enabled, perform version bump for branch cutting
392 workflow, else perform version bump for simultaneous release
398 If DRY_RUN is enabled modifications are not published to Gerrit
399 and artifacts are not pushed to Nexus. Instead the build will be
400 performed using the goals "clean install".
402 maven-version: "{mvn-version}"
405 - lf-infra-gerrit-scm:
406 git-url: "$GIT_URL/$GERRIT_PROJECT"
408 refspec: "refs/heads/{branch}"
409 jenkins-ssh-credential: opendaylight-jenkins-ssh
410 submodule-disable: false
411 submodule-recursive: true
412 submodule-timeout: 10
413 choosing-strategy: default
418 jenkins-ssh-credential: opendaylight-jenkins-ssh
422 # force jenkins install of maven version before any shell scripts use it
423 - lf-update-java-alternatives:
424 java-version: "{java-version}"
426 mvn-version: "{mvn-version}"
427 - lf-provide-maven-settings:
428 global-settings-file: "{mvn-global-settings}"
429 settings-file: "{mvn-settings}"
430 - shell: !include-raw-escape:
437 name: "autorelease-generate-release-notes-{stream}"
439 ######################
440 # Default parameters #
441 ######################
444 gerrit_merge_triggers:
445 - comment-added-contains-event:
446 comment-contains-value: generate-release-notes .+$
448 #####################
449 # Job Configuration #
450 #####################
452 project-type: freestyle
453 node: centos7-builder-2c-8g
454 disabled: "{disable-job}"
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. Magnesium-SR2, Silicon-SR1 ...
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-disable: false
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
518 #####################
519 # Job Configuration #
520 #####################
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}"
528 disabled: "{disable-job}"
531 - lf-infra-properties:
532 build-days-to-keep: 7
535 - lf-infra-parameters:
539 lftools-version: "{lftools-version}"
540 - autorelease-release-tag:
541 release-tag: validate
544 default: "{git-url}/releng/autorelease"
545 description: "Autorelease clone URL"
550 credentials-id: "opendaylight-jenkins-ssh"
560 - opendaylight-infra-wrappers:
561 build-timeout: "{build-timeout}"
564 - gerrit-trigger-patch-submitted:
565 gerrit-server-name: "{gerrit-server-name}"
573 - lf-update-java-alternatives:
574 java-version: "{java-version}"
575 - autorelease-checkout-gerrit-patch
576 - lf-jacoco-nojava-workaround
577 - shell: "./scripts/list-project-dependencies.sh"
578 - autorelease-determine-merge-order
579 - autorelease-generate-release-patches
580 # In a perfect world projects should be releasing separately and we consume them
581 # via a project that pulls the release bits from each project from Nexus.
582 # Keep the patches compatible with that ideal, but apply an edit
583 # to enable building in a single maven reactor afterwards.
584 - autorelease-fix-relative-paths
586 maven-version: "{mvn-version}"
587 pom: validate-pom.xml
589 clean install dependency:tree
592 {opendaylight-infra-mvn-opts}
595 settings: "{mvn-settings}"
597 global-settings: "{mvn-global-settings}"
598 global-settings-type: cfp
600 maven-version: "{mvn-version}"
605 {opendaylight-infra-mvn-opts}
607 - "-Xmx8g -Dmaven.compile.fork=true"
608 settings: "{mvn-settings}"
610 global-settings: "{mvn-global-settings}"
611 global-settings-type: cfp
617 - email-notification:
618 email-recipients: "{email-recipients}"
619 email-prefix: "[autorelease] [{project-name}]"