在Jenkins中为特定目录提交触发作业

ghg1uchk  于 2022-11-01  发布在  Jenkins
关注(0)|答案(3)|浏览(205)

我有存储库结构
myproject/ ¦ ¦--jobs/ ¦ ¦--job1/{job1 directories & files} ¦ ¦--job2/{job2 directories & files}
两个Jenkins作业job1用于第一路径,job2用于第二路径。因此,如果提交在job1目录路径上,job1应该触发,如果提交在job2目录路径上,job2在Jenkins中应该触发。但问题是合并拉取请求被合并到主服务器,即使提交仅是其中一个作业路径,也会触发两个作业。

yqhsw0fo

yqhsw0fo1#

这不是一般的情况,我想你有两个办法。
1.拥有两个独立的存储库(将commons作为一个库保存),这并不容易。
1.在Jenkins中做一个调整
1.如果可能的话,在你的存储库中编写一个相同类型的逻辑(如下所示)。
这里有一种方法可以在Jenkins(我的观点2)中实现这一点。

  • 一个问题是 两个Jenkins将开始,但一个将在未完成Jenkins作业时终止。*

您可以为此编写一个bash脚本。如果提交的文件在job 2目录下,JOB-1中的逻辑将终止,JOB-2也是如此(如果文件来自job 2目录,则终止)

添加此脚本并运行(作为第一个)Job-1 jenkins


# !/bin/bash

# Get count of job2 directory files

count_of_job2_files=`git show --pretty="format:" --name-only <commitID> | grep "job2/" | wc -l` 

# if Job2 dir files are more than 0 then termiate the jenkins job

[ $count_of_job2_files -gt 0 ] && exit 0 ;

在job 2 jenkins中添加为相同类型的脚本。

**注意:**编写逻辑时假设您使用git作为仓库

yebdmbv4

yebdmbv42#

已找到解决方案,使用ScriptTrigger插件并在轮询时写入脚本,它将检查特定目录的提交。

kg7wmglp

kg7wmglp3#

这个问题是我第一次在谷歌上搜索到的,所以让我把我后来的发现贴出来:Jenkins现在有一个内置的。

相关问题