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 -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
70 mvn-settings: autorelease-settings
74 ossrh-profile-id: 6386ebbbf3a563
81 project-type: freestyle
83 disabled: '{disable-job}'
86 - lf-infra-properties:
87 build-days-to-keep: 30
90 - lf-infra-parameters:
94 lftools-version: '{lftools-version}'
95 - lf-infra-maven-parameters:
96 mvn-opts: '{mvn-opts}'
97 mvn-params: '{mvn-params}'
98 mvn-version: '{mvn-version}'
99 - distribution-karaf-version:
100 karaf-version: '{karaf-version}'
101 - autorelease-release-tag:
102 release-tag: '{stream}'
104 name: ARCHIVE_ARTIFACTS
105 default: '{archive-artifacts}'
106 description: Artifacts to archive to the logs server.
108 name: STAGING_PROFILE_ID
109 default: '{staging-profile-id}'
110 description: Nexus staging profile ID.
114 credentials-id: 'opendaylight-jenkins-ssh'
116 refspec: '$GERRIT_REFSPEC'
119 choosing-strategy: default
126 - opendaylight-infra-wrappers:
134 # force jenkins install of maven version before any shell scripts use it
136 mvn-version: '{mvn-version}'
137 - wipe-local-maven-repo
138 - lf-jacoco-nojava-workaround
139 - shell: "./scripts/list-project-dependencies.sh"
140 - autorelease-determine-merge-order
141 - lf-provide-maven-settings:
142 global-settings-file: '{mvn-global-settings}'
143 settings-file: '{mvn-settings}'
144 - autorelease-generate-release-patches
145 - autorelease-generate-artifact-versions
146 - lf-update-java-alternatives:
147 java-version: '{java-version}'
148 - autorelease-distribute-taglist
149 - distribute-build-url:
150 path: 'integration/distribution/$KARAF_ARTIFACT/src/main/assembly'
151 # In a perfect world projects should be releasing separately and we consume them
152 # via a project that pulls the release bits from each project from Nexus.
153 # Keep the patches compatible with that ideal, but apply an edit
154 # to enable building in a single maven reactor afterwards.
155 - autorelease-fix-relative-paths
157 mvn-goals: '{mvn-goals}'
159 sign-artifacts: '{sign-artifacts}'
160 sign-dir: '$WORKSPACE/m2repo'
163 mvn-global-settings: '{mvn-global-settings}'
164 mvn-settings: '{mvn-settings}'
165 mvn-staging-id: '{mvn-staging-id}'
167 mvn-central: '{mvn-central}'
168 mvn-global-settings: '{mvn-global-settings}'
169 mvn-settings: '{mvn-settings}'
170 ossrh-profile-id: '{ossrh-profile-id}'
171 - autorelease-get-integration-test-variables
172 - autorelease-maven-sources:
173 opendaylight-infra-mvn-opts: '{opendaylight-infra-mvn-opts}'
174 maven-version: '{mvn-version}'
175 settings: '{mvn-settings}'
176 global-settings: '{mvn-global-settings}'
182 - opendaylight-infra-notify-status
183 - trigger-parameterized-builds:
184 - project: 'integration-distribution-test-{integration-test}'
185 condition: UNSTABLE_OR_BETTER
186 property-file: variables.jenkins-trigger
187 fail-on-missing: true
188 - project: 'integration-distribution-test-{integration-test}'
190 trigger-with-no-params: true
191 - project: 'packaging-build-rpm-{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 - project: 'packaging-build-deb-{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 # Critical component of the OpenDaylight community
208 - shell: echo '#topic cookies'
209 mark-unstable-if-failed: false
213 name: 'autorelease-update-submodules-{stream}'
215 ######################
216 # Default parameters #
217 ######################
222 #####################
223 # Job configuration #
224 #####################
226 project-type: freestyle
227 node: centos7-builder-2c-2g
228 disabled: '{disable-job}'
231 - lf-infra-properties:
232 build-days-to-keep: 7
235 - lf-infra-parameters:
236 project: releng/autorelease
239 refspec: 'refs/heads/{branch}'
240 lftools-version: '{lftools-version}'
243 - lf-infra-gerrit-scm:
244 git-url: '$GIT_URL/$GERRIT_PROJECT'
246 refspec: 'refs/heads/{branch}'
247 jenkins-ssh-credential: opendaylight-jenkins-ssh
248 submodule-disable: false
249 submodule-recursive: true
250 submodule-timeout: 10
251 choosing-strategy: default
256 jenkins-ssh-credential: opendaylight-jenkins-ssh
259 - timed: '{obj:cron}'
263 # Fetch latest head of branch
265 git checkout $GERRIT_BRANCH
266 git submodule update --remote
268 - lf-infra-push-gerrit-patch:
270 gerrit-user: 'jenkins-$SILO'
271 gerrit-host: 'git.opendaylight.org'
272 gerrit-topic: 'autorelease-update-submodules'
273 gerrit-commit-message: 'Update submodules to latest HEAD of branch'
280 name: autorelease-update-validate-jobs-{stream}
282 ######################
283 # Default parameters #
284 ######################
289 #####################
290 # Job configuration #
291 #####################
293 project-type: freestyle
294 node: centos7-builder-2c-1g
295 disabled: '{disable-job}'
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-disable: false
315 submodule-recursive: true
316 submodule-timeout: 10
317 choosing-strategy: default
322 server-name: '{gerrit-server-name}'
324 - change-merged-event
325 - comment-added-contains-event:
326 comment-contains-value: remerge$
328 - project-compare-type: ANT
329 project-pattern: '{project}'
331 - branch-compare-type: ANT
332 branch-pattern: '**/{branch}'
340 jenkins-ssh-credential: opendaylight-jenkins-ssh
344 - autorelease-update-project-views
345 - autorelease-update-validate-projects
346 - lf-infra-push-gerrit-patch:
348 gerrit-user: 'jenkins-$SILO'
349 gerrit-host: 'git.opendaylight.org'
350 gerrit-topic: 'autorelease-update-validate-jobs-{stream}'
351 gerrit-commit-message: |
352 'Update validate autorelease projects for {stream}'
353 reviewers-email: 'jenkins-releng@opendaylight.org'
359 name: autorelease-version-bump-{stream}
361 #####################
362 # Default variables #
363 #####################
365 mvn-global-settings: global-settings
366 mvn-settings: autorelease-settings
370 #####################
371 # Job configuration #
372 #####################
374 project-type: freestyle
376 disabled: '{disable-job}'
379 - opendaylight-infra-properties:
380 build-days-to-keep: 7
383 - lf-infra-parameters:
384 project: releng/autorelease
387 refspec: 'refs/heads/{branch}'
388 lftools-version: '{lftools-version}'
393 Release that is being version bumped.
394 Eg. Lithium, Beryllium, Boron, Carbon, Carbon-SR1, Carbon-SR2...
399 If BRANCH_CUT is enabled, perform version bump for branch cutting
400 workflow, else perform version bump for simultaneous release
406 If DRY_RUN is enabled modifications are not published to Gerrit
407 and artifacts are not pushed to Nexus. Instead the build will be
408 performed using the goals "clean install".
410 maven-version: '{mvn-version}'
413 - lf-infra-gerrit-scm:
414 git-url: '$GIT_URL/$GERRIT_PROJECT'
416 refspec: 'refs/heads/{branch}'
417 jenkins-ssh-credential: opendaylight-jenkins-ssh
418 submodule-disable: false
419 submodule-recursive: true
420 submodule-timeout: 10
421 choosing-strategy: default
426 jenkins-ssh-credential: opendaylight-jenkins-ssh
430 # force jenkins install of maven version before any shell scripts use it
432 mvn-version: '{mvn-version}'
433 - lf-provide-maven-settings:
434 global-settings-file: '{mvn-global-settings}'
435 settings-file: '{mvn-settings}'
436 - shell: !include-raw-escape:
443 name: 'autorelease-generate-release-notes-{stream}'
445 ######################
446 # Default parameters #
447 ######################
450 gerrit_merge_triggers:
451 - comment-added-contains-event:
452 comment-contains-value: generate-release-notes .+$
454 #####################
455 # Job Configuration #
456 #####################
458 project-type: freestyle
459 node: centos7-builder-2c-8g
460 disabled: '{disable-job}'
463 - lf-infra-properties:
464 build-days-to-keep: 7
467 - lf-infra-parameters:
471 lftools-version: '{lftools-version}'
475 Release to generate release notes for.
476 Eg. Neon-SR1, Fluorine-SR2...
478 - lf-infra-gerrit-scm:
479 git-url: '$GIT_URL/$GERRIT_PROJECT'
480 branch: '$GERRIT_BRANCH'
481 refspec: '$GERRIT_REFSPEC'
482 jenkins-ssh-credential: opendaylight-jenkins-ssh
483 submodule-disable: false
484 submodule-recursive: true
485 submodule-timeout: 10
486 choosing-strategy: default
491 jenkins-ssh-credential: opendaylight-jenkins-ssh
495 server-name: '{gerrit-server-name}'
496 trigger-on: '{obj:gerrit_merge_triggers}'
498 - project-compare-type: ANT
499 project-pattern: '{project}'
501 - branch-compare-type: ANT
502 branch-pattern: '**/{branch}'
506 - autorelease-generate-release-notes
512 name: '{project-name}-validate-autorelease-{stream}'
514 #####################
515 # Default variables #
516 #####################
518 java-version: openjdk8
519 mvn-global-settings: global-settings
520 mvn-settings: autorelease-settings
524 #####################
525 # Job Configuration #
526 #####################
528 project-type: freestyle
529 # Note: This NEEDS to be hardcoded as projects should NOT be allowed to
530 # override the build node.
531 node: centos7-builder-2c-8g
533 jdk: '{java-version}'
534 disabled: '{disable-job}'
537 - lf-infra-properties:
538 build-days-to-keep: 7
541 - lf-infra-parameters:
545 lftools-version: '{lftools-version}'
546 - autorelease-release-tag:
547 release-tag: validate
550 default: '{git-url}/releng/autorelease'
551 description: "Autorelease clone URL"
556 credentials-id: 'opendaylight-jenkins-ssh'
566 - opendaylight-infra-wrappers:
567 build-timeout: '{build-timeout}'
570 - gerrit-trigger-patch-submitted:
571 gerrit-server-name: '{gerrit-server-name}'
579 - autorelease-checkout-gerrit-patch
580 - autorelease-compare-projects
581 - lf-jacoco-nojava-workaround
582 - shell: "./scripts/list-project-dependencies.sh"
583 - autorelease-determine-merge-order
584 - autorelease-generate-release-patches
585 # In a perfect world projects should be releasing separately and we consume them
586 # via a project that pulls the release bits from each project from Nexus.
587 # Keep the patches compatible with that ideal, but apply an edit
588 # to enable building in a single maven reactor afterwards.
589 - autorelease-fix-relative-paths
591 maven-version: '{mvn-version}'
592 pom: validate-pom.xml
594 clean install dependency:tree
597 {opendaylight-infra-mvn-opts}
600 settings: '{mvn-settings}'
602 global-settings: '{mvn-global-settings}'
603 global-settings-type: cfp
605 maven-version: '{mvn-version}'
610 {opendaylight-infra-mvn-opts}
612 - '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
613 settings: '{mvn-settings}'
615 global-settings: '{mvn-global-settings}'
616 global-settings-type: cfp
622 - email-notification:
623 email-recipients: '{email-recipients}'
624 email-prefix: '[autorelease] [{project-name}]'