Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Github 防止git推入同一作业导致Jenkins生成_Github_Jenkins_Jenkins Plugins_Jenkins Pipeline - Fatal编程技术网

Github 防止git推入同一作业导致Jenkins生成

Github 防止git推入同一作业导致Jenkins生成,github,jenkins,jenkins-plugins,jenkins-pipeline,Github,Jenkins,Jenkins Plugins,Jenkins Pipeline,我已经编写了一个Jenkins文件,用于Jenkins中的GitHub组织对象。Jenkins文件的一部分是纠错的,并且经常对项目进行更改。在管道的最后,Jenkins将更改提交到我们的git存储库 现在我已经完成了所有这些工作,我意识到在将更正推送到回购协议时,刚刚运行并更正错误的同一个作业将再次运行,因为它是由Webhook触发的。它不会是一个无限循环,因为在第一次运行后不会有错误需要纠正,但它会比需要运行的时间多运行一次 作业所做的更改最终触发作业这一事实是有问题的,因为管道包括部署步骤。

我已经编写了一个Jenkins文件,用于Jenkins中的GitHub组织对象。Jenkins文件的一部分是纠错的,并且经常对项目进行更改。在管道的最后,Jenkins将更改提交到我们的git存储库

现在我已经完成了所有这些工作,我意识到在将更正推送到回购协议时,刚刚运行并更正错误的同一个作业将再次运行,因为它是由Webhook触发的。它不会是一个无限循环,因为在第一次运行后不会有错误需要纠正,但它会比需要运行的时间多运行一次

作业所做的更改最终触发作业这一事实是有问题的,因为管道包括部署步骤。在一行中重新部署同一代码两次感觉就像是编写糟糕的管道的结果。也就是说,除了在最后一条提交消息中搜索关键字外,我无法找到一种好方法使作业的提交不会触发作业。有没有一种不那么老套的方法来解决这个问题

编辑:我知道ci skip插件,但我无法找到使其在声明性管道中工作的文档。我更喜欢一种方法,它允许我在构建开始时使用默认的scm签出步骤来执行某些操作


编辑2:每次管道开始查看消息是否包含文本[ci skip],我都会运行最后一条提交消息的grep。它是脏的,但如果将其放置在管道的设置阶段,它就可以工作。

在签出git repo的配置中,您可以在那里指定忽略某些提交消息的高级签出行为,而不是使用代码来执行此操作。然而,我不确定github组织的工作是否可以做同样的事情

另一种选择是,如果更改仅限于某些目录,则忽略某些目录,否则这些目录通常不会更改。同样,我不确定github组织是否支持这一点


可能不要使用webhook触发器,但这不是首选选项

遗憾的是,这种类型中没有作业级别配置。它只扫描组织中的所有repo,对于任何具有Jenkinsfile的repo,它根据声明性Jenkinsfile设置作业。