pha*_*aja 122 git hook commit jenkins
如何从Jenkins远程触发构建?
如何配置Git post commit hook?
我的要求是,只要在特定项目的Git存储库中进行了更改,它就会自动为该项目启动Jenkins构建.
在Jenkins触发器构建部分中,我远程选择了触发器构建.
在.git目录中,钩子目录就在那里我们必须配置post commit文件.
我很困惑如何从那里触发构建(我知道一些部分我们应该使用curl命令).
curl cmbuild.aln.com/jenkins/view/project name/job/myproject/buildwithparameters?Branch=feat-con
Run Code Online (Sandbox Code Playgroud)
我已将此命令放在我的git服务器hooks目录中(post commit hook).
每当存储库中发生更改时,它就会运行自动构建.
我想检查一下变更集是否至少有一个java文件是否应该开始构建.
假设开发人员只更改了构建不应该启动的xml文件或属性文件.
与此同时xml,假设.java文件在那里,应该开始构建.
Von*_*onC 157
正如" 轮询必须死掉:从git钩子触发Jenkins构建 "中所提到的,您可以通知Jenkins新的提交:
使用最新的Git插件1.1.14(我现在刚刚发布),您现在可以通过简单地执行以下命令来更轻松地执行此操作:
Run Code Online (Sandbox Code Playgroud)curl http://yourserver/jenkins/git/notifyCommit?url=<URL of the Git repository>这将扫描配置为检出指定URL的所有作业,如果它们也配置了轮询,它将立即触发轮询(如果找到值得构建的更改,则将依次触发构建. )
这允许在Jenkins中作业进出时脚本保持不变.
或者,如果在单个存储库宿主应用程序(例如Gitosis)下有多个存储库,则可以与所有存储库共享一个post-receive钩子脚本.最后,即使对于安全的Jenkins,此URL也不需要身份验证,因为服务器不直接使用客户端发送的任何内容.在实际开始构建之前,它会运行轮询以验证是否存在更改.
作为这里所说的,请务必使用正确的地址为您詹金斯服务器:
因为我们在端口8080上运行Jenkins作为独立的Web服务器,所以URL应该没有
/jenkins,如下所示:Run Code Online (Sandbox Code Playgroud)http://jenkins:8080/git/notifyCommit?url=git@gitserver:tools/common.git
这可能是显而易见的,但我遇到了以下问题:
Run Code Online (Sandbox Code Playgroud)curl http://yourserver/jenkins/git/notifyCommit?url=<URL of the Git repository>.该URL参数应该正是你在匹配库网址您的詹金斯工作.
在复制示例时,我遗漏了协议,在我们的情况下ssh://,它没有用.
您还可以在"用一个简单的后收到钩状基于推送的使用詹金斯和GIT建立 "
#!/bin/bash
/usr/bin/curl --user USERNAME:PASS -s \
http://jenkinsci/job/PROJECTNAME/build?token=1qaz2wsx
Run Code Online (Sandbox Code Playgroud)
将Jenkins作业配置为能够"远程触发构建"并使用身份验证令牌(
1qaz2wsx在此示例中).
但是,这是一个特定于项目的脚本,作者提到了一种概括它的方法.
第一种解决方案更容易,因为它不依赖于身份验证或特定项目.
我想检查更改集是否应该启动构建中至少有一个java文件.
假设开发人员只更改了XML文件或属性文件,那么构建不应该启动.
基本上,您的构建脚本可以:
git notes在第一次通话时加上"构建"注释(请参阅参考资料)HEAD构建的分支候选者和git notes'build'(git show refs/notes/build)引用的提交之间的提交列表:git diff --name-only SHA_build HEAD.git notes' build' HEAD.
curl --user USER:PWD http://JENKINS_SERVER/job/JOB_NAME/build?token=YOUR_TOKEN如果你在项目中设置了触发器配置,你可以使用它
我想通过一些shell脚本添加它,你可以避免手动url配置,特别是如果你在公共目录下有很多存储库.
例如,我使用这些参数扩展来获取repo名称Run Code Online (Sandbox Code Playgroud)repository=${PWD%/hooks}; repository=${repository##*/}然后使用它像:
Run Code Online (Sandbox Code Playgroud)curl $JENKINS_URL/git/notifyCommit?url=$GIT_URL/$repository
Nav*_*Nav 16
希望这会有所帮助:http://nrecursions.blogspot.in/2014/02/how-to-trigger-jenkins-build-on-git.html
这只是curl使用git提供的git钩子来触发Jenkins作业的问题.
命令
curl http://localhost:8080/job/someJob/build?delay=0sec
Run Code Online (Sandbox Code Playgroud)
可以运行Jenkins作业,其中someJob是Jenkins作业的名称.
hooks在隐藏的.git文件夹中搜索该文件夹.将post-commit.sample文件重命名为post-commit.用记事本打开它,删除该: Nothing行并将上面的命令粘贴到其中.
而已.无论何时进行提交,Git都会触发文件中定义的提交后命令.
| 归档时间: |
|
| 查看次数: |
180751 次 |
| 最近记录: |