В приведенной ниже заводной сценарий должен создать новый экземпляр RoleBasedAuthorizationStrategy
за исключением данного пользователя из всех ролей.
Обратите внимание, что я не тестировал его полностью и не заставляю делать резервную копию вашего экземпляра Jenkins перед тестированием этого скрипта.
import hudson.model.*
import com.michelin.cio.hudson.plugins.rolestrategy.*
String removeRolesFromUser="test"
def roleBasedAuthorizationStrategy = Jenkins.getInstance().getAuthorizationStrategy()
if(roleBasedAuthorizationStrategy instanceof RoleBasedAuthorizationStrategy){
boolean changed=false
Map<String, RoleMap> roleMaps = roleBasedAuthorizationStrategy.getRoleMaps()
RoleBasedAuthorizationStrategy updatedRoleBasedAuthorizationStrategy = new RoleBasedAuthorizationStrategy()
for(Map.Entry<String, RoleMap> roleMapEntry : roleMaps.entrySet()){
Set<Role> roleSet = roleMapEntry.getValue().getRoles()
for(Role role : roleSet){
updatedRoleBasedAuthorizationStrategy.addRole(roleMapEntry.getKey(),role);
for(String addUserAgain : roleMapEntry.getValue().getSidsForRole(role.getName())){
if(!addUserAgain.equals(removeRolesFromUser)){
updatedRoleBasedAuthorizationStrategy.assignRole(roleMapEntry.getKey(),role,addUserAgain)
}else{
println("User : " + removeRolesFromUser + " excluded from role : " + role.getName())
changed=true
}
}
}
}
if(changed){
Jenkins.getInstance().setAuthorizationStrategy(updatedRoleBasedAuthorizationStrategy)
println("INFO: Authorization strategy updated, user " + removeRolesFromUser + " removed from all roles.")
Jenkins.getInstance().save();
println("INFO: Authorization strategy saved to disk.")
}else{
println("INFO: No changes made to Authorization strategy since user : " + removeRolesFromUser + " does not belong to any role!")
}
}else{
println("ERROR : This script works only for RoleBasedAuthorizationStrategy!")
}
Я протестировал один и тот же сценарий для стратегии на основе ролей, и он удалил пользователя успешно. Не могли бы вы сообщить нам, как вы выполняете строгий скрипт? Кроме того, размещайте содержимое своего скрипта здесь. –
Ниже приведен сценарий, который я использую, чтобы удалить пользователя из 'Jenkins.import hudson.model.User Пользователь u = User.get (id) u.delete()' –
Также я запускаю скрипт из консоли сценариев , Идентификатор получил значение в скрипте, с которым создается пользователь. Также пользователь не поддерживается в внутренней базе данных Jenkins. Пользователь аутентифицирован против LDAP. –