如何避免Jenkins触发Jenkinsfile中的git命令

时间:2017-07-26 01:14:57

标签: jenkins jenkins-plugins jenkins-pipeline

只要我按下我的远程分支,Jenkins就会触发。然后使用我的Jenkinsfile脚本运行管道。

在jenkinsfile中我git push标签,然而这个命令再次触发Jenkins并启动另一个构建,然后运行git push标签导致无限循环。

如何在jenkinsfile中避免jenkins触发git命令?
我花了一个多星期寻找解决方案,似乎没有任何工作,谢谢。

3 个答案:

答案 0 :(得分:0)

通常,Jenkins使用a (non-Jenkinsfile) refspec like refs/tags/*

触发构建

为避免这种情况,您可以指定if population < 10000 { message = "\(population) is a pretty small town" }else if population >= 10000 && population < 50000 { message = "\(population) is a medium sized town" }else if(// some condition here){ message = "\(population) is a very large town!" }else { } (作为seen here)或check issue 507并取消选中“轻量级结帐”以避免获取代码。

答案 1 :(得分:0)

我假设您使用的是 Multibranch Pipeline GitHub / Bitbucket Organization

您可以抑制分支源配置下所有或指定分支的自动SCM触发

enter image description here

答案 2 :(得分:0)

您可以使用Generic Webhook Trigger Plugin执行此操作。

有许多替代方案,如:

  • 如果提交消息具有特殊格式,则不会触发。
  • 如果特定用户推送提交,则不会触发。就像Je​​nkins中使用的特殊用户一样。

来自其中一个测试用例:

public function render($request, Exception $exception)
{
        $this->report($exception);

        if ($exception instanceof ModelNotFoundException ||
            $exception->getCode() == 403 ||
            $exception instanceof MethodNotAllowedHttpException) {
            if (!is_admin_site()) {
                 return view('user.403');
            }
            return view('admin.403');
        }

        if ($exception instanceof TokenMismatchException) {
            return view('admin.501');
        }

        return parent::render($request, $exception);
}