Я новичок в мире CI / CD, и теперь я хотел бы реализовать эти рабочие процессы в моем процессе разработки.Я хотел бы понять, как правильно создать конвейер сборки и выпуска для управления средами Dev, Test и Prod, когда у Dev, Test и Prod есть небольшие различия.
Итак, я делаю приложение Asp .Net Core,код размещен в DevOps Azure, который я буду использовать также для сборки и выпуска, для кода на стороне клиента (js и css) я использую Typescript и SASS, а для компиляции в js и css я использую сценарии npm.
Сейчасв среде Dev я хочу развернуть неинициализированные js и css, а также хочу файлы исходных карт, в среде Test вместо этого я хочу минимизированные js и css и файлы исходных карт, в среде prod мне нужна только минимизированная версия моегоcss and js.
Этот случай взят только в качестве практического примера, но я хотел бы понять общее правило, которое я могу применять независимо от типа приложения или хоста, платформ сборки и выпуска.В качестве дополнительного примечания я понимаю, что этот случай довольно тривиален и может управляться довольно легко без особых церемоний, но я хотел бы понять руководящие принципы и лучшие практики, а затем я выберу то, что подходит для моего конкретного случая, и адаптирую его.эти рекомендации и рекомендации соответственно.
Теперь я могу выбирать между различными вариантами:
- Я могу управлять различиями на этапе сборки :
- У меня может быть один конвейер сборки, который производит «стандартный» клиентский код, исходную карту и минимизированные версии и развертывает одни и те же артефакты в Dev, Test и Prod;
- У меня может быть другая сборкаконвейер для другой среды;
- Я могу иметь один конвейер сборки и использовать условные задачи;
Я могу управлять различиями на этапе выпуска :
- Я могу создать код, используя опцию 1.1, а затем исключить файлы, которые мне не нужны вконвейер выпуска;
- Я могу собрать только код на стороне сервера в конвейере сборки и скомпилировать код на стороне клиента во время конвейера выпуска;
- Я могу скомпилировать стандартную версию файлов js и cssв конвейере сборки и в конвейерах выпуска я могу создать исходную карту или минимизировать js и css;
Мне не нравится опция 1.1, потому что я не люблючтобы бесполезные файлы распространялись повсеместно, и это добавляет некоторые дополнительные шаги в конвейер сборки, которые не нужны.
Опции 1.2 и 1.3 добавляют некоторую сложность конвейерам сборки.
С опциями 2.x у нас есть «неполные» сборки, потому что артефакты, создаваемые процессом сборки, не содержат некоторых артефактов, которые требуются в среде развертывания.
Мне, чтоich Я не знаю, каковы руководящие принципы и лучшие практики для рабочих процессов CI и CD, кажется, что гораздо более подходящим является вариант 1.3 или 2.3.
Если я не ошибаюсь,вопрос стал: Допустимо иметь конвейеры сборки, которые производят артефакты, которые не могут быть полностью отправлены, поскольку они не отвечают требованиям для среды развертывания (например, необходимость иметь исходную карту в среде Dev)?