我正在尝试使用GitHub为项目设置Jenkins-ci。我已经给Jenkins安装了合适的插件。我希望Jenkins只在项目中有人推动master时运行构建脚本。到目前为止,我已经能够设置一个构建将触发任何时候任何人推到任何地方,但这太广泛了。我已经用Git上的post-receive service钩子做到了这一点。

我读过Jenkins的维基和一些教程,但这个细节缺失了……也许这和民意调查有关?或者应该在Git端进行工作,以便Git只在master更改时触发Jenkins ?


当前回答

与Jenkins的持续集成,在代码从Git命令/ GUI推送到存储库后:

Create a job in Jenkins with only job name and select type of the project freestyle. Click OK. The next page doesn't add anything - just click Save. Go to the your local Git repository where you have the source code and navigate to the .git/hooks folder. The hooks folder contains the few files. Check for the "post-commit". If not present, create a file, "post-commit" without a file extension: C:\work\test\\.git\hooks\post-commit Edit the "post-commit" file with the below command. Make sure it is present in your local source code hooks folder. curl -u userName:apiToken -X POST http://localhost:8080/jenkins/job/jobName/build?token=apiToken Example: curl -u admin:f1c55b3a07bb2b69b9dd549e96898384 -X POST http://localhost:8080/jenkins/job/Gitcommittest/build?token=f1c55b3a07bb2b69b9dd549e96898384 5. userName: Jenkins user name jobName: Job name of the build apiToken: To get your API token, go to your Jenkins user page (top right in the interface). It is available in the "Configure" menu on the left of the page: "Show API token" Make changes in your source code and commit the code to repository. Your job, http://localhost:8080/jenkins/job/Gitcommittest/, should be building.

其他回答

对于GitLab,使用以下步骤:

转到项目的设置→Web钩子 从Jenkins项目中输入“Build Now”URL作为推送事件URL: 例如http://server.com/jenkins/job/project_name/build?delay=0sec 单击“添加Web钩子”,然后测试钩子

然后,每当你提交到存储库时,web钩子就会被触发,并创建一个构建。确保在每次构建之前将Jenkins工作区设置为删除工作区,以便获得新代码的新副本。

从0.5版开始,针对Jenkins的GitHub插件可以在将更改推送到GitHub时触发构建。

管理Jenkins/配置系统/GitHub服务器 在jenkins job / git凭证和分支说明符上(给你想要查找的分支推送)

在github上的Webhook

我对本地git服务器的解决方案: 转到本地git服务器钩子目录,忽略现有的更新。示例并创建一个名为“update”的新文件,例如:

gituser@me:~/project.git/hooks$ pwd
/home/gituser/project.git/hooks
gituser@me:~/project.git/hooks$ cat update
#!/bin/sh
echo "XXX from  update file"
curl -u admin:11f778f9f2c4d1e237d60f479974e3dae9 -X POST http://localhost:8080/job/job4_pullsrc_buildcontainer/build?token=11f778f9f2c4d1e237d60f479974e3dae9

exit 0
gituser@me:~/project.git/hooks$ 

echo语句将显示在你的git推送结果下,令牌可以从你的jenkins作业配置中获取,浏览找到它。如果没有调用文件“update”,请尝试其他具有相同名称但没有扩展名为“sample”的文件。

这就是你所需要的

与Git无关,但下面我将帮助使用Mercurial详细配置Jenkins作业。它可能会帮助其他有类似问题的人。

安装URL触发器插件 进入作业配置页面,选择Poll SCM选项。设置为* * * * * 检查选项:[URLTrigger] -使用URL轮询。 现在您可以选择一些选项,如修改日期更改,URL内容等。 在选项中,选择“URL内容更改”,选择第一个选项“监控内容更改” 保存更改。

现在,通过一些测试签入触发对Mercurial存储库的一些更改。

查看Jenkins作业现在通过检测SCM更改来运行。当构建由于Mercurial的更改而运行时,您将看到文本Started by an SCM发生更改。Else,手动启动它的用户。