forked from iopsystems/rezolus
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJenkinsfile
96 lines (86 loc) · 2.58 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
#!/usr/bin/env groovy
@Library("pipeline@v2-stable")
final def BUILD_TIMEOUT = 120
final def NODELABEL = 'docker-build'
final def RELEASE_BRANCH = 'main'
def releaseBranches = [RELEASE_BRANCH, 'origin/' + RELEASE_BRANCH]
def cache = true
def cleanMergedRefs = false
def pushDeb = false
def namedBuild = null
def tagName = null
def slackChannel = null
def emailToSlack = [
'[email protected]': '@thom',
]
String getCleanedUpBuildRef() {
String ref = getBuildRef().name
def match = (ref =~ /^origin\/(.*)/)
if (match) {
ref = match[0][1]
}
return ref;
}
String ref = getCleanedUpBuildRef()
if (ref in releaseBranches) {
pushDeb = true
cache = false
cleanMergedRefs = true
tagName = "jenkins/release"
} else if (ref =~ /^.*\/jenkins$/) {
pushDeb = true
cache = false
namedBuild = ref.replaceAll("/jenkins", "").replaceAll('/', '-')
slackChannel = emailToSlack[params.author_email]
tagName = "jenkins/named"
} else if (ref =~ /^.*-stable$/) {
pushDeb = true
cache = false
namedBuild = ref.replaceAll("-stable", "").replaceAll('/', '-')
slackChannel = emailToSlack[params.author_email]
tagName = "jenkins/stable"
} else {
namedBuild = ref.replaceAll('/', '-')
}
fastlyPipeline(script: this, buildTimeout: BUILD_TIMEOUT, ignoreTags: true, slackChannel: slackChannel) {
getNode(label: NODELABEL) {
checkoutWithSubmodules scm
def v = readFile file: './fastly-build/VERSION'
def package_version = "${v.trim()}.${env.BUILD_NUMBER}"
if (namedBuild) {
package_version = "0.${package_version}-${namedBuild}"
}
stage("Build") {
def buildContainerConfig = [
dockerFile: './fastly-build/Dockerfile',
imageName: 'fastly/rezolus',
pushImage: false,
cache: cache,
additionalBuildArgs: [
"DESTDIR=${env.WORKSPACE}",
"PKG_VERSION=${package_version}"
]
]
fastlyDockerBuild(script: this, containers: [buildContainerConfig], checkout: false, loggerVerbosity: 'info')
}
if (pushDeb) {
stage('Push Packages to APT') {
fastlyAptPush(script: this, path: env.WORKSPACE)
if (slackChannel) {
slackSend color: null, message: "Package `fst-rezolus` version `${package_version}` uploaded.", channel: slackChannel
}
}
}
if (tagName) {
tagName = "${tagName}-${env.BUILD_NUMBER}-${params.commit.take(7)}"
stage('Tag Commit') {
tagCommit(tag: tagName)
}
}
if (cleanMergedRefs) {
stage('Cleanup Merged Refs') {
cleanupMergedBranches(script: this, masterBranch: RELEASE_BRANCH)
}
}
}
}