-
Notifications
You must be signed in to change notification settings - Fork 12
/
Jenkinsfile
91 lines (85 loc) · 3.06 KB
/
Jenkinsfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!groovy
/*
* Copyright © 2017, 2023 IBM Corp. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the specific language governing permissions
* and limitations under the License.
*/
pipeline {
agent {
kubernetes {
yaml kubePodTemplate(name: 'full_jnlp.yaml')
}
}
environment {
ARTIFACTORY_CREDS = credentials('artifactory')
ARTIFACTORY_URL = "${Artifactory.server('taas-artifactory').getUrl()}"
}
stages {
stage('Build') {
steps {
// build and assemble the source and doc
sh 'gradle clean assemble'
}
}
stage('QA') {
steps {
sh 'gradle spotbugsMain'
sh 'gradle test'
}
post {
always {
recordIssues enabledForFailure: true, tool: spotBugs(pattern: '**/build/reports/spotbugs/*.xml')
junit (
testResults: '**/build/test-results/test/*.xml'
)
}
}
}
// Publish the primary branch
stage('Publish') {
steps {
script {
if (env.BRANCH_IS_PRIMARY) {
// read the version name and determine if it is a release build
version = readFile('VERSION').trim()
isReleaseVersion = !version.toUpperCase(Locale.ENGLISH).contains("SNAPSHOT")
withCredentials([usernamePassword(credentialsId: 'ossrh', passwordVariable: 'OSSRH_PASSWORD', usernameVariable: 'OSSRH_USER'),
certificate(credentialsId: 'cldtsdks-signing-cert', keystoreVariable: 'CODE_SIGNING_PFX_FILE', passwordVariable: 'CODE_SIGNING_P12_PASSWORD')]) {
sh '''
#!/bin/bash -e
# Configure the signing client
setup-garasign-client
# Get the key ID
SIGNING_KEYID=$(grep 'Key ID' $HOME/.gnupggrs/keysinfo.txt | awk 'NR==1{print $5}')
# Do a gradle publish that signs and uploads using the OSSRH creds
# upload destination logic is in build.gradle
gradle -Psigning.gnupg.keyName=$SIGNING_KEYID -Psigning.gnupg.executable=/opt/Garantir/bin/gpg -Psigning.gnupg.homeDir=$HOME/.gnupggrs publish
'''
}
// if it is a release build then do the git tagging
if (isReleaseVersion) {
gitTagAndPublish {
isDraft=true
releaseApiUrl='https://api.github.com/repos/IBM/cloudant-spring/releases'
}
}
}
}
}
post {
always {
sh "git config --unset credential.username || true"
sh "git config --unset credential.helper || true"
}
}
}
}
}