问题
We are using the Git Plugin : https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin
Currently, via webhooks we start a Jenkins build whenever a change is pushed to GitHub. Now we want to trigger the same build when a new tag is added. So we have two triggering conditions :
- A code change is pushed to GitHub
- A tag is created
If we try the fix mention in this thread then the builds start only for tags. jenkins trigger build if new tag is released
How can we do it for both scenarios ?
Question # 02 : How can we get the tag name inside a Jenkins build, is there any environment variable for it.
回答1:
4 Step Process:
- Commit Code :
git commit -m "Some meaningful message"
- Create a tag
- To release to stage :
git tag -a release_stage_<meaningful tag>
- To release to prod :
git tag -a release_production_<meaningful tag>
- To release to stage :
- Push the tag :
git push origin release_stage_<same_meaningful_tag>
- Push Commit
git push origin <branch_name>
Jenkins File:
properties([pipelineTriggers([[$class: 'GitHubPushTrigger']])])
checkout scm
git_branch = env.BRANCH_NAME
git_branch_to_release = env.BRANCH_NAME
git_tag = sh returnStdout: true, script: 'git tag -l --points-at HEAD'```
`//And now you can use to do anything with tags`
if(currentBuild.result=='SUCCESSFUL' || currentBuild.result=='SUCCESS' || currentBuild.result == null)
{
if (git_tag.contains('release_stage') || git_tag.contains('release_production'))
{
// Do anything which you want to do with tags
}
}
回答2:
Try using Jenkins GitHub Plugin
It works perfectly well for us for both tag created and changes pushed.
For tags you can use ${GIT_BRANCH} environment variable, it should contain the tag in origin/tags/%tag% format
来源:https://stackoverflow.com/questions/40809254/triggering-jenkins-build-on-both-new-tags-commits