Как я могу предотвратить застревание CI в цикле из-за увеличения номера сборки? - PullRequest
0 голосов
/ 13 марта 2019

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

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

  1. Jenkins polls master ветвь, когда новый коммит доступен, он запускает Fast Lane.
  2. Fast Lane увеличивает номер сборки и загружает в TestFlight.
  3. Fast Lane фиксирует увеличение номера сборки и возвращает изменение к master.

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

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

Ответы [ 2 ]

1 голос
/ 15 марта 2019

мы используем определенные сообщения о фиксации, когда 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 использует эту функцию, чтобы проверить, какой поток следует использовать.

0 голосов
/ 13 марта 2019

Мне пришлось

  1. определить пользователя gitblab и использовать его для отправки изменений.
  2. изменить задание jenkins на параметризованное и определить параметр для имени пользователя (myuser).
  3. добавить имя пользователя в мой хук

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