2016-07-06 4 views
6

コードとしてパイプdocker demo with multibranchを配備しました。プルリクエストでjenkinsfileテストを実行できるユーザーを制限する方法はありますか。

問題なく動作します。組織として私のgithubユーザ名を追加しました。私がプルリクエストを行うと、テストが実行されます。

ただし、他のユーザーがプルリクエストを行うと、テストも実行されます。私は手動で外部寄稿者からのプルリクエストを私のjenkinsサーバーで実行するのがよいと承認したいと思います。それを行う方法はありますか?

ghprbとすることはできますが、パイプラインには対応していないため、ジョブをパイプラインに移行したいと考えています。

+0

私はこのユースケースは、https://wiki.jenkins.io/display/JENKINS/GitHub+Branch+Source+Pluginによって解決されなければならないと考えています今。 – mkobit

答えて

-2

あなたのパイプラインのスクリプトでこれらの行を追加してみてください。

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

これは安全ではありません。コミットするときには、ブランチ内のJenkinsfileを完全に変更してこのチェックをバイパスするだけでなく、コミット時に必要な電子メールを簡単に使用できます。 –

+0

おそらくあなたは正しいです。しかし、それは本当に意味をなさない:あなたのコードを変更することが許可されている人々のためのJenkinsfileの変更を制限する? – ludenus

+1

この質問は、GitHubのプルリクエストに関するものです。プルリクエストの作成者は必ずしもコードを変更することはできません。 –

関連する問題