我的git项目是这样的:
testproject/code/b2b/admin/...
testproject/code/b2b/app/...
testproject/code/b2c/admin/...
testproject/code/b2c/app/...
在“附加行为”部分中,我使用工作区添加强制轮询。并且还添加Polling忽略某些路径中的提交。
在包含区域,我写了
code/b2b/admin/.*
code/b2c/admin/.*
在构建触发器部分,我在Poll SCM中写了* * * * *
但是,无论我在哪里更改了testproject中的代码,它都不会触发。
答案 0 :(得分:1)
该轮询插件确实seem to be broken,但作为Jenkins 1.x解决方法,您可以使用下游作业,该条件步骤开始,利用git whatchanged
命令
git whatchanged "${GIT_PREVIOUS_SUCCESSFUL_COMMIT}".."${GIT_COMMIT}" | grep '^:' | cut -f 2 | grep '^{path}/'
这是一个更有用的代码段,利用Jenkins Job Builder代码中的whatchanged
。
builders:
- conditional-step:
on-evaluation-failure: dont-run
condition-kind: or
condition-operands:
- condition-kind: shell
condition-command: |
if [[ -z "${{GIT_PREVIOUS_SUCCESSFUL_COMMIT}}" ]]; then
echo 'GIT_PREVIOUS_SUCCESSFUL_COMMIT was empty'
elif [[ "${{GIT_PREVIOUS_SUCCESSFUL_COMMIT}}" != "${{GIT_COMMIT}}" ]]; then
git whatchanged "${{GIT_PREVIOUS_SUCCESSFUL_COMMIT}}".."${{GIT_COMMIT}}" | grep '^:' | cut -f 2 | grep '^{path}/'
else
# This should have been selected earlier as the build-cause operand of the conditional step...
echo 'previous and current commits match, implying the job is kicked off manually'
fi
steps:
- trigger-builds:
- project: 'downstream job'
condition: SUCCESS
block: true
predefined-parameters: |
GITREF=${{GIT_COMMIT}}
答案 1 :(得分:0)
如果testproject /是你的git存储库的根路径,那么你的正则表达式是正确的。我认为这是问题所在:Jenkins GIT Plugin Bug