Я сейчас использую 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 материал, и попытаться использовать некоторый шаблон глобуса для имен веток.Как вы можете видеть на прикрепленном скриншоте.
Однако я не мог заставить это работать.
Второе, что я попробовалэто использовать несколько материалов.Чтобы иметь возможность иметь несколько материалов, вам необходимо настроить материал, задав ему конкретный каталог назначения.Как вы можете видеть на прикрепленном скриншоте:
При таком подходе я смог получить 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 проектов.Так что, как вы можете себе представить, довольно сложно настроить все эти вещи по отдельности.
Особенно, если позже мы сделаем какое-либо изменение, это большая работа, чтобы сделать это вручную и быть подверженным ошибкам.
Итак, мои вопросы:
в случае первого подхода (шаблон глобуса ветвления), можно ли достичь этой цели с помощью шаблона глобуса ветвления?
если мы используем второй подход (несколько материалов), знает ли кто-нибудь, можно ли этого достичь?Я думаю, что я почти на месте, но, возможно, я что-то упускаю при настройке своих задач.
Какие-нибудь другие идеи, чтобы можно было заставить это работать?
Есть ли другой способ добиться того, что мне нужно?
Заранее спасибо.