【问题标题】:Jenkinsfile Step Check if Files Changed in Directory?Jenkinsfile 步骤检查目录中的文件是否更改?
【发布时间】:2020-10-30 21:19:24
【问题描述】:

我在这里不合群,所以如果这很难理解,请原谅我。我想要完成的是在我的 Jenkinsfile 设置中的拉取请求期间检查某个目录中是否有任何文件发生更改。如果与develop 分支相比,有文件发生了变化,我想运行特定阶段。这是一个声明性管道。举个例子吧:

stage('Publish Common Module') {
  when {
   // can I check if projects/common/ has any files that are different compared to develop?
   // if so, then I want to run the steps in this stage
  }
}

我不确定这是否为我想要完成的工作提供了足够的背景。这种设置的原因是,有多个阶段会根据该模块的 PR 中是否有更改来构建模块。

如果这些信息不足以获得准确的答案,我们深表歉意。

【问题讨论】:

  • 你使用类似git diff --name-only develop
  • 太棒了。唯一的问题是我如何有条件地检查这个,如果有差异,运行我需要运行的命令?

标签: jenkins jenkins-plugins


【解决方案1】:

我查看了this,我认为最好的方法是这样做:

stage('Publish Common Module') {
    script{
        if(0 != sh(script: "git diff --exit-code develop", returnStatus: true)){
            // run your stage
        }
    }
}

exit-code 标志导致 git 在与开发相比发生更改时返回 0 以外的值。返回此退出代码(因为 returnStatus)并与 0 进行比较。

我不使用声明性管道,所以我不知道您是否也可以将条件移动到 when 块中。

【讨论】:

  • 对不起,我还没有回到这个问题上。我在第 2 行收到了一个意外的错误 (,我还无法追踪。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-10
  • 1970-01-01
  • 2015-11-11
  • 1970-01-01
  • 2018-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多