2014-06-18 25 views
5

Ho impostato un lavoro parametrizzato per le distribuzioni self-service in Jenkins. Gli utenti possono selezionare una versione dell'applicazione e l'ambiente da distribuire a. Gli ambienti disponibili visualizzati all'utente sono al momento solo un elenco statico di stringhe (parametro di scelta).Jenkins: come ottenere utenti Gruppi LDAP in groovy-script

Ora voglio limitare le distribuzioni ad alcuni ambienti in base ai gruppi LDAP dell'utente corrente.

L'utente-pagina in Jenkins mostra qualcosa di simile:

Jenkins Benutzer Id: Maku

Gruppi:

adm_proj_a 
nexus_admin 
ROLE_ADM_PROJ_XY 
ROLE_BH_KK 

Come faccio ad avere questi gruppi all'interno di un groove-script?

Ho cercato di usare parametro scelta dinamico (scriptler) e ottenere i LDAP gruppi con un groove-script, ma non ha trovato la mia strada attraverso la Jenkins-API.

Qualsiasi suggerimento benvenuto

risposta

3

User.getAuthorities() richiede che il chiamante abbia l'autorizzazione ADMINISTER. (http://javadoc.jenkins-ci.org/hudson/model/User.html#getAuthorities())

Un'alternativa è richiedere direttamente SecurityRealm.

import hudson.model.* 
import jenkins.model.* 

def userid = User.current().id 
def auths = Jenkins.instance.securityRealm.loadUserByUsername(userid) 
      .authorities.collect{a -> a.authority} 
if("adm_proj_a" in auths){ 
... 
+0

Grazie Lionel! Questa è la soluzione migliore. –

3

Ho trovato una soluzione. Nel caso in cui qualcuno è interessato:

Entro scriptler ho creato uno script Groovy-script simile a questo:

import hudson.model.* 

def allowed_environments = ["dev","test","test-integration"] 

if ("adm_proj_a" in User.current().getAuthorities()) 
{ 
    allowed_environments.add("production") 
} 

return allowed_environments 

Questo script viene utilizzato da parametro scelta dinamico (scriptler) nel mio Jenkins-Job.

Ora solo gli utenti all'interno del gruppo adm_proj_a possono vedere produzione come una scelta.

+0

[getAuthorities] (http://javadoc.jenkins-ci.org/hudson/model/User.html#getAuthorities--) richiede utente dispone privs Jenkins amministrare, che fermato essendo utile per limitare eseguite sulla sul gruppo LDAP, come con i perms di Admin in jenkins, potevano eseguire tutto! – ffghfgh

Problemi correlati