Leo*_*oso 8 java git continuous-integration bitbucket jenkins
我的情况如下:我在回购中有三个分支:master,dev和staging.我为这些分支中的每一个分配了一个工作,在Jenkins的"Branches to build"部分中进行了配置.origin/master,origin/dev,origin/staging.
只要存储库挂钩发生了对存储库的更改,Bitbucket就会触发构建工作.(https://confluence.atlassian.com/display/BITBUCKET/Jenkins+hook+management).
但是,当我推动掌握时,所有工作都开始构建,而其他工作也是如此.
我希望Jenkins"掌握"工作只有在我推动掌握分支时才能建立.詹金斯"开发"工作开发分支.詹金斯"上演"工作进行开发.
有没有办法控制这种行为?
你设置了民意调查吗?
https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin#GitPlugin-Pushnotificationfromrepository
...这将扫描配置为检出指定URL,可选分支的所有作业,如果它们也配置了轮询,它将立即触发轮询(如果找到值得构建的更改,将依次触发构建.)我们需要在作业上进行轮询配置,以便我们只触发应该从源树中的更改中踢出的作业.
我刚刚发现 Bitbucket 不允许在推送到分支时选择特定的钩子。它只是调用所有的钩子,然后启动所有 Jenkins 的工作。
\n\n我的解决方案是在安装了 Jenkins 的计算机上创建一个特定文件,并为该文件设置 Bitbucket 挂钩。(例如http://{jenkins url}:{apache port}/check.php)
\n\n请注意,此 apache 端口与 Jenkins 不同,而是 Apache 的。就我而言,Jenkins 运行在 8080,Apache 运行在 7777。这样做是为了运行 php 脚本,但不在 Jenkins 目录中运行。
\n\n由于 Bitbucket hook 发送一个 json 文件,我能够在 check.php 中验证哪个分支已被推送。\n参考:POST hook 管理
\n\n使用简单的“if”进行验证后,我只需调用正确的 url 即可使用 exec_curl 启动正确的作业,例如:
\n\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, http://{jenkins url}:{jenkins port}/job/{job name}/build?token={job token});\ncurl_setopt($ch, CURLOPT_HEADER, 0);\ncurl_exec($ch);\ncurl_close($ch);\n
Run Code Online (Sandbox Code Playgroud)\n\n瞧\xc3\xa0。
\n 归档时间: |
|
查看次数: |
10539 次 |
最近记录: |