Как Дженкинс справляется с параллельными этапами - PullRequest
0 голосов
/ 23 января 2020

Я выполняю некоторые этапы в моем конвейере параллельно:

parallel {
  stage('A') {
    steps {
      script {
        ...
      }
    }
  }
  stage('B') {
    steps {
      script {
        ...
      }
    }
  }
}

Мне интересно, как Дженкинс справляется с этим на заднем плане и есть ли способ повлиять на это. Насколько я вижу, по умолчанию обе параллельные ветви выполняются в одной рабочей области.

У меня есть 2 вопроса по этому поводу:

  1. Что произойдет, если вы выполните stash/unstash в одной из параллельных ветвей (ветка А)? Повлияет ли это также на ветку B? (Я полагаю, да)
  2. Есть ли какой-либо (простой) способ сделать параллельные ветви независимыми, например, для случая, когда в ветви A что-то модифицировано, что вам не нужно в ветви B, или когда обе ветви пытаться получить доступ к тем же файлам? Я полагаю, что вы можете использовать stash перед частью parallel и использовать отдельные рабочие пространства для каждой ветви, и unstash в них, но это не совсем просто ...

1 Ответ

0 голосов
/ 23 января 2020

Мне очень нравится эта функция от Дженкинса. Но вернемся к вашему вопросу

1) Я работаю в том же рабочем пространстве, что и многообработка. Это означает, что все обработчики файлов, переменные среды одинаковы. Ответ - да влияет

2) делает параметры параллельных ветвей независимыми: - запуск в другой папке - запуск параллельного внешнего задания в полной изоляции. Положите результаты в хранилище артефактов / s3 /. затем повторно использовать в основной работе. Довольно хороший сценарий. легко отслеживать полностью изолированный, отделенный журнал. Но вы должны хранить сборки на внешнем хранилище.

ИМХО. Я бы предпочел иметь отдельную работу. это проще с точки зрения обслуживания. И вы можете ссылаться на сбой сборки в случае сбоя. перестроить только для части работы.

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...