blob: 33140d08390bad3f8ac8de137c8fb08599ba6d9a [file] [log] [blame]
TOP_JOB_DESC = "Builds:\\n"
String buildJob(String ghcontext, String jobName) {
setGitHubPullRequestStatus(context: ghcontext, message: 'Building', state: 'PENDING')
if (currentBuild.description == null) {
currentBuild.description = "Builds:<br>"
}
currentBuild.displayName = "PR: #${GITHUB_PR_NUMBER} - Build: #${BUILD_NUMBER}"
def jobBuild = build job: jobName, propagate: false, parameters: [string(name: 'SHA1', value: GITHUB_PR_HEAD_SHA), string(name: 'GITHUB_URL', value: GITHUB_REPO_GIT_URL), string(name: 'GITHUB_PR_NUMBER', value: GITHUB_PR_NUMBER)]
def jobResult = jobBuild.getResult()
def jobURL = jobBuild.getAbsoluteUrl()
echo "Build of '${jobName}' returned result: ${jobResult}"
if (jobResult == 'SUCCESS') {
setGitHubPullRequestStatus(context: ghcontext, message: "Success - ${jobURL}", state: jobResult)
} else {
setGitHubPullRequestStatus(context: ghcontext, message: "Failure - ${jobURL}", state: jobResult, targetUrl: "${jobURL}")
}
currentBuild.description += " ${jobName} - ${jobURL} <br>"
return jobResult
}
pipeline {
agent none
stages {
stage('Quick Checks') {
parallel {
stage('Clang-Format') {
when {
anyOf {
environment name: 'GITHUB_PR_COMMENT_BODY_MATCH', value: ''
expression { GITHUB_PR_COMMENT_BODY_MATCH ==~ /.*clang-format.*/ }
}
}
steps {
script {
echo GITHUB_PR_COMMENT_BODY_MATCH
result = buildJob('Clang-Format', 'Github_Builds/clang-format')
if (result == 'FAILURE') {
error('Clang-Format failed')
}
}
}
}
stage('RAT') {
when {
anyOf {
environment name: 'GITHUB_PR_COMMENT_BODY_MATCH', value: ''
expression { GITHUB_PR_COMMENT_BODY_MATCH ==~ /.*RAT.*/ }
}
}
steps {
script {
result = buildJob('RAT', 'Github_Builds/rat')
if (result == 'FAILURE') {
error('RAT failed')
}
}
}
}
}
}
stage('OS Builds') {
parallel {
stage('Ubuntu Build') {
when {
anyOf {
environment name: 'GITHUB_PR_COMMENT_BODY_MATCH', value: ''
expression { GITHUB_PR_COMMENT_BODY_MATCH ==~ /.*ubuntu.*/ }
}
}
steps {
script {
result = buildJob('Ubuntu', 'Github_Builds/ubuntu')
if (result == 'FAILURE') {
error('Ubuntu build failed')
}
}
}
}
stage('Fedora Build') {
when {
anyOf {
environment name: 'GITHUB_PR_COMMENT_BODY_MATCH', value: ''
expression { GITHUB_PR_COMMENT_BODY_MATCH ==~ /.*fedora.*/ }
}
}
steps {
script {
result = buildJob('Fedora', 'Github_Builds/fedora')
if (result == 'FAILURE') {
error('Fedora build failed')
}
}
}
}
stage('Debian Build') {
when {
anyOf {
environment name: 'GITHUB_PR_COMMENT_BODY_MATCH', value: ''
expression { GITHUB_PR_COMMENT_BODY_MATCH ==~ /.*debian.*/ }
}
}
steps {
script {
result = buildJob('Debian', 'Github_Builds/debian')
if (result == 'FAILURE') {
error('Debian build failed')
}
result = 'SUCCESS'
}
}
}
stage('CentOS Build') {
when {
anyOf {
environment name: 'GITHUB_PR_COMMENT_BODY_MATCH', value: ''
expression { GITHUB_PR_COMMENT_BODY_MATCH ==~ /.*centos.*/ }
}
}
steps {
script {
result = buildJob('CentOS', 'Github_Builds/centos')
if (result == 'FAILURE') {
error('CentOS build failed')
}
}
}
}
}
}
stage('Tests') {
parallel {
stage('Clang-Analyzer') {
when {
anyOf {
environment name: 'GITHUB_PR_COMMENT_BODY_MATCH', value: ''
expression { GITHUB_PR_COMMENT_BODY_MATCH ==~ /.*clang-analyzer.*/ }
}
}
steps {
script {
result = buildJob('Clang-Analyzer', 'Github_Builds/clang-analyzer')
if (result == 'FAILURE') {
error('Clang-Analyzer failed')
}
}
}
}
stage('AuTest') {
when {
anyOf {
environment name: 'GITHUB_PR_COMMENT_BODY_MATCH', value: ''
expression { GITHUB_PR_COMMENT_BODY_MATCH ==~ /.*autest.*/ }
}
}
steps {
script {
result = buildJob('AuTest', 'Github_Builds/autest')
if (result == 'FAILURE') {
error('AuTest failed')
}
}
}
}
}
}
}
}