2016-07-06 4 views
6

Ich habe die Pipeline-as-Code docker demo with multibranch bereitgestellt.Wie kann man die Benutzer, die jenkinsfile-Tests in Pull-Requests ausführen können, einschränken?

Es funktioniert in Ordnung. Ich habe meinen github Benutzernamen als Organisation hinzugefügt und wenn ich eine Pull-Anfrage mache, werden die Tests ausgeführt.

Wenn jedoch ein anderer Benutzer eine Pull-Anforderung ausführt, werden auch die Tests ausgeführt. Ich möchte manuell genehmigen, welche Pull-Anfragen von externen Mitwirkenden in meinem jenkins-Server ausgeführt werden können. Gibt es eine Möglichkeit, das zu tun?

Ich kann es mit ghprb tun, aber es ist nicht kompatibel mit Pipelines, und ich möchte meine Jobs in Pipelines migrieren.

+0

Ich glaube, dieser Anwendungsfall durch https://wiki.jenkins.io/display/JENKINS/GitHub+Branch+Source+Plugin gelöst werden sollte jetzt. – mkobit

Antwort

-2

versuchen Sie bitte diese Zeilen in Ihrer Pipeline Skript hinzufügen:

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

Dies ist nicht sicher. Sie können jede gewünschte E-Mail verwenden, wenn Sie eine Festschreibung durchführen, ganz zu schweigen davon, dass sie die Jenkins-Datei in ihrer Verzweigung komplett ändern können, um diese Prüfung zu umgehen. –

+0

Vielleicht hast du recht. Aber macht es wirklich Sinn: Jenkinsfile für Leute, die Ihren Code ändern dürfen, zu ändern? – ludenus

+1

Diese Frage bezieht sich auf Pull-Requests auf GitHub. Der Verfasser der Pull-Anforderung darf den Code nicht unbedingt ändern. –

Verwandte Themen