4

我在 Jenkins 2.1 多分支管道上苦苦挣扎,我从同一个 git 存储库构建了多个工件。一些工件是独立的,应该在其各自目录中的更改上触发构建。有些是依赖的,应该由先前的步骤/构建触发。

存储库有一个控制整个管道的 Jenkinsfile。Jenkins Multibranch Pipeline 作业触发所有更改(无其他行为)。

我看不到如何构建工件 A 以触发目录 dirA 中的更改。

位于 file:///repopath 的 git repo 中的 Jenkinsfile 如下所示:

node(){
  stage 'Build A'
    checkout([$class: 'GitSCM',
      branches: [[name: '*/master']],
      doGenerateSubmoduleConfigurations: false,
      extensions: [
        [$class: 'PathRestriction',
          excludedRegions: '.*',
          includedRegions: 'dirA/.*'],
      [$class: 'RelativeTargetDirectory',
        relativeTargetDir: 'sub']],
        submoduleCfg: [],
        userRemoteConfigs: [[url: 'file:///repopath']]])
    sh './buildA.sh'
}
node(){
   stage 'Build B'
   ...
}
...

这将始终触发 buildA.sh 的运行 :-(

我正在使用以下插件:

  • Git客户端插件1.19.6
  • Git 插件 2.4.4
  • Git 服务器插件 1.6
  • 管道 2.0
  • 管道:API 2.0
  • 管道:基本步骤 2.0
  • 管道:构建步骤 2.0
  • 管道:Groovy 2.1
  • 管道:输入步骤 2.0
  • 管道:工作 2.1
  • 管道:多分支 2.3
  • 管道:节点和进程 2.0
  • 管道:REST API 插件 1.3
  • 管道:SCM 步骤 2.0
  • 管道:共享 Groovy 库 2.0
  • 管道:阶段步骤 2.0
  • 管道:舞台视图插件 1.3
  • 管道:步骤 API 2.0
  • 管道:支持 API 2.0
4

1 回答 1

1

不如做类似的事情

git log --pretty=format: --name-only -n 15 | sort | uniq

?? 如果您可以确定构建中的提交次数或其哈希值,那将回答您的问题。

于 2016-06-15T21:33:52.557 回答