2016-08-30 11 views
9

Прямо сейчас, любой, кто создает ветку в моем проекте и добавляет к ней файл .gitlab-ci.yml, может выполнять команды на моем сервере с помощью бегуна. Как я могу сделать так, чтобы только мастера или владельцы могли загружать файлы конфигурации CI и вносить в них изменения?Как ограничить бегунов определенной ветвью и заблокировать .gitlab-ci.yml от изменений?

Я использую https://gitlab.com/gitlab-org/gitlab-ci-multi-runner работает на bash.

+0

Это поражает меня как очень разумный запрос функции. Тем более, что gitlab-ci теперь поддерживает развертывание. Рассматривали ли вы его поднятие [здесь] (https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues/)? – Matthew

ответ

2

Бегун GitLab не был предназначен для этого сценария, и поэтому вы не можете этого сделать. Вместо этого вы можете создать новый проект только с вашим файлом .gitlab-ci.yml и настроить его таким образом, чтобы он извлекал исходный репозиторий. Оттуда вы можете сделать все, что хотите сделать с вашим репозиторием.

+0

Извините, я не понимаю, как это работает. Можете ли вы объяснить (нажать на проект A = CI, который что-то делает) Как то, что делает новый проект только с моим файлом ci? – CausingUnderflowsEverywhere

+1

@CausingUnderflowsEverywhere У вас есть 2 репозитория. Repo A - это ваше первоначальное репо без включенности бегунов и никакого файла CI. Repo B - это ваше «Runner repo», где у вас есть только файл CI. В этом файле вы «git pull» Repo A и делаете все, что хотите. Таким образом, вы можете заблокировать файл CI и все еще иметь все права. Другого способа действительно этого не существует. – Fairy

+0

Хмм, который требует ручного нажатия на мою сторону каждый раз, когда я хочу запустить CI, он не автоматизирован вообще, так что это в противном случае бесполезно. Спасибо за подсказку. Если бы я работал один, это было бы вполне возможно, но факт и, как я сказал в вопросе, я работаю с другими людьми. Мне просто не представляется возможным, если кто-то подтолкнул что-то к репо A для меня, чтобы нажать на репо B, чтобы активировать CI, который не будет отображаться при запросах на слияние в репо A. Я мог бы использовать веб-файлы и т. Д. t даже использовать свою работу, я бы поместил CI в некоторый код, активированный webhook. – CausingUnderflowsEverywhere