Плагин ролевых стратегий Jenkins и многоотраслевой конвейер - PullRequest
0 голосов
/ 26 октября 2018

У нас есть два типа проектов: свободный стиль и многоотраслевой конвейер. Я хочу иметь роль developer, чтобы получать доступ только к чтению заданий, анализировать журнал конвейера и архивные артефакты. Для проекта в свободном стиле отлично работает, но для многоотраслевого, пользователь в роли разработчика ничего не видит, появляется сообщение «Эта папка пуста» и триггерные сборки не отображаются. Кто-нибудь может дать свет, пожалуйста?

Некоторые снимки экрана с конфигурацией: Global roles Project roles

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

У меня была та же проблема, но я нашел не идеальное решение, но оно работает.

Одно требование: именование ветвей в GIT должно быть постоянным, с дополнительным префиксом.Например: feat/branchName.Затем вы можете отфильтровать его по этому значению префикса.см. больше для наименования веток в потоке git

В качестве входных параметров у вас есть проекты и многоотраслевые конвейеры внутри него.Например:

  • Product1 -> Multibranch_pipeline_Product1 -> различные ветви с префиксами feat, bug, infra и т. Д. (Например: infra/PRJ-135-reciepts-issues, feat/PRJ-337-new-customer и т. д.)

  • Product2 -> Multibranch_pipeline_Product2 -> различные ветви с префиксами feat, bug, infra и т. д. (например: infra/PRJ-876-new-env, feat/PRJ-999-entity-creation и т. Д.)

и вы хотите разделить его для разных пользователей:

  • Developer1 - доступ только к Project1 и ветвям внутри многоотраслевого конвейера
  • Developer2 - доступ только к Project2 и ветвям внутри многоотраслевого конвейера
  • Developer3 - доступ к многоотраслевым конвейерам Project1 и Project2

Итак, вам нужна следующая конфигурация в плагине на основе ролей:

Роли проекта:

  • Шаблон Product1 - ^Product1*|.*_Product1*|(.*)feat(.*)|(.*)bug(.*)|(.*)hotfix(.*)|(.*)infra(.*)|(.*)develop(.*)

  • Шаблон Product2 - ^Product2*|.*_Product2*|(.*)feat(.*)|(.*)bug(.*)|(.*)hotfix(.*)|(.*)infra(.*)|(.*)develop(.*)

где:

  • ^Product1* - даст доступ к папке Product1
  • .*_Product1* - даст доступ к папке (многоотраслевой проект) - Multibranch_pipeline_Product2
  • (.*)feat(.*)|(.*)bug(.*)|(.*)hotfix(.*)|(.*)infra(.*)|(.*)develop(.*) - даст доступ ко всем веткам с префиксами feat ИЛИ bugИЛИ hotfix ИЛИ infra ИЛИ develop внутри этого многоотраслевого проекта.

И то же самое, что вы должны сделать для Product2.

В сумме вы должны иметь: - Developer1имеет роль Product1 - Developer2 имеет роль Product2 - Developer3 имеет обе роли, Product1 и Product2

Я протестировал это решение и с такой конфигурацией разрешения не пересекаются (Developer1 не будет иметь доступа к ветвям в Product2, а Developer2 не будет иметьдоступ к филиалам в Product1)

0 голосов
/ 27 октября 2018

Что вы можете сделать, создав 2 разных задания, с одним Jenkinsfile, где ветвь 'разработка' выполняет определенные задачи (sonarqube, модульные тесты и т. Д.). Ветвь 'release' выполняет задачи интеграции.

Пример:

stage 'Init'
node {
   checkout scm
   sh 'echo $ BRANCH_NAME'
}
if (env.BRANCH_NAME == 'develop') {
   stage 'Only on develop'
   println 'This happens only on develop'
} else {
   stage 'Other branches'
   println "Current branch $ {env.BRANCH_NAME}"
}

Посмотрите на эту ссылку как ссылку

...