2016-07-06 23 views
6

Ho installato la pipeline come codice docker demo with multibranch.Come limitare gli utenti che possono eseguire test jenkinsfile nelle richieste pull?

Funziona bene. Ho aggiunto il mio nome utente github come organizzazione e quando faccio una richiesta pull, i test vengono eseguiti.

Tuttavia, quando alcuni altri utenti effettuano una richiesta di pull, vengono eseguiti anche i test. Vorrei approvare manualmente quali richieste di pull da collaboratori esterni sono valide per essere eseguite nel mio server jenkins. C'è un modo per farlo?

Posso farlo con ghprb, ma non è compatibile con le condotte e voglio migrare i miei lavori alle condotte.

+0

Credo che questo caso d'uso dovrebbe essere risolto con https://wiki.jenkins.io/display/JENKINS/GitHub+Branch+Source+Plugin adesso. – mkobit

risposta

-2

riprova aggiungendo queste righe nello script cantiere:

node('slaveName') { 

    properties([ 
      parameters([ 
        string(
          defaultValue: '[email protected],[email protected]', 
          description: 'comma separated whitelisted emails', 
          name: 'WHITELIST' 
        ) 
      ]) 
    ]) 

    def authorEmail 

     stage('Git') { 
      authorEmail = sh([ 
        // git log format docs here: https://git-scm.com/docs/pretty-formats 
        script  : "git log -1 --format='%aE'", 
        returnStdout: true 
      ]).trim() 

      boolean allowRun = isWhitelisted(env.WHITELIST, authorEmail) 

      if (allowRun) { 
       echo "email ${authorEmail} is whitelisted, proceed execution" 
      } else { 

       echo "email ${authorEmail} is not in whitelist ${env.WHITELIST}, proceed jenkins job?" 
       input message: 'Proceed?' 
       // or just abort build with non-zero shell exit 
       // currentBuild.result = 'FAILURE' 
       // sh "exit 10" 
      } 

     } 
    } 
} 

@NonCPS 
boolean isWhitelisted(whitelist, email) { 
    def res = whitelist.tokenize(" ,;").find { white -> white == email } 
    return null != res 
} 
+2

Questo non è sicuro. Puoi facilmente usare qualsiasi e-mail che vuoi quando fai un commit, senza menzionare che potrebbero semplicemente cambiare il Jenkinsfile interamente nel loro ramo per bypassare questo controllo. –

+0

Forse hai ragione. Ma ha davvero senso: limitare il cambio di Jenkinsfile per le persone a cui è permesso cambiare il tuo codice? – ludenus

+1

Questa domanda riguarda le richieste pull su GitHub. L'autore della richiesta di pull non è necessariamente autorizzato a cambiare il tuo codice. –

Problemi correlati