詹金斯包括地区不工作甚至选择使用工作空间强制轮询

时间:2014-06-06 05:59:58

标签: git

  • git 1.5.4
  • jenkins 1.563
  • git plugin 2.2.1

我的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中的代码,它都不会触发。

2 个答案:

答案 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)

重复this post

如果testproject /是你的git存储库的根路径,那么你的正则表达式是正确的。我认为这是问题所在:Jenkins GIT Plugin Bug