Я планирую перенести мои старые конвейеры CI / CD, которые представляют собой смесь новых конвейеров YAML для сборок и конвейеров Releases на основе пользовательского интерфейса 'classi c', в многоступенчатый файл YAML на основе среды. , но я изо всех сил пытаюсь найти документы / примеры, которые следуют вместе с тем, что мы делаем в настоящее время.
Обычно существует три среды: Test
, UAT
и Production
.
Все они основаны на AKS, и в настоящий момент сборка, создающая контейнер (ы) docker, будет как часть своего вывода хранить файл DeployService.yml
, который используется конвейером выпуска для обновления каждой среды (путем изменение тега изображения и некоторых переменных среды) перед запуском kubectl apply -f DeployService.yml
.
В настоящее время у меня есть несколько проектов, которые следуют этому шаблону:
╔══════════════════════════╦══════════════════╦══════════════╦══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
║ Name ║ Purpose ║ Type ║ Description ║
╠══════════════════════════╬══════════════════╬══════════════╬══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╣
║ {project-name}.ci.yml ║ CI build ║ YAML-based ║ Triggered on pull-requests. Builds, run tests, etc. The only output is test results and success/ failure in Azure DevOps. ║
║ {project-name}.cd.yml ║ CD build ║ YAML-based ║ Builds the output upon successful PR into master. This is more often than not a docker container. ║
║ {project-name} - Release ║ Release Pipeline ║ 'Classic' UI ║ Release pipeline, triggered by {project-name}.cd.yml success and deploys into the Test environment. From there it's promotion to UAT and Production. ║
╚══════════════════════════╩══════════════════╩══════════════╩══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
Я хотел бы переместить все они в новый многоступенчатый конвейер сборки и выпуска YAML с использованием одного файла.
В его нынешнем виде я создал новый файл yaml с использованием нового шаблона конвейера, а затем скопировал и вставил биты моих существующих сборок CD.
На данный момент новая сборка может:
- Выполнить сборку, которая создает и толкает контейнер docker.
- Запустите релиз, который выдвигается в среду
Test
.
В рамках этого шаблона в папке репозитория создается папка manifests
, содержащая deployment.yml
и service.yml
. Он также создал среду, которая подключена к нашему Test
AKS-кластеру.
Итак, мои вопросы таковы:
- Учитывая, что
deployment.yml
должен содержать переменные среды, определяющие c переменные (подумайте ASPNETCORE_ENVIRONMENT
), как мне предоставить эти дополнительные среды, определяющие c переменных для среды выпуска? - Могу ли я воссоздать тот же конвейер выпуска в стиле продвижения, который был у меня с использованием Classi c UI релизы?
- Будет ли сборка CI вписываться в этот процесс вообще? Или я должен оставить его в отдельном файле?
- Учитывая, что существует множество проектов, которые следуют этому шаблону, и по большей части они все делают одно и то же, но создают контейнеры, специфицирующие проекты c, есть ли возможность повторного использования между репозиториями?