如何从没有jenkinsfile的存储库触发Jenkins管道构建?

时间:2016-12-13 08:01:42

标签: jenkins jenkins-pipeline jenkinsfile

我有一个不包含Jenkinsfile的存储库 - 我无法影响存储库本身。这意味着我既不能将任何文件添加或更改到存储库中(在这种情况下,它是Qt repo)。

我想要做的是创建多个Jenkins文件,分别为不同的目标配置和构建Qt库,或运行不同的附加脚本。
所有这些Jenkins文件都将收集在不同的存储库中。

现在,我的问题是如何创建一个管道作业,一旦Qt存储库发生更改就会被触发,但是使用来自其他存储库的Jenkins文件。

研究离开了我 - 据我所知,并根据to these posts - 有两个选项:

  • 将两个存储库添加到“定义”部分 - 类似于以下内容:
    enter image description here 不幸的是,这对我不起作用,因为两个存储库仍然需要一个Jenkins文件。此外,我无法为每个存储库指定不同的分支,因此我无法侦听特定的Qt Version分支。

  • 我看到的第二个(好的,可能是唯一的)选项是创建一个自由式Jenkins作业,它只监听Qt存储库并触发更改管道作业的构建作为其唯一的动作

我认为,第二种方法对我有用,但我想知道的是,是否有任何插件,配置选项或我错过的任何可以更清洁的方式解决这个问题,或者上述是否是这样做的方式。

3 个答案:

答案 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作业。

这个SO Post解释了如何使用任何Git服务器设置这样的钩子。还有GitlabGithub的教程。

答案 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 } 每分钟检查一次或* * * * *每小时检查一次。