我刚刚发现Bitbucket在推送到分支时不允许选择特定的挂钩。它只调用所有的钩子,然后启动所有Jenkins的工作。
我的解决方案是在安装了Jenkins的计算机上创建一个特定文件,并将Bitbucket挂钩设置为此文件。(例如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);还有,



