B.T*_*and 3 git github jenkins
我在 GIT 中有我的代码库。代码库中有 5 个文件,即
我想仅在文件 2 更改时触发 jenkins 构建。请注意,在触发构建后,它应该拉取整个代码库。
我尝试使用 poll SCM,但问题是如果存储库中的任何文件发生更改,就会触发构建。我只想在文件 2 更改时触发它。
是否可以?
这是我将如何做到的。
Trigger builds remotely.这将启用形式为 的构建触发器 URL JENKINS_URL/job/MYJOB/build?token=TOKEN_NAME。您必须自己指定令牌名称。
钩子的脚本通常在.git/hooks/post-receive. post-receive hook 在整个过程完成后运行,可用于更新其他服务或通知用户。
一个 post-receive 钩子从标准输入中获取它的参数,形式为<oldrev> <newrev> <refname>.
您可以从新的 HEAD 提交中检索文件列表,然后仅在包含File2. 像这样的东西(未测试):
#!/bin/bash
while read oldrev newrev refname
do
# list of changed files for a commit
filelist=$(git diff-tree --no-commit-id --name-only -r $newrev)
if [[ $filelist == *"File2"* ]]; then
# call the URL according to your build trigger config
fi
done
Run Code Online (Sandbox Code Playgroud)
在 Jenkins 中配置 git checkout 时,有一个按钮可以添加其他行为。其中一种选择是Polling ignores commits in certain paths. 我还没有真正使用过它,但据我所知,这将满足您的需求。有包括和排除选项。我相信你只会使用包含。
| 归档时间: |
|
| 查看次数: |
14102 次 |
| 最近记录: |