mirror of
https://github.com/valitydev/salt.git
synced 2024-11-06 08:35:21 +00:00
97 lines
3.9 KiB
Groovy
97 lines
3.9 KiB
Groovy
// Define the maximum time, in hours, that a test run should run for
|
|
def global_timeout = 2
|
|
def salt_target_branch = '2019.2.1'
|
|
|
|
properties([
|
|
buildDiscarder(logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '', numToKeepStr: '10')),
|
|
])
|
|
|
|
// Be sure to cancel any previously running builds
|
|
def buildNumber = env.BUILD_NUMBER as int
|
|
if (buildNumber > 1) {
|
|
// This will cancel the previous build which also defined a matching milestone
|
|
milestone(buildNumber - 1)
|
|
}
|
|
// Define a milestone for this build so that, if another build starts, this one will be aborted
|
|
milestone(buildNumber)
|
|
|
|
def shell_header
|
|
|
|
node('docs') {
|
|
timeout(time: global_timeout, unit: 'HOURS') {
|
|
ansiColor('xterm') {
|
|
timestamps {
|
|
try {
|
|
// Set the GH status even before cloning the repo
|
|
if (env.NODE_NAME.startsWith('jenkins-pr-')) {
|
|
stage('github-pending') {
|
|
githubNotify credentialsId: 'test-jenkins-credentials',
|
|
description: 'Testing docs...',
|
|
status: 'PENDING',
|
|
context: "jenkins/pr/docs"
|
|
}
|
|
shell_header = 'export PYENV_ROOT="/usr/local/pyenv"\nexport PATH="$PYENV_ROOT/bin:$PATH"'
|
|
} else {
|
|
shell_header = ''
|
|
}
|
|
// Checkout the repo
|
|
stage('checkout-scm') {
|
|
cleanWs notFailBuild: true
|
|
checkout scm
|
|
}
|
|
|
|
// Setup the kitchen required bundle
|
|
stage('Setup') {
|
|
sh shell_header + '''
|
|
eval "$(pyenv init -)"
|
|
pyenv --version
|
|
pyenv install --skip-existing 3.6.8
|
|
pyenv shell 3.6.8
|
|
python --version
|
|
pip install -U nox-py2
|
|
nox --version
|
|
'''
|
|
}
|
|
|
|
stage('Build') {
|
|
sh shell_header + '''
|
|
eval "$(pyenv init -)"
|
|
pyenv shell 3.6.8
|
|
nox -e docs
|
|
'''
|
|
archiveArtifacts artifacts: 'doc/doc-archive.tar.gz'
|
|
}
|
|
} catch (Exception e) {
|
|
currentBuild.result = 'FAILURE'
|
|
} finally {
|
|
cleanWs notFailBuild: true
|
|
if (currentBuild.resultIsBetterOrEqualTo('SUCCESS')) {
|
|
if (env.NODE_NAME.startsWith('jenkins-pr-')) {
|
|
githubNotify credentialsId: 'test-jenkins-credentials',
|
|
description: 'The docs job has passed',
|
|
status: 'SUCCESS',
|
|
context: "jenkins/pr/docs"
|
|
}
|
|
} else {
|
|
if (env.NODE_NAME.startsWith('jenkins-pr-')) {
|
|
githubNotify credentialsId: 'test-jenkins-credentials',
|
|
description: 'The docs job has failed',
|
|
status: 'FAILURE',
|
|
context: "jenkins/pr/docs"
|
|
}
|
|
try {
|
|
slackSend channel: "#jenkins-prod-pr",
|
|
color: '#FF0000',
|
|
message: "FAILED: PR-Job: '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})"
|
|
} catch (Exception e) {
|
|
sh 'echo Failed to send the Slack notification'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// vim: ft=groovy
|