在Jenkins中使用GitLab令牌进行API调用

218次阅读
没有评论

问题描述

在Jenkins的流水线中,希望能够在GitLab上创建一个合并请求。他不想在Jenkinsfile中明文存储私有令牌,想知道是否有一种从Jenkins凭据中获取私有令牌的方法。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

您可以使用Jenkins的Credential Binding插件来实现这一目标。以下是具体步骤:

  1. 打开现有的流水线任务,在输入流水线代码的文本区域下方,点击”Pipeline Syntax”链接,打开Snippet Generator。
  2. 在”Sample Step”下拉菜单中,选择”withCredentials: Bind credentials to variables”。
  3. 在”Bindings”部分,点击”Add”按钮,添加一个新的凭据,选择”Secret text”类型。输入API令牌,为其指定一个易于记忆的ID(这是我们引用该凭据的方式)和一个描述。
  4. 当令牌添加完成后,从”Credentials”下拉菜单中选择它。输入您想要用来引用API密钥的变量名。根据您的示例,我将其命名为”private_token”。
  5. 完成后,点击”Generate Pipeline Script”按钮,生成一个带有withCredentials()函数的示例。使用此函数,调用API密钥时,用户将无法看到其内容,只能看到”private_token”。
    以下是一个示例代码片段:
withCredentials([string(credentialsId: 'Gitlab-API-Key', variable: 'private_token')]) {
    echo("My private token is: ${private_token}")
}

方案2

您还可以尝试以下方法:

environment {
    GITLAB_API_TOKEN = credentials('gitlab_api_token')
}

或者

withCredentials([
    [
        $class: 'com.dabsquared.gitlabjenkins.connection.GitLabApiTokenImpl',
        credentialsId: 'gitlab_api_token',
        variable: 'GITLAB_API_TOKEN'
    ]
])

请参考以下链接获取更多信息:

希望这些解决方案能够帮助到您!

正文完