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}-{mvn-version}-{java-version}'
58 ######################
59 # Default parameters #
60 ######################
62 build-node: '{build-node}'
64 java-version: '{java-version}'
65 mvn-global-settings: global-settings
66 mvn-goals: clean deploy
67 mvn-opts: '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
68 mvn-params: '-Pintegrationtests,repoBuild -Dcheckstyle.skip=true'
69 mvn-settings: autorelease-settings
73 ossrh-profile-id: 6386ebbbf3a563
80 project-type: freestyle
82 disabled: '{disable-job}'
85 - lf-infra-properties:
86 build-days-to-keep: 30
89 - lf-infra-parameters:
93 lftools-version: '{lftools-version}'
94 - lf-infra-maven-parameters:
95 mvn-opts: '{mvn-opts}'
96 mvn-params: '{mvn-params}'
97 mvn-version: '{mvn-version}'
98 - distribution-karaf-version:
99 karaf-version: '{karaf-version}'
100 - autorelease-release-tag:
101 release-tag: '{stream}'
103 name: ARCHIVE_ARTIFACTS
104 default: '{archive-artifacts}'
105 description: Artifacts to archive to the logs server.
107 name: STAGING_PROFILE_ID
108 default: '{staging-profile-id}'
109 description: Nexus staging profile ID.
113 credentials-id: 'opendaylight-jenkins-ssh'
115 refspec: '$GERRIT_REFSPEC'
118 choosing-strategy: default
125 - opendaylight-infra-wrappers:
133 # force jenkins install of maven version before any shell scripts use it
135 mvn-version: '{mvn-version}'
136 - wipe-local-maven-repo
137 - lf-jacoco-nojava-workaround
138 - shell: "./scripts/list-project-dependencies.sh"
139 - autorelease-determine-merge-order
140 - lf-provide-maven-settings:
141 global-settings-file: '{mvn-global-settings}'
142 settings-file: '{mvn-settings}'
143 - lf-infra-create-netrc:
144 server-id: '{mvn-staging-id}'
145 - autorelease-generate-release-patches
146 - autorelease-generate-artifact-versions
147 - lf-update-java-alternatives:
148 java-version: '{java-version}'
149 - autorelease-distribute-taglist
150 - distribute-build-url:
151 path: 'integration/distribution/$KARAF_ARTIFACT/src/main/assembly'
152 # In a perfect world projects should be releasing separately and we consume them
153 # via a project that pulls the release bits from each project from Nexus.
154 # Keep the patches compatible with that ideal, but apply an edit
155 # to enable building in a single maven reactor afterwards.
156 - autorelease-fix-relative-paths
158 mvn-goals: '{mvn-goals}'
160 sign-artifacts: '{sign-artifacts}'
161 sign-dir: '$WORKSPACE/m2repo'
164 mvn-central: '{mvn-central}'
165 ossrh-profile-id: '{ossrh-profile-id}'
166 - autorelease-get-integration-test-variables
167 - autorelease-maven-sources:
168 opendaylight-infra-mvn-opts: '{opendaylight-infra-mvn-opts}'
169 maven-version: '{mvn-version}'
170 settings: '{mvn-settings}'
171 global-settings: '{mvn-global-settings}'
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 ######################
217 #####################
218 # Job configuration #
219 #####################
221 project-type: freestyle
222 node: centos7-builder-2c-2g
223 disabled: '{disable-job}'
226 - lf-infra-properties:
227 build-days-to-keep: 7
230 - lf-infra-parameters:
231 project: releng/autorelease
234 refspec: 'refs/heads/{branch}'
235 lftools-version: '{lftools-version}'
238 - lf-infra-gerrit-scm:
239 git-url: '$GIT_URL/$GERRIT_PROJECT'
241 refspec: 'refs/heads/{branch}'
242 jenkins-ssh-credential: opendaylight-jenkins-ssh
243 submodule-recursive: true
244 submodule-timeout: 10
245 choosing-strategy: default
250 jenkins-ssh-credential: opendaylight-jenkins-ssh
253 - timed: '{obj:cron}'
257 # Fetch latest head of branch
259 git checkout $GERRIT_BRANCH
260 git submodule update --remote
262 - lf-infra-push-gerrit-patch:
264 gerrit-user: 'jenkins-$SILO'
265 gerrit-host: 'git.opendaylight.org'
266 gerrit-topic: 'autorelease-update-submodules'
267 gerrit-commit-message: 'Update submodules to latest HEAD of branch'
274 name: autorelease-update-validate-jobs-{stream}
276 ######################
277 # Default parameters #
278 ######################
283 #####################
284 # Job configuration #
285 #####################
287 project-type: freestyle
288 node: centos7-builder-2c-1g
289 disabled: '{disable-job}'
292 - lf-infra-properties:
293 build-days-to-keep: 7
296 - lf-infra-parameters:
297 project: releng/builder
300 lftools-version: '{lftools-version}'
303 - lf-infra-gerrit-scm:
304 git-url: '$GIT_URL/releng/builder'
306 refspec: 'refs/heads/master'
307 jenkins-ssh-credential: opendaylight-jenkins-ssh
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-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
424 mvn-version: '{mvn-version}'
425 - lf-provide-maven-settings:
426 global-settings-file: '{mvn-global-settings}'
427 settings-file: '{mvn-settings}'
428 - shell: !include-raw-escape:
435 name: 'autorelease-generate-release-notes-{stream}'
437 ######################
438 # Default parameters #
439 ######################
442 gerrit_merge_triggers:
443 - comment-added-contains-event:
444 comment-contains-value: generate-release-notes .+$
446 #####################
447 # Job Configuration #
448 #####################
450 project-type: freestyle
451 node: centos7-builder-2c-8g
452 disabled: '{disable-job}'
455 - lf-infra-properties:
456 build-days-to-keep: 7
459 - lf-infra-parameters:
463 lftools-version: '{lftools-version}'
467 Release to generate release notes for.
468 Eg. Oxygen-SR1, Fluorine-SR2...
470 - lf-infra-gerrit-scm:
471 git-url: '$GIT_URL/$GERRIT_PROJECT'
472 branch: '$GERRIT_BRANCH'
473 refspec: '$GERRIT_REFSPEC'
474 jenkins-ssh-credential: opendaylight-jenkins-ssh
475 submodule-recursive: true
476 submodule-timeout: 10
477 choosing-strategy: default
482 jenkins-ssh-credential: opendaylight-jenkins-ssh
486 server-name: '{gerrit-server-name}'
487 trigger-on: '{obj:gerrit_merge_triggers}'
489 - project-compare-type: ANT
490 project-pattern: '{project}'
492 - branch-compare-type: ANT
493 branch-pattern: '**/{branch}'
497 - autorelease-generate-release-notes
503 name: '{project-name}-validate-autorelease-{stream}'
505 #####################
506 # Default variables #
507 #####################
509 java-version: openjdk8
510 mvn-global-settings: global-settings
511 mvn-settings: autorelease-settings
515 #####################
516 # Job Configuration #
517 #####################
519 project-type: freestyle
520 # Note: This NEEDS to be hardcoded as projects should NOT be allowed to
521 # override the build node.
522 node: centos7-builder-2c-8g
524 jdk: '{java-version}'
525 disabled: '{disable-job}'
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}]'