Jenkins API PersonalAccessTokenImpland GitlabAPiTokenImpl 之间的凭证差异

问题描述 投票:0回答:1

我继承了一些遗留 Jenkins 基础设施的管理,但我很困惑,因为我的凭据中有两种类型的 Gitlab API 令牌:

 {
    "apiToken": "**********",
    "description": "GitLab API token (Gitlab token for ops user)",
    "id": "cicd-gitlab",
    "scope": "GLOBAL",
    "class": "com.dabsquared.gitlabjenkins.connection.GitLabApiTokenImpl"
  },
  {
    "description": "A-gitlab-token (cicd-gitlab-token)",
    "id": "cicd-gitlab-token",
    "scope": "GLOBAL",
    "class": "io.jenkins.plugins.gitlabserverconfig.credentials.PersonalAccessTokenImpl",
    "token": "****-*****_*****"
  },

任何人都可以阐明 API 令牌和令牌之间的区别吗,因为它们有两个不同的类?

jenkins jenkins-plugins
1个回答
0
投票

两种凭证类型都存储完全相同类型的秘密:GitLab 访问令牌。那么为什么同一种秘密有两种不同的实现呢?这是一个历史怪癖,而不是故意的设计决策或技术需要。 GitLab Plugin 首先出现,但被认为存在一些重大缺陷,并且不支持多分支管道或组织文件夹,从而催生了 GitLab Branch Source Plugin 的创建。是的,这两个插件之间有一点重叠。是的,它们“可以”被重构以共享通用的凭证实现,但目前还没有。 Branch Source 插件也有 其自身的缺点(相对于凭证范围) 我的组织需要配置和使用

两个

GitLab 插件,并特意决定将我们的令牌存储为更通用的org.jenkinsci.plugins.plaincredentials.impl.StringCredentialsImpl(“秘密文本”)凭证类型,而不是“GitLab API 令牌”或“GitLab”个人访问令牌”凭证类型。在全局 Jenkins 系统配置页面 (

/manage/configure
) 上,您将看到
GitLab Plugin
GitLab Branch Source Plugin 的凭据下拉列表允许您从各自类型中选择一个凭据,“GitLab API” token”或“GitLab 个人访问令牌”,但两者都不允许来自对方插件的凭证类型。 但是,这两个插件都允许您使用“秘密文本”凭据进行全局配置。如果您使用特定于插件的凭证类型而不是通用类型,则需要在两个不同的 Jenkins 凭证中复制您的 GitLab 令牌。但他们都可以使用相同的“秘密文本”凭证。使用“秘密文本”还允许您在管道中使用标准

withCredentials([string(credentialsId: 'gitlab-token-cred', variable: 'GITLAB_TOKEN')]) { ... }

语法。如果您的管道需要读取用于全局插件配置的相同 GitLab 令牌,您可能会认为这是另一个好处。

(在 2023 年 6 月之前,GitLab 分支源插件

要求

您使用插件特定的“GitLab 个人访问令牌”(PersonalAccessTokenImpl) 凭证,但该行为在

https://github.com 中进行了修改/jenkinsci/gitlab-branch-source-plugin/pull/326
,使上述共享“秘密文本”凭证成为可能。) 如果您查看这两个插件的 GitHub“问题”,您会发现 Jenkins 用户对这些 GitLab 凭证类型存在很多持续的困惑。这绝对是一个值得有意愿的开发人员关注的领域。

© www.soinside.com 2019 - 2024. All rights reserved.