Мне нужно добавить некоторые разрешения (чтение, сборку, рабочее пространство, отменить и т. Д.), Чтобы пользователь мог использовать множество заданий. Мне интересно, есть ли способ сделать это, используя groovy script вместо того, чтобы делать это вручную.Jenkins Добавить разрешения на работу с использованием groovy
ответ
Насколько я знаю, что вы пытаетесь сделать, невозможно.
Ссылка: https://wiki.jenkins-ci.org/display/JENKINS/Matrix-based+security
Я бы рекомендовал использовать «конфигурации нарезку», если есть изменения, которые вы хотите применить к несколько заданий одновременно.
https://wiki.jenkins-ci.org/display/JENKINS/Configuration+Slicing+Plugin
, но я не думаю, что права являются частью конфигурации нарезка в любом случае.
Вы можете использовать выполнить систему заводной шаг, чтобы запустить сценарий, как:
import hudson.security.AuthorizationMatrixProperty
def jobWithPermissionsYouWant = "template-job-name"
def jobToAddPermissions = "job-to-update-name"
def jen = Jenkins.getInstance();
def templateJob = jen.getItem(jobWithPermissionsYouWant);
//get permissions from another job (use it as permissions template)
def autTemplate = templateJob.getProperty(AuthorizationMatrixProperty.class)
def permissionSetToAdd = autTemplate.getGrantedPermissions()
//get the authorization matrix property of the job you want to update
def jobToUpdate = jen.getItem(jobToAddPermissions);
def autToUpdate = jobToUpdate.getProperty(AuthorizationMatrixProperty.class)
def currPermissionSet = autToUpdate.getGrantedPermissions()
//for each permission in the template job, add permission to the job you want to update
permissionSetToAdd.each{
autToUpdate.add(it.key, "[email protected]")
}
println("the permissions after update: ${autToUpdate.getGrantedPermissions()}")
(если вы выяснить, как получить объект разрешения, не читая его с другой работой, пожалуйста, обновите)
Нам не нужно, чтобы создать новый объект разрешения, просто создать новый hudson.security.AuthorizationMatrixProperty:
Jenkins.instance.getItem("JobName")
.removeProperty(hudson.security.AuthorizationMatrixProperty)
Jenkins.instance.getItem("JobName")
.addProperty(new hudson.security.AuthorizationMatrixProperty())
Jenkins.instance.getItem("JobName")
.getProperty(hudson.security.AuthorizationMatrixProperty)
.add("hudson.model.Item.Build:DEV")
где «hudson.model.Item.Build:DEV» является разрешение струна лет u может взять из xml-файла с установленными разрешениями
Я пробовал вышеуказанные решения, и они почти работал. Все мои попытки привели к появлению текущих разрешений в памяти, отражающих новые настройки, но эти разрешения не были сохранены в файле config.xml, поэтому, когда Jenkins был перезапущен, разрешения были потеряны. Опираясь на решения Эндрю Hura, я придумал этот код, который работает через рестарта:
AbstractProject proj = Hudson.instance.getItem("my_job")
AuthorizationMatrixProperty authProperty = proj.getProperty(hudson.security.AuthorizationMatrixProperty)
authProperty.add("hudson.model.Item.Build:DEV")
Map<Permission, Set<String>> permissionMap = authProperty.getGrantedPermissions()
proj.removeProperty(hudson.security.AuthorizationMatrixProperty)
proj.addProperty(new AuthorizationMatrixProperty(permissionMap))
взглянуть на сценарий здесь: https://github.com/MovingBlocks/GroovyJenkins/blob/master/src/main/groovy/ChangeSecurityPerJob.groovy
Вы должны быть в состоянии потянуть ее части к делай то, что хочешь, вроде как.
AbstractProject proj = Hudson.instance.getItem("YourJob")
AuthorizationMatrixProperty authProperty = proj.getProperty(AuthorizationMatrixProperty.class)
Map<Permission,Set<String>> newPermissions = new HashMap<Permission, Set<String>>()
newPermissions.put(Item.BUILD, users)
proj.addProperty(new AuthorizationMatrixProperty(newPermissions))
proj.save()
Более интересная часть, если вам нужно объединить разрешения.
Вы также можете найти пример в приведенной выше ссылке.
- 1. Jenkins Работа на полках с использованием Groovy
- 2. Facebook: Добавить разрешения на работу для разработки
- 3. Jenkins Получить ссылку на работу в groovy script
- 4. Jenkins Пакеты на Groovy Classpath?
- 5. Jenkins Scripting using Groovy
- 6. Jenkins Workflow Plugin: Как создать работу из groovy DSL?
- 7. Запуск с использованием Jenkins
- 8. Обновление задания Jenkins с помощью API Groovy Jenkins
- 9. Как пропустить работу с ограниченными возможностями на Jenkins
- 10. Добавить Jenkins Groovy Postbuild step to all jobs
- 11. Разрешения на регистрацию и работу службы WCF
- 12. Groovy jenkins Grab ERROR
- 13. Труба Jenkins groovy
- 14. Запуск команды Groovy в jenkins
- 15. Как добавить вложенное представление в Jenkins с помощью groovy?
- 16. Невозможно прочитать переменные Git Environment Jenkins с использованием Groovy Jenkinsfile
- 17. Обновление расписаний для заданий jenkins с использованием groovy-скриптов
- 18. Ошибка сценария Jenkins-Groovy
- 19. Конфигурация плагина Jenkins Gearman groovy
- 20. настроить Jenkins «Глобальная настройка инструмента» с использованием CLI/groovy
- 21. Плагин рабочего процесса Jenkins с использованием Groovy Library
- 22. Доступ к настраиваемому параметру сборки Jenkins с использованием Groovy Script
- 23. Создайте класс @extension в Groovy на Jenkins?
- 24. Как отправить работу Jenkins через REST API?
- 25. java.lang.StackOverflowError при разборе скрипта Groovy на Jenkins
- 26. Разрешения Jenkins после миграции
- 27. Groovy Postbuild не выполняет скрипты на Jenkins
- 28. Как перенести работу hudson на Jenkins 1.6xx
- 29. Как отправить сигнал на работу jenkins
- 30. Как добавить новую работу к представлению в jenkins через python-jenkins?
Так что нет способа сделать это, используя скрипт – user3502786
nope - я не знаю, извините. –