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
41 choosing-strategy: default
46 jenkins-ssh-credential: opendaylight-jenkins-ssh
49 - shell: !include-raw-escape: branch-cut.sh
55 name: 'autorelease-release-{stream}'
61 build-node: '{build-node}'
62 java-version: openjdk8
70 project-type: freestyle
76 - lf-infra-properties:
77 build-days-to-keep: 30
81 maven-version: 'mvn33'
82 - lf-infra-parameters:
86 lftools-version: '{lftools-version}'
87 - distribution-karaf-version:
88 karaf-version: '{karaf-version}'
89 - autorelease-release-tag:
90 release-tag: '{next-release-tag}'
93 default: '{extra-mvn-opts}'
95 Additional optional Maven Options to pass to the Maven Goals
99 -Dskip.karaf.featureTest=true # To disable karaf SingleFeatureTests
100 --fail-never # NEVER fail the build, regardless of project result
101 --fail-at-end # Only fail the build afterwards; allow all non-impacted builds to continue
103 name: ARCHIVE_ARTIFACTS
104 default: '{archive-artifacts}'
105 description: Artifacts to archive to the logs server.
109 credentials-id: 'opendaylight-jenkins-ssh'
111 refspec: '$GERRIT_REFSPEC'
114 choosing-strategy: default
121 - opendaylight-infra-wrappers:
128 # force jenkins install of maven version before any shell scripts use it
130 mvn-version: '{mvn-version}'
131 - wipe-local-maven-repo
132 - jacoco-nojava-workaround
133 - shell: "./scripts/list-project-dependencies.sh"
134 - autorelease-determine-merge-order
136 autorelease-settings: 'autorelease-settings'
137 global-settings: 'odl-global-settings'
138 - autorelease-generate-release-patches
139 - autorelease-generate-artifact-versions
140 - autorelease-distribute-taglist
141 - distribute-build-url:
142 path: 'integration/distribution/$KARAF_ARTIFACT/src/main/assembly'
143 # In a perfect world projects should be releasing separately and we consume them
144 # via a project that pulls the release bits from each project from Nexus.
145 # Keep the patches compatible with that ideal, but apply an edit
146 # to enable building in a single maven reactor afterwards.
147 - autorelease-fix-relative-paths
149 maven-version: 'mvn33'
154 -Pintegrationtests,docs,repoBuild
155 -Dcheckstyle.skip=true
156 -Dkaraf.keep.unpack=true
157 -DaltDeploymentRepository=staging::default::file:hide/from/pom/files/stage
158 {opendaylight-infra-mvn-opts}
160 - '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
161 settings: 'autorelease-settings'
163 global-settings: 'global-settings'
164 global-settings-type: cfp
165 - autorelease-maven-deploy
166 - autorelease-get-integration-test-variables
167 - autorelease-maven-sources:
168 opendaylight-infra-mvn-opts: '{opendaylight-infra-mvn-opts}'
169 maven-version: 'mvn33'
170 settings: 'autorelease-settings'
171 global-settings: 'global-settings'
172 - autorelease-maven-sources-post-process
176 for file in $(find . -name karaf.log); do
177 module="${{file%%/target/*}}"
178 module="${{module##*/}}"
179 cp "$file" "archives/${{module}}-karaf.log"
183 - opendaylight-infra-notify-status
184 - trigger-parameterized-builds:
185 - project: 'integration-distribution-test-{integration-test}'
186 condition: UNSTABLE_OR_BETTER
187 property-file: variables.jenkins-trigger
188 fail-on-missing: true
189 - project: 'integration-distribution-test-{integration-test}'
191 trigger-with-no-params: true
192 - project: 'integration-sanity-test-{integration-test}'
193 condition: UNSTABLE_OR_BETTER
194 property-file: variables.jenkins-trigger
195 fail-on-missing: true
196 - project: 'integration-sanity-test-{integration-test}'
198 trigger-with-no-params: true
199 - project: 'packaging-build-rpm-{stream}'
200 condition: UNSTABLE_OR_BETTER
201 predefined-parameters: DOWNLOAD_URL=$BUNDLE_URL
202 property-file: variables.jenkins-trigger
203 fail-on-missing: true
204 - project: 'packaging-build-deb-{stream}'
205 condition: UNSTABLE_OR_BETTER
206 predefined-parameters: DOWNLOAD_URL=$BUNDLE_URL
207 property-file: variables.jenkins-trigger
208 fail-on-missing: true
212 name: autorelease-update-validate-jobs-{stream}
214 ######################
215 # Default parameters #
216 ######################
220 #####################
221 # Job configuration #
222 #####################
224 project-type: freestyle
225 node: centos7-builder-2c-1g
228 - lf-infra-properties:
229 build-days-to-keep: 7
232 - lf-infra-parameters:
233 project: releng/builder
236 lftools-version: '{lftools-version}'
239 - lf-infra-gerrit-scm:
240 git-url: '$GIT_URL/releng/builder'
242 refspec: 'refs/heads/master'
243 jenkins-ssh-credential: opendaylight-jenkins-ssh
244 submodule-recursive: true
245 choosing-strategy: default
250 server-name: '{gerrit-server-name}'
252 - change-merged-event
253 - comment-added-contains-event:
254 comment-contains-value: remerge$
256 - project-compare-type: ANT
257 project-pattern: '{project}'
259 - branch-compare-type: ANT
260 branch-pattern: '**/{branch}'
268 jenkins-ssh-credential: opendaylight-jenkins-ssh
271 - autorelease-update-validate-projects
272 - opendaylight-infra-push-gerrit-patch:
273 project: 'releng/builder'
274 gerrit-topic: 'autorelease-update-validate-jobs-{stream}'
275 gerrit-commit-message: |
276 Update validate autorelease projects for {stream}
282 name: autorelease-version-bump-{stream}
283 project-type: freestyle
287 - opendaylight-infra-properties:
288 build-days-to-keep: 7
291 - lf-infra-parameters:
292 project: releng/autorelease
295 refspec: 'refs/heads/{branch}'
296 lftools-version: '{lftools-version}'
299 default: '{next-release-tag}'
301 Release that is being version bumped.
302 Eg. Lithium, Beryllium, Boron, Carbon, Carbon-SR1, Carbon-SR2...
307 If BRANCH_CUT is enabled, perform version bump for branch cutting
308 workflow, else perform version bump for simultaneous release
314 If DRY_RUN is enabled modifications are not published to Gerrit
315 and artifacts are not pushed to Nexus. Instead the build will be
316 performed using the goals "clean install".
321 - lf-infra-gerrit-scm:
322 git-url: '$GIT_URL/$GERRIT_PROJECT'
324 refspec: 'refs/heads/{branch}'
325 jenkins-ssh-credential: opendaylight-jenkins-ssh
326 submodule-recursive: true
327 choosing-strategy: default
332 jenkins-ssh-credential: opendaylight-jenkins-ssh
335 # force jenkins install of maven version before any shell scripts use it
339 settings: autorelease-settings
341 global-settings: global-settings
342 global-settings-type: cfp
344 - shell: !include-raw-escape:
345 - ../global-jjb/shell/lftools-install.sh
352 name: 'autorelease-generate-release-notes-{stream}'
354 ######################
355 # Default parameters #
356 ######################
358 gerrit_merge_triggers:
359 - comment-added-contains-event:
360 comment-contains-value: generate-release-notes .+$
362 #####################
363 # Job Configuration #
364 #####################
366 project-type: freestyle
367 node: centos7-builder-2c-8g
370 - lf-infra-properties:
371 build-days-to-keep: 7
374 - lf-infra-parameters:
378 lftools-version: '{lftools-version}'
381 description: Release to generate release notes for.
384 - lf-infra-gerrit-scm:
385 git-url: '$GIT_URL/$GERRIT_PROJECT'
386 branch: '$GERRIT_BRANCH'
387 refspec: '$GERRIT_REFSPEC'
388 jenkins-ssh-credential: opendaylight-jenkins-ssh
389 submodule-recursive: true
390 choosing-strategy: default
395 jenkins-ssh-credential: opendaylight-jenkins-ssh
399 server-name: '{gerrit-server-name}'
400 trigger-on: '{obj:gerrit_merge_triggers}'
402 - project-compare-type: ANT
403 project-pattern: '{project}'
405 - branch-compare-type: ANT
406 branch-pattern: '**/{branch}'
409 - autorelease-generate-release-notes
415 name: '{project-name}-validate-autorelease-{stream}'
421 java-version: openjdk8
423 #####################
424 # Job Configuration #
425 #####################
428 project-type: freestyle
429 # Note: This NEEDS to be hardcoded as projects should NOT be allowed to
430 # override the build node.
431 node: centos7-builder-2c-8g
433 jdk: '{java-version}'
436 - lf-infra-properties:
437 build-days-to-keep: 7
440 - lf-infra-parameters:
444 lftools-version: '{lftools-version}'
445 - autorelease-release-tag:
446 release-tag: validate
449 default: '{git-url}/releng/autorelease'
450 description: "Autorelease clone URL"
455 credentials-id: 'opendaylight-jenkins-ssh'
465 - opendaylight-infra-wrappers:
466 build-timeout: '{build-timeout}'
469 - gerrit-trigger-patch-submitted:
470 gerrit-server-name: '{gerrit-server-name}'
476 - autorelease-checkout-gerrit-patch
477 - autorelease-compare-projects
478 - jacoco-nojava-workaround
479 - shell: "./scripts/list-project-dependencies.sh"
480 - autorelease-determine-merge-order
481 - autorelease-generate-release-patches
482 # In a perfect world projects should be releasing separately and we consume them
483 # via a project that pulls the release bits from each project from Nexus.
484 # Keep the patches compatible with that ideal, but apply an edit
485 # to enable building in a single maven reactor afterwards.
486 - autorelease-fix-relative-paths
489 pom: validate-pom.xml
491 clean install dependency:tree
494 {opendaylight-infra-mvn-opts}
497 settings: autorelease-settings
499 global-settings: global-settings
500 global-settings-type: cfp
501 # Hack to workaround the duplicate-finder plugin in odlparent breaking validate-autorelease
502 - shell: sed -i 's/validate/none/' /tmp/r/org/opendaylight/odlparent/odlparent/3.0.2/odlparent-3.0.2.pom || true
509 -Dkaraf.keep.unpack=true
510 {opendaylight-infra-mvn-opts}
512 - '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
513 settings: autorelease-settings
515 global-settings: global-settings
516 global-settings-type: cfp
520 for file in $(find . -name karaf.log); do
521 module="${{file%%/target/*}}"
522 module="${{module##*/}}"
523 cp "$file" "archives/${{module}}-karaf.log"
527 - email-notification:
528 email-recipients: '{email-recipients}'
529 email-prefix: '[autorelease] [{project-name}]'