-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathJenkinsfile
More file actions
92 lines (91 loc) · 2.4 KB
/
Jenkinsfile
File metadata and controls
92 lines (91 loc) · 2.4 KB
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
@Library('jenkins.shared.library') _
pipeline {
agent {
label 'ubuntu_20_04_label'
}
tools {
go "Go 1.18"
}
options {
checkoutToSubdirectory('src/github.com/infobloxopen/db-controller')
}
environment {
DIRECTORY = "src/github.com/infobloxopen/db-controller"
GIT_VERSION = sh(script: "cd ${DIRECTORY} && git describe --always --long --tags",
returnStdout: true).trim()
CHART_VERSION = "${env.GIT_VERSION}-j${env.BUILD_NUMBER}"
TAG = "${env.GIT_VERSION}"
GOPATH = "$WORKSPACE"
}
stages {
stage("Setup") {
steps {
prepareBuild()
}
}
stage("Run tests") {
steps {
withCredentials([string(credentialsId: 'GITHUB_TOKEN', variable: 'GitHub_PAT')]) {
sh "echo machine github.com login $GitHub_PAT > ~/.netrc"
sh "echo machine api.github.com login $GitHub_PAT >> ~/.netrc"
}
dir("$DIRECTORY") {
sh "sudo apt-get update"
sh "sudo apt-get -y install postgresql-client"
sh "echo 'db-controller-name' > .id"
sh "make test"
sh "sudo apt-get -y remove postgresql-client"
}
}
}
stage("Build db-controller image") {
steps {
dir("$DIRECTORY") {
sh "make docker-build"
}
}
}
stage("Push db-controller image") {
steps {
withDockerRegistry([credentialsId: "${env.JENKINS_DOCKER_CRED_ID}", url: ""]) {
dir("$DIRECTORY") {
sh "REGISTRY=infoblox make docker-push"
}
}
}
}
stage('Push charts') {
steps {
dir ("${WORKSPACE}/${DIRECTORY}") {
withDockerRegistry([credentialsId: "dockerhub-bloxcicd", url: ""]) {
withAWS(region:'us-east-1', credentials:'CICD_HELM') {
sh """
make build-chart build-chart-crd
make push-chart push-chart-crd
make build-properties
make build-properties-crd
chmod a+xrw ${WORKSPACE}/${DIRECTORY}
"""
archiveArtifacts artifacts: '*.tgz'
archiveArtifacts artifacts: '*build.properties'
}
}
}
}
}
}
post {
success {
dir("${WORKSPACE}/${DIRECTORY}") {
// finalizeBuild is one of the Secure CICD helper methods
finalizeBuild('', getFileList("*.properties"))
}
}
cleanup {
dir("$DIRECTORY") {
sh "make clean || true"
}
cleanWs()
}
}
}