2 # This file contains job templates for Maven projects.
5 name: '{project-name}-maven-jobs'
7 # This job group contains all the recommended jobs that should be deployed
12 - gerrit-maven-release
15 name: '{project-name}-github-maven-jobs'
17 # This job group contains all the recommended jobs that should be deployed
18 # for any project ci that is using github.
22 - github-maven-release
28 - lf_maven_common: &lf_maven_common
31 project-type: freestyle
36 - lf-infra-properties:
37 build-days-to-keep: '{build-days-to-keep}'
40 - lf-infra-parameters:
44 - lf-infra-maven-parameters:
45 mvn-opts: '{mvn-opts}'
46 mvn-params: '{mvn-params}'
47 mvn-version: '{mvn-version}'
48 # Staging repos do not make sense for CLM jobs so set it blank.
49 staging-profile-id: '{staging-profile-id}'
53 build-timeout: '{build-timeout}'
54 jenkins-ssh-credential: '{jenkins-ssh-credential}'
57 # TODO: Make email notification work.
58 # - lf-infra-email-notify:
59 # email-recipients: '{email-recipients}'
60 # email-prefix: '[releng]'
67 - lf_maven_clm: &lf_maven_clm
70 # Produces a CLM scan of the code into Nexus IQ Server.
72 # Required parameters:
73 # build-node: The node to run build on.
74 # jenkins-ssh-credential: Credential to use for SSH. (Generally should
75 # be configured in defaults.yaml)
76 # mvn-settings: The name of settings file containing credentials for
79 # Optional parameters:
80 # mvn-global-settings: The name of the Maven global settings to use for
81 # Maven configuration. (default: global-settings)
83 ######################
84 # Default parameters #
85 ######################
88 build-days-to-keep: 30 # 30 days for troubleshooting purposes
90 git-url: '$GIT_URL/$PROJECT'
91 java-version: openjdk8
92 mvn-global-settings: global-settings
97 submodule-recursive: true
99 # Staging repos do not make sense for CLM jobs so set it blank.
100 staging-profile-id: ''
102 #####################
103 # Job Configuration #
104 #####################
107 # Build weekly on Saturdays
112 mvn-version: '{mvn-version}'
113 - lf-provide-maven-settings:
114 global-settings-file: '{mvn-global-settings}'
115 settings-file: '{mvn-settings}'
116 - shell: !include-raw-escape:
117 - ../shell/common-variables.sh
118 - ../shell/sonatype-clm.sh
119 - lf-provide-maven-settings-cleanup
120 - shell: 'find . -regex ".*karaf/target" | xargs rm -rf'
122 application-name: '{project-name}'
125 name: '{project-name}-maven-clm-{stream}'
128 # yamllint disable-line rule:key-duplicates
132 - lf-infra-gerrit-scm:
133 jenkins-ssh-credential: '{jenkins-ssh-credential}'
135 refspec: '$GERRIT_REFSPEC'
136 branch: '$GERRIT_BRANCH'
137 submodule-recursive: '{submodule-recursive}'
138 choosing-strategy: default
141 name: '{project-name}-maven-clm-{stream}'
144 # yamllint disable-line rule:key-duplicates
149 url: '{git-url}/{github-org}/{project}'
152 - lf-infra-github-scm:
153 url: '{git-clone-url}{github-org}/{project}'
154 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
156 submodule-recursive: '{submodule-recursive}'
157 choosing-strategy: default
158 jenkins-ssh-credential: '{jenkins-ssh-credential}'
164 - lf_maven_release: &lf_maven_release
165 name: lf-maven-release
167 # Produces a release candidate by creating a staging repo in Nexus.
169 # Runs a Maven build and deploys to $WORKSPACE/m2repo directory. This
170 # directory can then be reused later to deploy to Nexus.
172 # Required parameters:
173 # build-node: The node to run build on.
174 # jenkins-ssh-credential: Credential to use for SSH. (Generally should
175 # be configured in defaults.yaml)
176 # mvn-settings: The name of settings file containing credentials for
178 # staging-profile-id: Profile ID of the project's Nexus staging profile.
180 # Optional parameters:
181 # mvn-global-settings: The name of the Maven global settings to use for
182 # Maven configuration. (default: global-settings)
184 ######################
185 # Default parameters #
186 ######################
189 build-days-to-keep: 30 # 30 days in case a release takes long to get approved.
191 git-url: '$GIT_URL/$PROJECT'
192 java-version: openjdk8
193 mvn-global-settings: global-settings
198 submodule-recursive: true
200 #####################
201 # Job Configuration #
202 #####################
205 - lf-jacoco-nojava-workaround
207 mvn-version: '{mvn-version}'
208 - lf-provide-maven-settings:
209 global-settings-file: '{mvn-global-settings}'
210 settings-file: '{mvn-settings}'
211 - lf-infra-create-netrc:
212 server-id: opendaylight-staging
213 - shell: !include-raw-escape:
214 - ../shell/lftools-install.sh
215 - ../shell/common-variables.sh
216 - ../shell/maven-patch-release.sh
217 - ../shell/maven-build.sh
218 - ../shell/maven-stage.sh
219 - lf-provide-maven-settings-cleanup
222 name: '{project-name}-maven-release-{stream}'
223 id: gerrit-maven-release
225 # yamllint disable-line rule:key-duplicates
226 <<: *lf_maven_release
229 - lf-infra-gerrit-scm:
230 jenkins-ssh-credential: '{jenkins-ssh-credential}'
232 refspec: '$GERRIT_REFSPEC'
233 branch: '$GERRIT_BRANCH'
234 submodule-recursive: '{submodule-recursive}'
235 choosing-strategy: default
238 name: '{project-name}-maven-release-{stream}'
239 id: github-maven-release
241 # yamllint disable-line rule:key-duplicates
242 <<: *lf_maven_release
246 url: '{git-url}/{github-org}/{project}'
249 - lf-infra-github-scm:
250 url: '{git-clone-url}{github-org}/{project}'
251 refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
253 submodule-recursive: '{submodule-recursive}'
254 choosing-strategy: default
255 jenkins-ssh-credential: '{jenkins-ssh-credential}'