返回介绍

PART Ⅰ : 容器云OPENSHIFT

PART Ⅱ:容器云 KUBERNETES

PART Ⅲ:持续集成与持续部署

PART Ⅴ:日志/监控/告警

PART Ⅵ:基础

PART Ⅶ:数据存储、处理

PART VIII:CODE

PART X:HACKINTOSH

PART XI:安全

Gitlab

发布于 2024-06-08 21:16:47 字数 8915 浏览 0 评论 0 收藏 0

Jenkins的Gitlab插件能接收gitlab仓库代码事件触发的Webhook来触发Jenkins Job/Pipeline的构建,并且能将构建状态同步到Gitlab中.

插件Github:https://github.com/jenkinsci/gitlab-plugin

利用此插件可实现如下效果:

Jenkins -> 系统管理 ->插件管理->可用插件->搜索"gitlab"

插件下载地址:https://plugins.jenkins.io/gitlab-plugin

1、Gitlab发送Webhook到Jenkins时的安全认证配置

Gitlab代码仓库配置web hook时需要Jenkins Gitlab插件的Token,来加密验证webhook的安全性

方式一:全局性的认证Token

① Jenkins创建新用户(授予Job/Build权限即可)

② 获取新用户的User ID和API Token

③ Gitlab配置web hook填写URL时,使用http://USERID:APITOKEN@JENKINS_URL/project/YOUR_JOB即可(Secret Token可忽略)

方式二(推荐):单独项目Jenkins Job的认证Token

在Gitlab中配置Webhook时,将图中的Token填入即可

方式三(不推荐):不使用认证

① Manage Jenkins -> Configure System -> GitLab section -> 取消勾选 "Enable authentication for '/project' end-point"

2、Jenkins回写构建状态到Gitlab时需要的认证授权配置

Jenkins通过Gitlab API将构建状态回写到对应代码仓库时,需要有权限在代码仓库中创建评论,更改状态等

步骤一

① Gitlab创建新用户(建议命名用户名时尽量见名知意,例如:Jenkins)

② 登陆新用户,获取Access Tokens,Token权限只要api即可(及时复制Token,只显示一次)

③ 在Jenkins中创建GitLab API token类型的凭据,在API token字段中保存上一步获取的Token

④ 在Jenkins Gitlab插件中配置gitlab Server相关信息

步骤二

对应代码仓库配置Jenkins Job时要将该Token所属的用户加入members中,授予Developers角色或有更高权限的角色

1、配置Gitlab Buid Trigger

2、配置构建后Gitlab回写信息的动作

  • 添加构建后动作"Pushlish build status to Gitlab"

    之后会在Gitlab代码仓库的CI/CD-->Pipeline和Merge Request中看到构建状态图标

  • 添加构建后动作"Add note with build status on Gitlab merge request"

    之后会根据构建状态的不同在Gitlab的Merge Request中添加不同的comment评论

  • 添加构建后动作"Add Vote for build status on Gitlab merge request"

    之后会根据构建状态的不同在Gitlab的Merge Request中显示不同的投票

  • 添加构建后动作"Accept Gitlab merge request on success"

    该动作会在build构建成功后在Gitla上自动同意接受Merge Request

  • 不添加构建后动作

    Gitlab的事件只会触发Jenkins构建,不会回写任何信息到gitlab对应代码仓库中

详见:gitlab-配置代码仓库事件触发器Webhook

对于Gitlab发送过来的Webhook HTTP POST请求信息,可直接通过以下变量来获取。

  • gitlabBranch
  • gitlabSourceBranch
  • gitlabActionType
  • gitlabUserName
  • gitlabUserEmail
  • gitlabSourceRepoHomepage
  • gitlabSourceRepoName
  • gitlabSourceNamespace
  • gitlabSourceRepoURL
  • gitlabSourceRepoSshUrl
  • gitlabSourceRepoHttpUrl
  • gitlabMergeRequestTitle
  • gitlabMergeRequestDescription
  • gitlabMergeRequestId
  • gitlabMergeRequestIid
  • gitlabMergeRequestState
  • gitlabMergedByUser
  • gitlabMergeRequestAssignee
  • gitlabMergeRequestLastCommit
  • gitlabMergeRequestTargetProjectId
  • gitlabTargetBranch
  • gitlabTargetRepoName
  • gitlabTargetNamespace
  • gitlabTargetRepoSshUrl
  • gitlabTargetRepoHttpUrl
  • gitlabBefore
  • gitlabAfter
  • gitlabTriggerPhrase

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文