103 lines
2.7 KiB
Text
103 lines
2.7 KiB
Text
|
def macos_versions = ["sierra", "el_capitan", "yosemite"]
|
||
|
|
||
|
def cleanup() {
|
||
|
sh 'rm -f *.bottle*.*'
|
||
|
}
|
||
|
|
||
|
def checkout() {
|
||
|
brew_bin = "/usr/local/bin"
|
||
|
brew_cellar = "/usr/local/Cellar"
|
||
|
brew_repo = "/usr/local/Homebrew"
|
||
|
brew_tap_repo = "${brew_repo}/Library/Taps/homebrew/homebrew-core"
|
||
|
sh "mkdir -p ${brew_bin} ${brew_cellar} ${brew_tap_repo} "
|
||
|
dir(brew_repo) {
|
||
|
git url: 'https://github.com/Homebrew/brew.git', changelog: false
|
||
|
}
|
||
|
sh "ln -sf ${brew_repo}/bin/brew ${brew_bin}/brew"
|
||
|
dir(brew_tap_repo) {
|
||
|
checkout scm
|
||
|
}
|
||
|
}
|
||
|
|
||
|
def test_bot(args) {
|
||
|
timeout(time: 6, unit: 'HOURS') {
|
||
|
withEnv(["PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin",
|
||
|
'HOMEBREW_DEVELOPER=1']) {
|
||
|
sh "brew test-bot ${args}"
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
def test() {
|
||
|
test_bot("--ci-auto ${BOT_PARAMS}")
|
||
|
}
|
||
|
|
||
|
def archive(stash_name) {
|
||
|
def test_bot_junit = 'brew-test-bot.xml'
|
||
|
if (fileExists(test_bot_junit)) {
|
||
|
junit test_bot_junit
|
||
|
}
|
||
|
|
||
|
def bottle_glob = '*.bottle*.*'
|
||
|
if (findFiles(glob: bottle_glob).length >= 1) {
|
||
|
stash includes: bottle_glob, name: stash_name
|
||
|
}
|
||
|
}
|
||
|
|
||
|
def build(stash_name) {
|
||
|
cleanup()
|
||
|
checkout()
|
||
|
test()
|
||
|
archive(stash_name)
|
||
|
cleanup()
|
||
|
}
|
||
|
|
||
|
try {
|
||
|
properties([
|
||
|
buildDiscarder(logRotator(daysToKeepStr: '7', artifactNumToKeepStr: '50')),
|
||
|
[$class: 'RebuildSettings', autoRebuild: true],
|
||
|
parameters([string(name: 'BOT_PARAMS', defaultValue: '', description: 'Parameters passed to `brew test-bot`')]),
|
||
|
pipelineTriggers([[$class: 'GitHubPushTrigger']])
|
||
|
])
|
||
|
|
||
|
stage("Build") {
|
||
|
// TODO: figure out how to use macos_versions here.
|
||
|
parallel (
|
||
|
sierra: { node("sierra") { build("sierra") }},
|
||
|
el_capitan: { node("el_capitan") { build("el_capitan") }},
|
||
|
yosemite: { node("yosemite") { build("yosemite") }},
|
||
|
)
|
||
|
}
|
||
|
|
||
|
def stashed_bottles = false
|
||
|
node("master") {
|
||
|
stashed_bottles = fileExists("../builds/${env.BUILD_NUMBER}/stashes")
|
||
|
}
|
||
|
if (stashed_bottles) {
|
||
|
stage("Upload") {
|
||
|
node("master") {
|
||
|
cleanup()
|
||
|
checkout()
|
||
|
for (version in macos_versions) {
|
||
|
unstash version
|
||
|
}
|
||
|
withCredentials([[
|
||
|
$class: 'UsernamePasswordMultiBinding',
|
||
|
credentialsId: '5b6903a9-9f39-4c1b-9de6-ba0dd99c82a0',
|
||
|
passwordVariable: 'BINTRAY_KEY', usernameVariable: 'BINTRAY_USER']]) {
|
||
|
test_bot("--ci-upload --tap=homebrew/core")
|
||
|
}
|
||
|
cleanup()
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
catch (err) {
|
||
|
// TODO: decide who to email and when
|
||
|
// mail to: '',
|
||
|
// from: 'Brew Test Bot <brewtestbot@icloud.com>',
|
||
|
// subject: "${env.JOB_NAME} ${env.BUILD_DISPLAY_NAME} failed!",
|
||
|
// body: "Build: ${env.BUILD_URL}\nConsole: ${env.BUILD_URL}console\nTests: ${env.BUILD_URL}testReport/"
|
||
|
throw err
|
||
|
}
|