当前位置: 首页 > 面试题库 >

是否可以仅从一个特定分支触发詹金斯?

仲璞瑜
2023-03-14
问题内容

我的情况如下:回购中有三个分支:master,dev和staging。对于这些分支中的每个分支,我都有一份工作,在詹金斯的“构建分支”部分中进行了配置。原点/母版,原点/开发,原点/阶段。

每当通过存储库挂钩对存储库进行更改时,Bitbucket都会触发构建作业。(https://confluence.atlassian.com/display/BITBUCKET/Jenkins+hook+management)。

但是,当我努力掌握时,所有工作开始建立,其他两个工作也一样。

我希望仅当我按下master分支时才能构建Jenkins的“ master”作业。詹金斯将“开发”工作转移到开发分支。詹金斯将工作“分期”到开发阶段。

有没有办法控制这种行为?


问题答案:

我刚刚发现Bitbucket在推送到分支时不允许选择特定的挂钩。它只调用所有的钩子,然后启动所有Jenkins的工作。

我的解决方案是在安装了Jenkins的计算机上创建一个特定文件,并将Bitbucket挂钩设置为此文件。(例如html" target="_blank">http:// {jenkins
url}:{apache端口} /check.php)

请注意,此apache端口与Jenkins的端口不同,但与Apache的端口相同。就我而言,Jenkins的运行速度为8080,Apache的运行速度为7777。这样做是为了运行php脚本,但不在Jenkins的目录中。

由于Bitbucket挂钩发送了一个json文件,因此我能够在check.php中验证哪个分支已被推送。参考:POST挂钩管理

使用简单的“ if”进行验证后,我只是调用了正确的url以使用exec_curl开始正确的作业,例如:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, http://{jenkins url}:{jenkins port}/job/{job name}/build?token={job token});
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);

还有,



 类似资料:
  • 有人能告诉我如何设置jenkins以基于特定标记的git repo进行构建吗?我已经做了一些搜索,并试图设置一个工作来构建一个特定的标签,请参阅:Jenkins Git插件:如何构建特定的标签?但我只能从主分支获取最新的提交。 这是给詹金斯的2.54分。我在SCM下设置了以下内容。 我允许所有分支触发这项工作。我有一个用jenkins-test1标记的提交。0,当我从gitlab测试webhook

  • 不过,我仍然希望Jenkins担任指挥,这样我们的管道对不在我们团队中的人来说就更明显了。 有很多关于从DevOps触发Jenkins的信息,但我还没有找到任何支持我们需要的东西。这可能吗?你能分享一些例子吗?

  • 我目前正在测试Jenkins2.0的管道方法,看看它是否适用于我所使用的构建环境。 另外,如果上游的一个分支发生更改,则不能为所有分支触发整个下游构建。这将创建太多的平等构建。

  • 问题内容: 我有两个工作,JobA和JobB,JobA每天的运行时间为13.00,并记录一些付款。我希望JobA触发JobB来验证付款,仅当JobA成功且JobB需要在第二天04.00运行时 任何想法如何做到这一点? BR 问题答案: 我还没找到能开箱即用的东西。当然,您可以安排要定期构建的作业,但这不是您想要的全部。 您可以尝试以下两种想法之一(我自己也没有实现)。 将JobB设置为在凌晨4点定

  • 我试图通过在提交钩子中使用这个URL来触发我的Jenkins项目 而且不会被触发。但当我在web浏览器中键入此URL时,它会触发我的生成。 当我在命令提示符下尝试时,出现了一个错误 错误404 谁能告诉我我做错了什么??

  • 问题内容: 我试图通过在提交钩子中使用此URL来触发我的Jenkins项目 并且没有被触发。但是,当我在Web浏览器中键入此URL时,它将触发我的构建。 当我在命令提示符下尝试时,出现错误 错误404 例外: Stacktrace: 由Winstone Servlet Engine v0.9生成。 2014年4月22日星期二10:10:10 有人可以告诉我我在做什么错吗? 问题答案: 首先,按照E