【问题标题】:How do I prevent CI from being stuck in a loop due to bumping the build number?如何防止 CI 因构建编号冲突而陷入循环?
【发布时间】:2019-08-04 14:18:31
【问题描述】:

我在 GitHub 上有一个 Xcode (iOS) 项目。每当我将更改推送到 GitHub 时,我希望它能够将新版本推送到 TestFlight。

这是我目前的设置:

  1. Jenkins 轮询master 分支,当有新的提交可用时,它会启动 Fast Lane。
  2. 快速通道增加内部版本号并上传到 TestFlight。
  3. 快速通道提交内部版本号增加并将更改推送回master

问题是master 上的这个新提交导致步骤 1 再次执行,因此它处于无限循环中。

解决此问题的推荐方法是什么?

【问题讨论】:

  • 根据this comment,可能有一种方法可以在 Jenkins 中进行轮询时过滤掉某个用户的提交。当我有机会时会尝试并报告。

标签: xcode git jenkins versioning fastlane


【解决方案1】:

我们在 Jenkins 提交更改时使用特定的提交消息skip ci

并创建了一个专用函数。

def call() {
    haveSKIPCICommit = sh (script: "git show --name-status | grep '\\[skip ci\\]'", returnStatus: true)
    if(haveSKIPCICommit == 0){
        return true
    }
    return false
}

为了完成流程,我们的 Jenkinsfile 使用这个函数来检查应该使用哪个流程。

【讨论】:

    【解决方案2】:

    我不得不

    1. 定义一个 gitblab 用户并使用它来推送更改。
    2. 将我的 jenkins 作业更改为参数化作业,并为用户名 (myuser) 定义一个参数。
    3. 在我的钩子中添加用户名

      def triggerUrl = jenkinsUrl + "/job/" + jenkinsJob + "/buildWithParameters?token=" + jenkinsToken + "&myuser=" + user.getName()
      new URL(triggerUrl).getText()
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-10
      • 1970-01-01
      • 2016-01-04
      • 1970-01-01
      • 2019-03-10
      相关资源
      最近更新 更多