We have a parallel Jenkins pipeline script which deploy and run three kind of tests in parallel. We have to notify the status of each stage to GitHub pull request. Can anyone help me to get this?
def jobs = [
[
"name" : "LegacyUnitTests",
"runFolder" : "recipes",
"run" : { -> sh "docker-compose -f docker-compose/docker-compose-maven.yml -f docker-compose/docker-compose.yml run maven-unit-test" },
"report": { -> junit testResults: "docker-compose/volmnt/reports/*.xml" },
],
[
"name" : "AutomationTests",
"runFolder" : "automation",
"run" : { -> sh "../run_automation_tests.sh" },
"report": { ->
junit testResults: "reports/junit/*.xml"
allure([
includeProperties: false,
jdk: '',
properties: [],
reportBuildPolicy: 'ALWAYS',
results: [[path: '/reports/allure']]
])
}
]
]
def parallelStagesMap = jobs.collectEntries {
["${it.name}" : generateStage(it)]
}
def generateStage(job) {
return {
stage(job.name) {
dir(job.runFolder) {
try {
job.run.call()
setSuccess(this, job.name)
}
catch (err) {
setFailed(this, job.name)
}
}
}
}
}
pipeline {
agent {
node {
label 'pr-slave-test'
customWorkspace "/var/lib/jenkins/workspace/${JOB_NAME}_${BUILD_NUMBER}"
}
}
post {
always {
//Reports
script {
jobs.each {
j -> j.report.call()
}
}//Cleanup
cleanWs()
}
}
stages {
stage('Pre-Build') {
steps {
script {
//set status as pending
jobs.each {
j -> setPending(this, j.name)
}
//checkout all repo
}
}
}
stage('Build') {
steps {
dir () {
sh "echo \"Building\""
}
}
}
stage('CI') {
steps {
script {
parallel parallelStagesMap
}
}
}
}
}
I want to notify GitHub pr for each stage automation and legacy unit test status as pass fail as a GitHub check status