You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.4 KiB
89 lines
2.4 KiB
#!/usr/bin/env groovy |
|
|
|
node('master') { |
|
checkout scm |
|
passedBuilds = [] |
|
def changelog = lastSuccessfulBuild(passedBuilds, currentBuild) |
|
|
|
slackSend "Building ${env.JOB_NAME} #${env.BUILD_NUMBER} \n ${changelog}" |
|
} |
|
|
|
parallel 'centos7': { |
|
node('centos7') { |
|
try { |
|
checkout scm |
|
|
|
stage('Build Centos 7') { |
|
sh 'make -f make-linux.mk' |
|
} |
|
} |
|
catch (err) { |
|
currentBuild.result = "FAILURE" |
|
slackSend color: '#ff0000', message: "${env.JOB_NAME} broken on Centos 7 (<${env.BUILD_URL}|Open>)" |
|
|
|
throw err |
|
} |
|
} |
|
}, 'android-ndk': { |
|
node('android-ndk') { |
|
try { |
|
checkout scm |
|
|
|
stage('Build Android NDK') { |
|
sh "/android/android-ndk-r13/ndk-build -C $WORKSPACE/java ZT1=${WORKSPACE}" |
|
} |
|
} |
|
catch (err) { |
|
currentBuild.result = "FAILURE" |
|
slackSend color: '#ff0000', message: "${env.JOB_NAME} broken on Android NDK (<${env.BUILD_URL}|Open>)" |
|
|
|
throw err |
|
} |
|
} |
|
}, 'macOS': { |
|
node('macOS') { |
|
try { |
|
checkout scm |
|
|
|
stage('Build macOS') { |
|
sh 'make -f make-mac.mk' |
|
} |
|
|
|
stage('Build macOS UI') { |
|
sh 'cd macui && xcodebuild -target "ZeroTier One" -configuration Debug' |
|
} |
|
} |
|
catch (err) { |
|
currentBuild.result = "FAILURE" |
|
slackSend color: '#ff0000', message: "${env.JOB_NAME} broken on macOS (<${env.BUILD_URL}|Open>)" |
|
|
|
throw err |
|
} |
|
} |
|
} |
|
|
|
slackSend "${env.JOB_NAME} #${env.BUILD_NUMBER} Complete (<${env.BUILD_URL}|Show More...>)" |
|
|
|
def lastSuccessfulBuild(passedBuilds, build) { |
|
if ((build != null) && (build.result != 'SUCCESS')) { |
|
passedBuilds.add(build) |
|
lastSuccessfulBuild(passedBuilds, build.getPreviousBuild()) |
|
} |
|
} |
|
|
|
@NonCPS |
|
def getChangeLog(passedBuilds) { |
|
def log = "" |
|
for (int x = 0; x < passedBuilds.size(); x++) { |
|
def currentBuild = passedBuilds[x]; |
|
def changeLogSets = currentBuild.rawBuild.changeSets |
|
for (int i = 0; i < changeLogSets.size(); i++) { |
|
def entries = changeLogSets[i].items |
|
for (int j = 0; j < entries.length; j++) { |
|
def entry = entries[j] |
|
log += "* ${entry.msg} by ${entry.author} \n" |
|
} |
|
} |
|
} |
|
return log; |
|
} |