我已经在ubuntu服务器上安装了最新的Jenkins,并在Gitlab上的项目存储库中安装了Jenkinsfile。
我可以在项目管道上使用Jenkins配置上的用户名/密码凭证连接到Gitlab上的私人仓库,而无需使用Jenkins Gitlab插件。这对我来说似乎并不安全。如何在不使用Jenkins Gitlab插件的情况下使用Gitlab API令牌而不是用户名/密码来让Jenkins访问远程私有Gitlab存储库。另一个选择是在Jenkins服务器上设置ssh私钥以对抗Gitlab存储库。这个选项可以吗?
Jenkins Gitlab插件未得到正式支持,维护也不完善,因为Gitlab希望客户出于营销原因使用自己的CI / CD解决方案,以便将客户绑定到其平台。
处理这种情况的一种相对安全的方法是将您的凭据存储在 Jenkins 中的凭据系统中(这样您就不必将凭据包含在 JenkinsFile 中),并使用部署令牌(适用于 Gitlab 10.7 及更高版本)来进行部署。相关存储库。该令牌允许您提供对存储库的只读权限。
\n\n第 1 步 - 在 GitLab 中设置部署令牌
\n\n\n\n\n\n\n您可以根据项目的设置创建任意数量的部署令牌:
\n\n\n
\n- 登录您的 GitLab 帐户。
\n- 转到您要为其创建部署令牌的项目。
\n- 转到“设置”>“存储库”。
\n- 单击“部署令牌”部分上的 \xe2\x80\x9cExpand\xe2\x80\x9d。
\n- 选择令牌的名称和可选的到期日期。
\n- 选择所需的范围。
\n- 单击创建部署令牌。
\n- 将部署令牌保存在安全的地方。一旦您离开或刷新页面,您将无法再次访问它。
\n
第 2 步 - 将部署令牌保存在 Jenkins 的凭证系统中
\n\n由于部署令牌具有用户名和密码,因此请选择它作为以下步骤中的类型。写下您将在此步骤中使用的 ID(见下文),因为您将在管道声明中需要它。
\n\n\n\n\n\n\n要将新的全局凭据添加到您的 Jenkins 实例:
\n\n\n
\n- 如果需要,请确保您已登录 Jenkins(作为具有“凭据”>“创建”权限的用户)。
\n- 在 Jenkins 主页(即 Jenkins 经典 UI 的仪表板)中,单击左侧的Credentials > System 。
\n- 在“系统”下,单击“全局凭据(无限制)”链接以访问此默认域。
\n- 单击左侧的添加凭据。注意:如果此默认域中没有凭据,您还可以单击“添加一些凭据”链接(与单击“添加凭据”链接相同)。
\n- 从“种类”字段中,选择要添加的凭据类型。
\n- 从“范围”字段中,选择:\n \n
\n\n\n
\n- 全局- 如果要添加的凭证适用于管道项目/项目。选择此选项将凭证的范围应用于管道项目/项“对象”及其所有后代对象。
\n- 系统- 如果要添加的凭证用于 Jenkins 实例本身与系统管理功能交互,例如电子邮件身份验证、代理连接等。选择此选项会将凭证的范围应用于单个对象仅有的。
\n- 将凭据本身添加到您选择的凭据类型的相应字段中:\n \n
\n\n(...)
\n\n\n
\n- 用户名和密码-在各自的字段中指定凭据\xe2\x80\x99s用户名和密码。\n (...)
\n- 在ID字段中,指定有意义的凭证 ID 值 - 例如 jenkins-user-for-xyz-artifact-repository。您可以使用大写或小写字母作为凭证 ID,以及任何有效的分隔符。但是,为了 Jenkins 实例上的所有用户的利益,最好使用单一且一致的约定来指定凭证 ID。注意:该字段是可选的。如果您不指定其值,Jenkins 会为凭证 ID 分配一个全局唯一 ID (GUID) 值。请记住,凭证 ID 一旦设置,就无法再更改。
\n- 为凭证指定可选描述。
\n- 单击“确定”保存凭据。
\n
第 3 步 - 在管道声明中使用凭据
\n\n您可以在 jenkinsFile 中使用凭据,如下所示:
\n\npipeline {\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
。
归档时间: |
|
查看次数: |
1810 次 |
最近记录: |