-
Notifications
You must be signed in to change notification settings - Fork 0
/
Jenkinsfile
102 lines (86 loc) · 4.01 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
92
93
94
95
96
97
98
99
100
101
102
#!groovy
@Library('ICANN_LIB') _
properties([[$class: 'BuildDiscarderProperty', strategy: [$class: 'LogRotator', artifactDaysToKeepStr: '14', artifactNumToKeepStr: '10', daysToKeepStr: '14', numToKeepStr: '10']]])
GString createChartVersion(chartFolder, utils) {
GString chartVersionCommand = "grep -m1 '^[[:space:]]*version:' ${chartFolder}/Chart.yaml | awk -F ':' '{print \$2}' | sed 's/^[[:space:]]*//'"
def chartVersion = sh(script: chartVersionCommand, returnStdout: true).trim()
def tag = utils.generateDockerTag()
GString commitVersion = "${chartVersion}-${tag}"
return commitVersion
}
def customPushHelmChart(Map map = [:]) {
withCredentials([usernamePassword(credentialsId: 'artifactory', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) {
sh "helm push-artifactory ${map['directory']} https://artifactory.icann.org/artifactory/icann-helm-local --path ${map['artifactoryPath']} --skip-reindex --username $USERNAME --password $PASSWORD --version ${map['customVersion']}"
}
}
node('docker') {
def utils = new icann.Utilities()
try {
utils.notifyBuild("STARTED",'ts-eng-builds')
stage('Environment') {
checkout scm
}
stage('Run Tests') {
utils.mvn(args : 'clean install', jdkVersion: 'jdk17')
}
stage('SonarQube Analysis') {
withSonarQubeEnv('ICANN') {
utils.mvn(sonarAnalysis: true)
}
}
stage('Publish C4') {
if("${env.BRANCH_NAME}" != 'master' ) {
echo "Feature branch not publishing c4 models"
return
}
if(utils.hasFolderChanged("docs/diagrams")) {
utils.buildC4Diagram(path: 'docs/diagrams', pillar: 'ts')
}
}
stage('Docker Image') {
withEnv(["IMAGE_BUILDER=docker"]) {
utils.mvn(args: 'clean package spring-boot:repackage -Dmaven.test.skip=true', jdkVersion: 'jdk17')
sh "cd ${WORKSPACE}/ && mvn -Ddocker.username=dockerpull -Ddocker.password=${utils.getUserPassword("dockerpull")} docker:build -Dmaven.test.skip=true"
utils.pushImageToRegistryTrunkBased(DTRRepo : 'rdapconformancefe', dockerImageName : 'icann/rdapconformancefe')
}
}
stage('Trigger Webhook') {
try {
if ("${env.BRANCH_NAME}" == 'master') {
imageTag = utils.generateDockerTag('dev');
artifacts = [
[
"type" : "docker/image",
"name" : "container-registry-dev.icann.org/icann/rdapconformancefe",
"version" : imageTag,
"reference": "container-registry-dev.icann.org/icann/rdapconformancefe:${imageTag}"
]
]
utils.spinnakerTrigger(webhook: 'rdapconformance-qa', artifacts: artifacts)
} else {
echo "not master branch - skipping"
}
} catch (e) {
utils.sendNotification(slackChannel: 'ts-eng-builds', sendSlackMessage: true, buildStatus: 'FAILED')
throw e
}
}
stage('Helm Charts') {
if("${env.BRANCH_NAME}" != 'master' ) {
echo "Feature branch not deploying helm charts"
return
}
if(utils.hasFolderChanged("helm/rdap-conformance-tool-fe")) {
GString chartVersion = createChartVersion("helm/rdap-conformance-tool-fe", utils)
echo "Deploying helm chart ${chartVersion}"
customPushHelmChart(directory: "helm/rdap-conformance-tool-fe", artifactoryPath: "icann/rdap-conformance-tool-fe", customVersion: chartVersion)
}
}
} catch(e) {
currentBuild.result = "FAILURE"
throw e
} finally {
step([$class: 'Publisher'])
utils.notifyBuild(currentBuild.result,'ts-eng-builds')
}
}