我有一个不包含Jenkinsfile的存储库 - 我无法影响存储库本身。这意味着我既不能将任何文件添加或更改到存储库中(在这种情况下,它是Qt repo)。
我想要做的是创建多个Jenkins文件,分别为不同的目标配置和构建Qt库,或运行不同的附加脚本。
所有这些Jenkins文件都将收集在不同的存储库中。
现在,我的问题是如何创建一个管道作业,一旦Qt存储库发生更改就会被触发,但是使用来自其他存储库的Jenkins文件。
研究离开了我 - 据我所知,并根据to these posts - 有两个选项:
将两个存储库添加到“定义”部分 - 类似于以下内容:
不幸的是,这对我不起作用,因为两个存储库仍然需要一个Jenkins文件。此外,我无法为每个存储库指定不同的分支,因此我无法侦听特定的Qt Version分支。
我看到的第二个(好的,可能是唯一的)选项是创建一个自由式Jenkins作业,它只监听Qt存储库并触发更改管道作业的构建作为其唯一的动作
我认为,第二种方法对我有用,但我想知道的是,是否有任何插件,配置选项或我错过的任何可以更清洁的方式解决这个问题,或者上述是否是这样做的方式。
答案 0 :(得分:4)
为什么不创建使用常规"民意调查SCM"来监控QT回购的Jenkins自由式工作。方法?
然后让Freestyle工作启动一个或多个Jenkins管道工作。
你可以在SCM管道工作点指向管道" jenkinsFile" groovy脚本直播(你控制的回购)。
在管道代码中,您可以使用管道SCM DSL步骤从Qt仓库(不受您控制的那个)中提取代码,然后执行所有构建,测试或其他任何操作。
您可以将Qt Repo的URL和修订版作为参数从轮询作业传递到管道中。
答案 1 :(得分:2)
您是否考虑过从您的Git服务器触发Jenkins作业的webhook?这样你可以有任意的repos触发你的构建,并减少由Jenkins的定期民意调查导致的Git服务器上的流量。
背后的原则是Jenkins提供URL for your build工作(例如http://your-jenkins.domain/job/JOBNAME/build?token=TOKEN
)开始你的工作。另一方面,Git可以注册一个所谓的hook,只要对存储库进行推送就会触发它。每当有人推送到您的存储库时,向您的Git挂钩添加HTTP请求将触发Jenkins作业。
答案 2 :(得分:-2)
您可以配置构建触发器,以检查存储库中是否有更改:构建触发器 - >民意调查SCM 。您可以在那里配置时间表:
例如if (isset($_POST["sub"])) {
$query= "UPDATE course_reg set grade=";
$values = $_POST['grade'];
foreach ($values as $a){
$valuesArr[] = mysql_real_escape_string($a);
$grade_upp=mysqli_query($con,$query.mysql_real_escape_string($a));
// if your values are strings, you need to put them into '
// and you might want to add a WHERE clause to your update
}
每分钟检查一次或* * * * *
每小时检查一次。