Установка:
- Личное мастер-репо, и у каждого разработчика есть своя собственная вилка.
- В настоящее время используется CircleCI, но мы будем рады перейти на удовлетворение требований
- Филиалы в главном репо защищены с ограничениями на слияние
Требования:
- Сборка + тест по разветвленным запросам на выгрузку
- Развертывание в различных средах на основе обновлений ветки главного репо
- Не всем разработчикам можно полностью доверять с учетными данными
Частичное решение:
- Включение создания и передачи секретов по разветвленным запросам на извлечение ( Ссылка )
- Используйте контексты CircleCI для установки переменных среды для каждой ветви. Это позволяет использовать разные цели развертывания.
Проблемы:
- Все специфические секреты репо, а также все глобальные контексты теперь доступны любому, кто может открыть PR.
- Даже если мы отключим сборку по разветвленным пулл-запросам, любой, имеющий доступ на запись хотя бы к одному репо, сможет получить доступ ко всем глобальным контекстам.
Вопрос:
- Кажется, это очень распространенный вариант использования. Как это решают другие компании?
- Разве CircleCI не подходит для этого? - Нет, это не так (см. Ниже).
- Должны ли мы создать собственное решение?
Edit1:
CircleCI вернулся ко мне, и удивительно, что это не тот случай использования, который они поддерживают. Сейчас заглядываю в других провайдеров. Выше вопросы до сих пор остаются без ответа.
Edit2:
Я также связался с TravisCi и SemaphoreCi, и похоже, что только TravisCi поддерживает создание разветвленных PR и не пропускает в них секреты ( Reference ).
В SempahoreCi отсутствует (1) создание разветвленных PR и (2) сокрытие секретов на этапе развертывания в неосновных рабочих процессах
CircleCi имеет ограниченный контекст , но для этого потребуется ручное изменение рабочих процессов. Определенно нелегко настроить, и я не до конца понимаю, как они будут работать.