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}'
58 ######################
59 # Default parameters #
60 ######################
62 build-node: '{build-node}'
64 java-version: openjdk8
72 project-type: freestyle
77 - lf-infra-properties:
78 build-days-to-keep: 30
82 maven-version: '{mvn-version}'
83 - lf-infra-parameters:
87 lftools-version: '{lftools-version}'
88 - distribution-karaf-version:
89 karaf-version: '{karaf-version}'
90 - autorelease-release-tag:
91 release-tag: '{stream}'
94 default: '{extra-mvn-opts}'
96 Additional optional Maven Options to pass to the Maven Goals
100 -Dskip.karaf.featureTest=true # To disable karaf SingleFeatureTests
101 --fail-never # NEVER fail the build, regardless of project result
102 --fail-at-end # Only fail the build afterwards; allow all non-impacted builds to continue
104 name: ARCHIVE_ARTIFACTS
105 default: '{archive-artifacts}'
106 description: Artifacts to archive to the logs server.
110 credentials-id: 'opendaylight-jenkins-ssh'
112 refspec: '$GERRIT_REFSPEC'
115 choosing-strategy: default
122 - opendaylight-infra-wrappers:
130 # force jenkins install of maven version before any shell scripts use it
132 mvn-version: '{mvn-version}'
133 - wipe-local-maven-repo
134 - lf-jacoco-nojava-workaround
135 - shell: "./scripts/list-project-dependencies.sh"
136 - autorelease-determine-merge-order
138 autorelease-settings: 'autorelease-settings'
139 global-settings: 'odl-global-settings'
140 - autorelease-generate-release-patches
141 - autorelease-generate-artifact-versions
142 - autorelease-distribute-taglist
143 - distribute-build-url:
144 path: 'integration/distribution/$KARAF_ARTIFACT/src/main/assembly'
145 # In a perfect world projects should be releasing separately and we consume them
146 # via a project that pulls the release bits from each project from Nexus.
147 # Keep the patches compatible with that ideal, but apply an edit
148 # to enable building in a single maven reactor afterwards.
149 - autorelease-fix-relative-paths
151 maven-version: '{mvn-version}'
156 -Pintegrationtests,repoBuild
157 -Dcheckstyle.skip=true
158 -DaltDeploymentRepository=staging::default::file:hide/from/pom/files/stage
159 {opendaylight-infra-mvn-opts}
161 - '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
162 settings: 'autorelease-settings'
164 global-settings: 'global-settings'
165 global-settings-type: cfp
166 - autorelease-maven-deploy
167 - autorelease-get-integration-test-variables
168 - autorelease-maven-sources:
169 opendaylight-infra-mvn-opts: '{opendaylight-infra-mvn-opts}'
170 maven-version: '{mvn-version}'
171 settings: 'autorelease-settings'
172 global-settings: 'global-settings'
178 - opendaylight-infra-notify-status
179 - trigger-parameterized-builds:
180 - project: 'integration-distribution-test-{integration-test}'
181 condition: UNSTABLE_OR_BETTER
182 property-file: variables.jenkins-trigger
183 fail-on-missing: true
184 - project: 'integration-distribution-test-{integration-test}'
186 trigger-with-no-params: true
187 - project: 'packaging-build-rpm-{stream}'
188 condition: UNSTABLE_OR_BETTER
189 predefined-parameters: DOWNLOAD_URL=$BUNDLE_URL
190 property-file: variables.jenkins-trigger
191 fail-on-missing: true
192 - project: 'packaging-build-deb-{stream}'
193 condition: UNSTABLE_OR_BETTER
194 predefined-parameters: DOWNLOAD_URL=$BUNDLE_URL
195 property-file: variables.jenkins-trigger
196 fail-on-missing: true
197 # Critical component of the OpenDaylight community
204 - shell: echo '#topic cookies'
205 mark-unstable-if-failed: false
209 name: 'autorelease-update-submodules-{stream}'
211 ######################
212 # Default parameters #
213 ######################
217 #####################
218 # Job configuration #
219 #####################
221 project-type: freestyle
222 node: centos7-builder-2c-2g
225 - lf-infra-properties:
226 build-days-to-keep: 7
229 - lf-infra-parameters:
230 project: releng/autorelease
233 refspec: 'refs/heads/{branch}'
234 lftools-version: '{lftools-version}'
237 - lf-infra-gerrit-scm:
238 git-url: '$GIT_URL/$GERRIT_PROJECT'
240 refspec: 'refs/heads/{branch}'
241 jenkins-ssh-credential: opendaylight-jenkins-ssh
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 ######################
281 #####################
282 # Job configuration #
283 #####################
285 project-type: freestyle
286 node: centos7-builder-2c-1g
289 - lf-infra-properties:
290 build-days-to-keep: 7
293 - lf-infra-parameters:
294 project: releng/builder
297 lftools-version: '{lftools-version}'
300 - lf-infra-gerrit-scm:
301 git-url: '$GIT_URL/releng/builder'
303 refspec: 'refs/heads/master'
304 jenkins-ssh-credential: opendaylight-jenkins-ssh
305 submodule-recursive: true
306 submodule-timeout: 10
307 choosing-strategy: default
312 server-name: '{gerrit-server-name}'
314 - change-merged-event
315 - comment-added-contains-event:
316 comment-contains-value: remerge$
318 - project-compare-type: ANT
319 project-pattern: '{project}'
321 - branch-compare-type: ANT
322 branch-pattern: '**/{branch}'
330 jenkins-ssh-credential: opendaylight-jenkins-ssh
334 - autorelease-update-project-views
335 - autorelease-update-validate-projects
336 - lf-infra-push-gerrit-patch:
338 gerrit-user: 'jenkins-$SILO'
339 gerrit-host: 'git.opendaylight.org'
340 gerrit-topic: 'autorelease-update-validate-jobs-{stream}'
341 gerrit-commit-message: |
342 'Update validate autorelease projects for {stream}'
343 reviewers-email: 'jenkins-releng@opendaylight.org'
349 name: autorelease-version-bump-{stream}
350 project-type: freestyle
354 - opendaylight-infra-properties:
355 build-days-to-keep: 7
358 - lf-infra-parameters:
359 project: releng/autorelease
362 refspec: 'refs/heads/{branch}'
363 lftools-version: '{lftools-version}'
368 Release that is being version bumped.
369 Eg. Lithium, Beryllium, Boron, Carbon, Carbon-SR1, Carbon-SR2...
374 If BRANCH_CUT is enabled, perform version bump for branch cutting
375 workflow, else perform version bump for simultaneous release
381 If DRY_RUN is enabled modifications are not published to Gerrit
382 and artifacts are not pushed to Nexus. Instead the build will be
383 performed using the goals "clean install".
388 - lf-infra-gerrit-scm:
389 git-url: '$GIT_URL/$GERRIT_PROJECT'
391 refspec: 'refs/heads/{branch}'
392 jenkins-ssh-credential: opendaylight-jenkins-ssh
393 submodule-recursive: true
394 submodule-timeout: 10
395 choosing-strategy: default
400 jenkins-ssh-credential: opendaylight-jenkins-ssh
404 # force jenkins install of maven version before any shell scripts use it
408 settings: autorelease-settings
410 global-settings: global-settings
411 global-settings-type: cfp
413 - shell: !include-raw-escape:
420 name: 'autorelease-generate-release-notes-{stream}'
422 ######################
423 # Default parameters #
424 ######################
426 gerrit_merge_triggers:
427 - comment-added-contains-event:
428 comment-contains-value: generate-release-notes .+$
430 #####################
431 # Job Configuration #
432 #####################
434 project-type: freestyle
435 node: centos7-builder-2c-8g
438 - lf-infra-properties:
439 build-days-to-keep: 7
442 - lf-infra-parameters:
446 lftools-version: '{lftools-version}'
449 description: Release to generate release notes for.
452 - lf-infra-gerrit-scm:
453 git-url: '$GIT_URL/$GERRIT_PROJECT'
454 branch: '$GERRIT_BRANCH'
455 refspec: '$GERRIT_REFSPEC'
456 jenkins-ssh-credential: opendaylight-jenkins-ssh
457 submodule-recursive: true
458 submodule-timeout: 10
459 choosing-strategy: default
464 jenkins-ssh-credential: opendaylight-jenkins-ssh
468 server-name: '{gerrit-server-name}'
469 trigger-on: '{obj:gerrit_merge_triggers}'
471 - project-compare-type: ANT
472 project-pattern: '{project}'
474 - branch-compare-type: ANT
475 branch-pattern: '**/{branch}'
479 - autorelease-generate-release-notes
485 name: '{project-name}-validate-autorelease-{stream}'
491 java-version: openjdk8
493 #####################
494 # Job Configuration #
495 #####################
498 project-type: freestyle
499 # Note: This NEEDS to be hardcoded as projects should NOT be allowed to
500 # override the build node.
501 node: centos7-builder-2c-8g
503 jdk: '{java-version}'
506 - lf-infra-properties:
507 build-days-to-keep: 7
510 - lf-infra-parameters:
514 lftools-version: '{lftools-version}'
515 - autorelease-release-tag:
516 release-tag: validate
519 default: '{git-url}/releng/autorelease'
520 description: "Autorelease clone URL"
525 credentials-id: 'opendaylight-jenkins-ssh'
535 - opendaylight-infra-wrappers:
536 build-timeout: '{build-timeout}'
539 - gerrit-trigger-patch-submitted:
540 gerrit-server-name: '{gerrit-server-name}'
548 - autorelease-checkout-gerrit-patch
549 - autorelease-compare-projects
550 - lf-jacoco-nojava-workaround
551 - shell: "./scripts/list-project-dependencies.sh"
552 - autorelease-determine-merge-order
553 - autorelease-generate-release-patches
554 # In a perfect world projects should be releasing separately and we consume them
555 # via a project that pulls the release bits from each project from Nexus.
556 # Keep the patches compatible with that ideal, but apply an edit
557 # to enable building in a single maven reactor afterwards.
558 - autorelease-fix-relative-paths
561 pom: validate-pom.xml
563 clean install dependency:tree
566 {opendaylight-infra-mvn-opts}
569 settings: autorelease-settings
571 global-settings: global-settings
572 global-settings-type: cfp
579 {opendaylight-infra-mvn-opts}
581 - '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
582 settings: autorelease-settings
584 global-settings: global-settings
585 global-settings-type: cfp
591 - email-notification:
592 email-recipients: '{email-recipients}'
593 email-prefix: '[autorelease] [{project-name}]'