在Jenkins共享库中管理凭据的正确方法是什么?

时间:2019-12-11 18:51:51

标签: jenkins jenkins-pipeline shared-libraries credentials

我已经开始为我的团队管理多个Jenkins管道。在这些管道中,有很多重复的代码。就是说,我已经开始更好地遵循Jenkins documentation,并将重复的代码移到共享库中以供多个作业使用。

我面临的问题是确定如何管理作业和共享库之间的凭据传递。许多库将处理不同Web服务器上的数据交换。与这些Web服务器的每次交互都需要用户名+密码或一些API令牌才能进行身份验证/授权。

我知道可以使用的解决方案是让共享库中的每个函数都将凭据作为参数。这样,我可以在Jenkinsfile中使用withCredentials(...) { }指定我的凭据。我相信这会成功,但是我想知道这是否是最佳解决方案。

由于每个API(和相应的库)都将绑定到一个凭证,所以我想知道是否可以通过某种方式以安全的方式将库链接到单个凭证。以下是两个管道示例,这些示例说明了我所知道的将起作用的内容以及我想探索的内容。

我所知道的将起作用:

stage('promote') {
    steps {
        // known working solution
        interactWithApi1(content1, credentials)
        interactWithApi2(content2, credentials)
    }
}

从可行性角度出发,我想探索的内容:

stage('promote') {
    steps {
        // something I'm inclined to look into
        // where these library(s) already know the credentials
        interactWithApi1(content1)
        interactWithApi2(content2)
    }
}

1 个答案:

答案 0 :(得分:0)

类似的事情对我们有用:

//vars/interactWithAws.groovy in your library

def call(Map params) {
   withAWS(credentials: 'jenkins-aws-credentials') { 
       s3upload bucket: "myBucket", 
           file: params.file // etc.
   }

凭据在主要Jenkins>凭据中定义。

也许也对您有用吗?

相关问题