Context & Problem
我正在为一家公司开发DevOps平台,该公司希望为开发人员提供代码版本控制和自动测试/构建/部署工具,使用Gitlab + Jenkins + Azure(以及其他工具,如Jira / Sonarqube / Grafana,但在这里不相关)。
出于安全和易于管理的原因,我们希望为所有这些工具提供一个帐户:Azure活动目录。
目前,Gitlab用户可以通过Azure AD连接,并且推送到Gitlab存储库会触发Jenkins中的构建。当我通过Azure AD配置Jenkins身份验证时,Gitlab与Jenkins的集成不再起作用,因为您不再可以使用用户名/密码连接到Jenkins,这似乎是Gitlab集成提供的唯一方法。
当前设置
- Gitlab(14.6.0-ee)和Jenkins(2.319.1)安装在Azure托管的2个不同虚拟机(CentOs 7.9)上
- 在Gitlab上启用Jenkins集成(https://docs.gitlab.com/ee/integration/jenkins.html)
- Gitlab插件在Jenkins上启用(https://plugins.jenkins.io/gitlab-plugin/)
- Jenkins与Azure Active Directory的集成工作正常(https://plugins.jenkins.io/azure-ad/)
- 组和用户在Azure AD上配置为在Jenkins上给予角色(https://www.cloudbees.com/blog/securing-jenkins-role-based-access-control-and-azure-active-directory)
- 当在Jenkins上未启用Azure AD时,Gitlab会在每次推送后触发构建,您可以在Gitlab x1c 0d1x中跟踪每个步骤的状态
- 当在Jenkins上启用Azure AD时,Gitlab无法触发Jenkins(使用Webhooks或官方Jenkins集成)
问题
- Jenkins是否有办法根据用户提供多种身份验证策略?(就像Gitlab一样)
- Gitlab是否有办法使用Jenkins集成或Webhooks的其他用户/密码?
- 我们必须在Azure AD和Gitlab集成之间做出选择吗?(如果是,这是否意味着没有人使用Jenkins单点登录和Gitlab?看起来很奇怪)
Leads & Ideas
- 尝试使用webhooks而不是Jenkins集成,但失败了,因为webhooks还需要用户名/密码(集成可能不那么“高级”)
- 尝试在Jenkins上启用多个auth方法,但现在似乎不可能(https://issues.jenkins.io/browse/JENKINS-15063)
- 尝试在Azure AD上为Gitlab授予角色权限,但它不会改变任何东西,因为我找不到如何使用Jenkins使用OAuth来创建Gitlab
我仔细地寻找答案,但仍然可能错过了一些琐碎的东西。我没有找到太多关于这种特定设置的文献,所以我希望这里的人以前确实遇到过这种情况🙂
谢谢你的帮忙
1条答案
按热度按时间qnyhuwrf1#
我找到了解决这个问题的方法。
1.通过点击顶部栏中的登录用户名来识别您的用户ID。您将获得Jenkins用户ID,即gitlab中的userusername。例如:A42fac35-6in9-464d-8ffb-71263843b814
1.为所需用户生成api-token,并从https://Jenkins.example.com/user//configure中复制密码<user_ID>。此api-token将成为您在gitlab中的密码。
通过在gitlab中提供这些细节,可以与Jenkins集成。