Jenkinsfile: Switch to declarative syntax

* Switch to declarative syntax
* Test parallel Windows/Linux build
* Remove some hard drive restrictions as now I have more HDD space on the server
1008-fix
krzys_h 2018-04-19 22:11:29 +02:00 committed by GitHub
parent 0391aaf773
commit 72417fc28b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 84 additions and 60 deletions

58
Jenkinsfile vendored
View File

@ -1,20 +1,25 @@
#!/usr/bin/env groovy
if (env.BRANCH_NAME.startsWith('PR-')) {
properties([[$class: 'BuildDiscarderProperty', strategy: [$class: 'LogRotator', artifactNumToKeepStr: '1']]])
} else {
properties([[$class: 'BuildDiscarderProperty', strategy: [$class: 'LogRotator', artifactDaysToKeepStr: '30', artifactNumToKeepStr: '20']]])
}
pipeline {
agent { label 'colobot-build' }
options {
buildDiscarder(logRotator(artifactDaysToKeepStr: '30', artifactNumToKeepStr: '20'))
}
stages {
stage('Check pull request target') {
when { changeRequest() }
steps {
script {
if (env.CHANGE_TARGET == 'master') {
error("This pull request targets the wrong branch. Please reopen the pull request targetting the dev branch.")
throw "This pull request targets the wrong branch. Please reopen the pull request targetting the dev branch."
}
node('master') {
stage('Pull changes') {
checkout scm
}
}
}
stage('Build') {
parallel {
stage('Build Windows') {
steps {
sh 'mkdir -p build/windows'
dir('build/windows') {
sh '''
@ -27,11 +32,17 @@ node('master') {
DESTDIR=. make install
'''
}
}
post {
success {
sh 'rm -f windows-debug.zip'
zip zipFile: 'windows-debug.zip', archive: true, dir: 'build/windows/install'
}
}
}
stage('Build Linux') {
steps {
sh 'mkdir -p build/linux'
dir('build/linux') {
sh '''
@ -45,27 +56,40 @@ node('master') {
patchelf --set-rpath '.' install/colobot
'''
}
}
post {
success {
sh 'rm -f linux-debug.zip'
zip zipFile: 'linux-debug.zip', archive: true, dir: 'build/linux/install'
}
}
}
stage('Doxygen') {
// TODO: Run colobot-lint
}
}
stage('Generate docs') {
steps {
dir('build/linux') {
sh 'make doc'
}
}
post {
success {
publishHTML target: [$class: 'HtmlPublisherTarget', reportName: 'Doxygen', reportDir: 'build/linux/doc/html', reportFiles: 'index.html']
}
}
}
stage('Run tests') {
steps {
dir('build/linux') {
sh './colobot_ut --gtest_output=xml:gtestresults.xml || true'
}
step([$class: 'XUnitBuilder', testTimeMargin: '3000', thresholdMode: 1, thresholds: [[$class: 'FailedThreshold', failureNewThreshold: '', failureThreshold: '', unstableNewThreshold: '', unstableThreshold: '0'], [$class: 'SkippedThreshold', failureNewThreshold: '', failureThreshold: '', unstableNewThreshold: '', unstableThreshold: '']], tools: [[$class: 'GoogleTestType', deleteOutputFiles: true, failIfNotNew: true, pattern: 'build/linux/gtestresults.xml', skipNoTestFiles: false, stopProcessingIfError: true]]])
}
// Clean workspace after building pull requests
// to save disk space on the Jenkins host
if (env.BRANCH_NAME.startsWith('PR-')) {
cleanWs()
// TODO: Maybe run Windows tests using wine as well?
}
}
}