Как мне предотвратить застревание CI в цикле из-за изменения номера сборки?

#xcode #git #jenkins #versioning #fastlane

#xcode #git #дженкинс #управление версиями #fastlane

Вопрос:

У меня есть проект Xcode (iOS) на GitHub. Всякий раз, когда я отправляю изменения на GitHub, я хочу, чтобы он отправлял новую версию в TestFlight.

Это моя текущая настройка:

  1. Дженкинс опрашивает master ветку, когда доступна новая фиксация, запускается Fast Lane.
  2. Fast lane увеличивает номер сборки и загружает в TestFlight.
  3. Fast lane фиксирует увеличение номера сборки и возвращает изменение к master .

Проблема в том, что эта новая фиксация master приводит к повторному выполнению шага 1, таким образом, он находится в бесконечном цикле.

Каков рекомендуемый способ решения этой проблемы?

Комментарии:

1. Согласно этому комментарию , может существовать способ отфильтровывать коммиты определенного пользователя во время опроса в Jenkins. Попробую это, когда у меня будет возможность, и сообщу об этом.

Ответ №1:

мы используем специальные сообщения о фиксации, когда Дженкинс фиксирует изменения, пропуская 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   "amp;myuser="   user.getName()
    new URL(triggerUrl).getText()