HiveBrain v1.2.0
Get Started
← Back to all entries
snippetMinor

How do i notify GitHub pull request for each stage of a parallel Jenkins pipeline?

Submitted by: @import:stackexchange-devops··
0
Viewed 0 times
notifypulleachjenkinsrequestgithubstageforparallelhow

Problem

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 {

Solution

I don't think I can help you with this, but I think I can suggest you where to look for a relevant information.

  • You can report any status check to your PR using Status API (https://developer.github.com/v3/repos/statuses/)



  • You can configure which Status checks are required from PR (https://help.github.com/en/github/administering-a-repository/about-required-status-checks)



  • Since pipeline is actually groovy code, calling Status API should not be a challenge. (Example with CURL - https://www.openmakesoftware.com/restful-json-api-calls-jenkins-pipeline/, example using native groovy - https://www.deployhub.com/native-groovy-api/)

Context

StackExchange DevOps Q#10814, answer score: 1

Revisions (0)

No revisions yet.