So we can have only one Jenkinsfile per job. And we share the same job for both merge and PR webhooks from github. How can we easily detect if the webhook for a commit pushed in a PR or for PR merge?
Asked
Active
Viewed 984 times
3

StephenKing
- 36,187
- 11
- 83
- 112

Behlül
- 3,412
- 2
- 29
- 46
-
Assuming different branches for PR and merge PR, e.g. 'feature' and 'develop', you could solve this using `when { branch '...' }`. Reference: [Pipeline Syntax](https://jenkins.io/doc/book/pipeline/syntax/#when) – groverboy Apr 18 '18 at 00:39
-
2Actually, there is a `when { changeRequest() }` condition mentioned on the site referenced by @groverboy – StephenKing Apr 18 '18 at 05:58
-
@StephenKing +1 thanks - I see that `changeRequest` was added a couple of weeks ago. – groverboy Apr 20 '18 at 03:33
-
I can accept as answer if you guys post a code snippet as answer :) – Behlül Apr 20 '18 at 17:15
1 Answers
2
This (declarative pipeline) snippet might help:
stage('do something for PRs opened against develop branch') {
when {
changeRequest target: 'develop'
}
steps {
sh 'pr-worker.sh'
}
}
stage('do something on merge or direct commits to the develop branch') {
when {
branch 'develop'
}
steps {
sh 'develop-worker.sh'
}
}
See when in the documentation.