如何限制可以在pull请求中运行jenkinsfile测试的用户?

时间:2016-07-06 09:38:27

标签: jenkins jenkins-pipeline

我已经部署了代码管道docker demo with multibranch

它运作正常。我添加了我的github用户名作为组织,当我发出拉取请求时,运行测试。

然而,当其他一些用户发出拉取请求时,他们的测试也会运行。我想手动批准外部贡献者的哪些拉取请求可以在我的jenkins服务器中运行。有没有办法做到这一点?

我可以使用ghprb执行此操作,但它与管道不兼容,我想将我的作业迁移到管道。

1 个答案:

答案 0 :(得分:-2)

请尝试在管道脚本中添加以下行:

node('slaveName') {

    properties([
            parameters([
                    string(
                            defaultValue: 'whitelisted1@gmail.com,whitelisted2@gmail.com',
                            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
}