GoCD вытащить из нескольких филиалов и развернуть в разных средах - PullRequest
0 голосов
/ 28 июня 2019

Я сейчас использую GoCD для автоматизации наших развертываний.

Это версии, которые я использую.

go-agent  17.10.0-5380
go-server 17.10.0-5380

Я хотел бы раскрыть случай, который я не смог исправить, просто настроив GoCD, я не смог найтивсе, что может мне помочь в этом, скорее всего, я что-то упустил; -)

Вот пример, который я хотел бы достичь:

У нас есть GIT-репозиторий: frontend-app

В этом репо каждый разработчик может вносить изменения в разные ветви в соответствии с этим соглашением об именах: dev-1, dev-2, ...

Цель достижения заключается в том, чтобы каждый раз, когда разработчик подталкиваетизменяется на dev-1, goCD примет эти изменения в этой ветке, соберет ее и развернет в нашей среде dev-1.

Если разработчик 2 перенесет изменения в dev-2, goCD примет эти изменения, соберите ихи развернуть в среде dev-2.

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

configure material branch glob pattern

Однако я не мог заставить это работать.

Второе, что я попробовалэто использовать несколько материалов.Чтобы иметь возможность иметь несколько материалов, вам необходимо настроить материал, задав ему конкретный каталог назначения.Как вы можете видеть на прикрепленном скриншоте:

configure multiple materials with destination directory

При таком подходе я смог получить goCD для получения новых изменений и проверки репо на конкретномКаталог назначения.

Для моего конвейера я настроил шаблон с кучей задач для построения проекта перед его развертыванием, а именно: npm install, npm test, npm run-script build и т. Д. ...

Однако эти задачи затем выполняются в родительском каталоге (go-agent/pipelines/frontend-app/), а не в целевом каталоге (dev-1, dev-2, ...)

go-agent/pipelines/frontend-app/
  |_ dev-1
  |_ dev-2
  |_ ...

Я читал о переменных среды goCD и не смог найти ни одной переменной, содержащей каталог назначения, поэтому я мог ссылаться на нее в своих задачах.

Конечно, в качестве решения вы всегда можете создать несколькоконвейеры для достижения этой цели, например:

frontend-app-dev-1, frontend-app-dev-2 и т. д. *

Но моя проблема в том, что у меня 8 devсреды, а также 10 проектов.Так что, как вы можете себе представить, довольно сложно настроить все эти вещи по отдельности.

Особенно, если позже мы сделаем какое-либо изменение, это большая работа, чтобы сделать это вручную и быть подверженным ошибкам.

Итак, мои вопросы:

  1. в случае первого подхода (шаблон глобуса ветвления), можно ли достичь этой цели с помощью шаблона глобуса ветвления?

  2. если мы используем второй подход (несколько материалов), знает ли кто-нибудь, можно ли этого достичь?Я думаю, что я почти на месте, но, возможно, я что-то упускаю при настройке своих задач.

  3. Какие-нибудь другие идеи, чтобы можно было заставить это работать?

  4. Есть ли другой способ добиться того, что мне нужно?

Заранее спасибо.

1 Ответ

0 голосов
/ 28 июня 2019

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

Чтобы уменьшить накладные расходы на конфигурацию, вы можете использовать конвейеры GoCD в качестве функции кода , чтобы записывать конвейеры в виде структур данных в репозиторий git, и вы можете использовать шаблоны для генерации репо .

Команда GoCD рассматривает возможность использования таких шаблонов для реализации поддержки подстановочных знаков , но это еще не сделано.

...