如何在没有Gitlab插件的情况下配置Jenkins访问Gitlab私有存储库?

ace*_*ace 5 jenkins gitlab

我已经在ubuntu服务器上安装了最新的Jenkins,并在Gitlab上的项目存储库中安装了Jenkinsfile。

我可以在项目管道上使用Jenkins配置上的用户名/密码凭证连接到Gitlab上的私人仓库,而无需使用Jenkins Gitlab插件。这对我来说似乎并不安全。如何在不使用Jenkins Gitlab插件的情况下使用Gitlab API令牌而不是用户名/密码来让Jenkins访问远程私有Gitlab存储库。另一个选择是在Jenkins服务器上设置ssh私钥以对抗Gitlab存储库。这个选项可以吗?

Jenkins Gitlab插件未得到正式支持,维护也不完善,因为Gitlab希望客户出于营销原因使用自己的CI / CD解决方案,以便将客户绑定到其平台。

ben*_*vdh 8

处理这种情况的一种相对安全的方法是将您的凭据存储在 Jenkins 中的凭据系统中(这样您就不必将凭据包含在 JenkinsFile 中),并使用部署令牌(适用于 Gitlab 10.7 及更高版本)来进行部署。相关存储库。该令牌允许您提供对存储库的只读权限。

\n\n

第 1 步 - 在 GitLab 中设置部署令牌

\n\n

来自 GitLab 文档

\n\n
\n

您可以根据项目的设置创建任意数量的部署令牌:

\n\n
    \n
  1. 登录您的 GitLab 帐户。
  2. \n
  3. 转到您要为其创建部署令牌的项目。
  4. \n
  5. 转到“设置”>“存储库”
  6. \n
  7. 单击“部署令牌”部分上的 \xe2\x80\x9cExpand\xe2\x80\x9d。
  8. \n
  9. 选择令牌的名称和可选的到期日期。
  10. \n
  11. 选择所需的范围。
  12. \n
  13. 单击创建部署令牌
  14. \n
  15. 将部署令牌保存在安全的地方。一旦您离开或刷新页面,您将无法再次访问它。
  16. \n
\n
\n\n

第 2 步 - 将部署令牌保存在 Jenkins 的凭证系统中

\n\n

由于部署令牌具有用户名和密码,因此请选择它作为以下步骤中的类型。写下您将在此步骤中使用的 ID(见下文),因为您将在管道声明中需要它。

\n\n

来自詹金斯文档

\n\n
\n

要将新的全局凭据添加到您的 Jenkins 实例:

\n\n
    \n
  1. 如果需要,请确保您已登录 Jenkins(作为具有“凭据”>“创建”权限的用户)。
  2. \n
  3. 在 Jenkins 主页(即 Jenkins 经典 UI 的仪表板)中,单击左侧的Credentials > System 。
  4. \n
  5. “系统”下,单击“全局凭据(无限制)”链接以访问此默认域。
  6. \n
  7. 单击左侧的添加凭据。注意:如果此默认域中没有凭据,您还可以单击“添加一些凭据”链接(与单击“添加凭据”链接相同)。
  8. \n
  9. “种类”字段中,选择要添加的凭据类型。
  10. \n
  11. “范围”字段中,选择:\n \n
    \n
      \n
    • 全局- 如果要添加的凭证适用于管道项目/项目。选择此选项将凭证的范围应用于管道项目/项“对象”及其所有后代对象。
    • \n
    • 系统- 如果要添加的凭证用于 Jenkins 实例本身与系统管理功能交互,例如电子邮件身份验证、代理连接等。选择此选项会将凭证的范围应用于单个对象仅有的。
    • \n
    \n
  12. \n
  13. 将凭据本身添加到您选择的凭据类型的相应字段中:\n \n
    \n

    (...)

    \n\n
      \n
    • 用户名和密码-在各自的字段中指定凭据\xe2\x80\x99s用户名密码。\n (...)
    • \n
    \n
  14. \n
  15. ID字段中,指定有意义的凭证 ID 值 - 例如 jenkins-user-for-xyz-artifact-repository。您可以使用大写或小写字母作为凭证 ID,以及任何有效的分隔符。但是,为了 Jenkins 实例上的所有用户的利益,最好使用单一且一致的约定来指定凭证 ID。注意:该字段是可选的。如果您不指定其值,Jenkins 会为凭证 ID 分配一个全局唯一 ID (GUID) 值。请记住,凭证 ID 一旦设置,就无法再更改。
  16. \n
  17. 为凭证指定可选描述。
  18. \n
  19. 单击“确定”保存凭据。
  20. \n
\n
\n\n

第 3 步 - 在管道声明中使用凭据

\n\n

您可以在 jenkinsFile 中使用凭据,如下所示:

\n\n
pipeline {\n  stages {\n    stage(\'Clone stage\') {\n       steps {\n         git url: \'https://gitlab.com/[username]/[my-repo].git\', branch: \'master\', credentialsId: \'my-gitlab-repo-creds\'\n       }\n    }\n  }    \n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

在上面的示例中,我假设您在步骤 2 中选择了 ID my-gitlab-repo-creds

\n