我正在尝试创建一个Jenkins管道,该管道在较高级别上执行以下步骤:
我希望在对特定分支进行提交时执行此管道。我现在正在工作,但是问题是,当作业在构建过程中提交新更改时(在上面的步骤5中),它启动了一个新构建并实质上进入了无限循环。
我知道现在这是设计使然,但是是否有办法阻止新的构建作业执行?我可以在Jenkins管道中做一些事情来防止新提交启动新的Jenkins作业,还是需要整个工作流程的重做?
答案 0 :(得分:0)
您可以使用generic-webhook-plugin,
例如,只要开发人员向分支机构提交某些内容,Jenkins中的GitHub webhooks就会触发构建,在每个webhook中,我们都有以下信息
git repository name
branch which was changed
commit id
commit message
commit author
etc ...
避免循环
以下代码段可能会有所帮助或相应地进行更改,因此不会产生外观
#!/bin/bash
webhook_commit_id=$commit
commit_by_jenkins=commit_by_jenkins.txt
if [ ! -f $commit_by_jenkins ]
then
echo "creating local file name commit_by_jenkins.txt, please add this file to git ignore"
touch commit_by_jenkins.txt
fi
jenkins_commit=`cat commit_by_jenkins.txt`
if [ "${webhook_commit_id}" == "${jenkins_commit}" ]; then
echo "commit by jekins server, ignoring commit"
else
echo "commiting code from jenkins servver"
git add -A && git commit -m "commit by jenkins server" && git rev-parse HEAD > commit_by_jenkins.txt
fi