触发Jenkins在GitHub PUSH上的工作到特定的分支

时间:2016-05-08 12:12:13

标签: git github jenkins

我试图将基于GitHub PUSH的作业触发到某个分支。

我在没有时间表的情况下设置了JENKINS_URL/git/notifyCommit?url=REPO_URLPoll SCM的webhook。

每个push都会触发这项工作,但我无法过滤掉这个分支 - 我希望它只会在需要掌握的情况下发生。

3 个答案:

答案 0 :(得分:0)

你必须为此目的使用git hook。

git hook将分支名称作为参数。

Hook code

#!/bin/sh

while read oldrev newrev refname
do
    branch=`echo $refname | cut -d'/' -f3`

    ###
    # Do whatever you want to do here with the branch name
    ###

done

答案 1 :(得分:0)

您可以参考以下答案:Trigger build in jenkins on specific branch in bitbucket

  

我刚刚发现Bitbucket不允许选择具体的   钩到推动任何分支。它只是调用所有钩子   开始所有詹金斯工作。

My solution was to create an specific file on my machine which Jenkins is installed and set a Bitbucket hook to this file. (e.g.
     

http:// {jenkins url}:{apache port} /check.php)

Note that this apache port is not the same of Jenkins', but Apache's. In my case, Jenkins was running at 8080 and Apache at 7777.
     

这样做是为了运行php脚本,但不是在Jenkins的目录中。

Since Bitbucket hook sends a json file, I was able to verify in check.php which branch has been pushed on. Reference: POST hook
     

管理

After the verification using a simple 'if', I just called the right url to start the right job with exec_curl, like:

$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);

And voilà.

答案 2 :(得分:0)

我最初是在寻找一些插件,但没有找到任何符合您要求的插件。

最初,我曾经创建一个单独的作业并在其中检测分支,而不是仅在下游构建另一个作业。

这就是我所做并成功实现的目标。该功能已经在Jenkins中提供,我们不必为此安装任何插件。

我认为,波纹管将使所有事情变得清晰。

enter image description here

因此,如果我们只想在将更改推送或合并到TEST分支时才触发作业,则可以执行此操作。

  

最简单的解决方案。没有脚本,没有插件。单击高级按钮以添加refspec,该默认情况下是隐藏的,同时在“源代码管理”部分中添加存储库网址

有关完整信息,请阅读我的博客