Jenkins集成GitLab的正确姿势,实现Git代码提交触发CI/CD
❝
jenkins和gitlab是目前DevOps工具链中最常见的,抛开gitlab-ci不谈,gitlab代码提交触发jenkins流水线是最经典的搭配。 这里就介绍下如何配置实现jenkins和gitlab之间的集成。
安装GitLab Plguin
- Gitlab Plugin- 这个插件允许GitLab在提交代码或打开/更新合并请求时触发Jenkins中的构建。它还可以将构建状态发送回GitLab。
image.png
配置Jenkins Server
首先创建GitLab凭证,将凭证填充到 Manage Jenkins->System->enable authentication for '/project' end-point
。
❝
通过该配置,相当于创建了jenkins job 可以操作访问gitlab的凭证,在后面的jenkinsfile中就会使用声明并使用该凭证。
配置Jenkins Job
创建jenkins job, 源代码管理选 Git,Repository URL 填写你 gitlab 上源码 repo 的地址,Credentials 是拉取代码时需要用到的身份认证
image.png
构建触发器选择 “Build when a change is pushed to GitLab” (记住后面的GitLab webhook URL 后面要填在gitlab的webhooks中),按照下面勾选
同时点击“高级”,“Allowd branches” 勾选 “Filter branches by regex”
点 “Generate” 生成 token,这个 token 用于填写到 gitlab 的 webhook 里,gitlab 检测到代码提交,会通知 webhook 里填写的 Jenkins 生成的回调URL,并带上这个 token,防止其它人触发 jenkins 的持续集成
注: 复制出 URL 和 token,后面配置 gitlab 的 webhook 会用到
image.png
❝
该步骤的目的主要是为了将要通过gitlab触发的jenkins job的信息准备好,用于后面的配置gitlab-webhook, 让gitlab知道该触发哪个jenkins job.
新版jenkins可能遇到的坑
在“Generate” 生成 token时候,如果使用的是高版本的 jenkins ,会出现403错误 HTTP ERROR 403 No valid crumb was included in the request
这是因为 jenkins 的防止跨站点请求伪造(Prevent Cross Site Request Forgery exploits)阻拦了请求,本来低版本的 jenkins 可以在界面把这个关掉,貌似高版本去掉了,可以通过如下方式:
hudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION = true
如果出现下图所示的情况,就表示命令成功了
image.png
上面的方法对于在容器里运行的jenkins而言,需要进入容器修改配置,永久生效
修改/usr/local/bin/jenkins.sh , 找到exec java那行,添加-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true
# 最终效果
exec java -Duser.home="$JENKINS_HOME" -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true "${java_opts_array[@]}" -jar ${JENKINS_WAR} "${jenkins_opts_array[@]}" "$@"
至此,jenkins 的持续集成配置好了,还需要配置 gitlab 的 webhook,用于代码提交通知 jenkins。
配置Gitlab Webhook
打开 gitlab 的 repo 的 Settings-Integrations,URL 和 Secret Token 填写 jenkins job中构建触发器部分生成的,点击 “Add webhook”,搞定!在链接那里输入之前jenkins上提供的webhook url 以及“Secret token“,编辑完后保存
点击测试,如果返回200,那就成功了,去jenkins看看有没有自动构建的记录
配置Jenkins返回执行状态
上面步骤仅仅实现了gitlab代码提交触发jenkins job, 那么job执行完成后的状态,怎么在gitlab上看到呢?
pipeline {
agent any
options {
gitLabConnection('gitlab-connection')
//Manage Jenkins->System->enable authentication for '/project' end-pointYour配置的GitLab Connection
}
stages {
stage('build') {
steps {
updateGitlabCommitStatus name: 'build', state: 'running'
hogehoge
}
}
}
post {
success {
updateGitlabCommitStatus name: 'build', state: 'success'
}
failure {
updateGitlabCommitStatus name: 'build', state: 'failed'
}
}
}
参数说明:
gitLabConnection 是和GitLab链接的名称。GitLab名称的设定是在jenkins管理>系统设定>Gitlab当中设置详细的gitlab url和token
updateGitlabCommitStatus
name: build 名称
state: pending, running, canceled, success, failed
参考:
Jenkins集成GitLab的正确姿势,实现Git代码提交触发CI/CD的更多相关文章
- Git代码提交规范
1. 引言 思想,因人而异,难以重复 写代码时,每个人的习惯是不一样的,所以,引入了代码规范,为了省力,引入了自动格式化代码工具,前端工程中比较典型的自动格式化代码工具如:Prettier · Opi ...
- 常用git代码提交命令
知识点:本篇博客记录了日常开发中,所涉及到git代码提交命令 (一)初始化本地仓库,提交代码,提交到远程git远程仓库 git init //初始化本地仓库 git add . //将当前目 ...
- 自建Git服务Gogs和CI/CD服务Drone
自建Git服务Gogs和CI/CD服务Drone 项目:https://gogs.io Gogs运行 docker run -d --name=gogs -p 10022:22 -p 10088:30 ...
- 技术干货:Jenkins集成GitLab
Jenkins免密拉取GitLab项目 1.在Jenkins上为GitLab创建一个专有的拉取代码的账号 Jenkins需要构建哪些项目就在GitLab给予账号相应权限 我这里已经创建过Jenkins ...
- Salesforce学习之路(四)利用Jenkins和Git实现Salesforce的CI/CD功能
上文提到,基于CRM的二次开发是必不可少的,但是在实际项目中CI/CD是不可忽略的一个重要部分,与传统的Java,Python项目不同,如果对Salesforce进行持续集成和持续部署呢? 结合找到的 ...
- git代码提交步骤,教程
代码提交 代码提交一般有五个步骤: 1.查看目前代码的修改状态 2.查看代码修改内容 3.暂存需要提交的文件 4.提交已暂存的文件 5.同步到服务器 1. 查看目前代码的修改状态 提交代码之前 ...
- git代码提交与克隆
在工作中,越来越多的人会使用git来管理代码.下面简单的介绍一下git在工作中的使用流程 1.给你一个git地址,将代码拉下来基本操作流程如下: 1.1 git clone "项目地址&qu ...
- Git代码提交报错 (Your branch is up to date with 'origin/master)
一.前言 今天码云上提交自己本地的一个SpringBoot+Vue的小项目,由于前端代码提交第一次时候提交码云上文件夹下为空,于是自己将本地代码复制到码云拉取下来代码文件夹下,然而git add . ...
- jenkins集成gitlab
一.配置jenkins 1.安装Gitlab Hook Plugin )生成随机token 在系统中生成 openssl rand -hex 0f2a47c861133916d2e299e3 )创建 ...
- git代码提交方式
https://my.oschina.net/tearlight/blog/193921 <a>github的提交方式 (1)git add .----------------- ...
随机推荐
- zabbix“专家坐诊”第178期问答汇总
大家好,我是乐乐.早在三年前,我们就在社区举办了zabbix公益问答活动,并且定在每周三邀请资深的zabbix技术工程师,为社群的小伙伴进行免费的答疑.到现在已经178期了.后续我将会把每期的答疑汇总 ...
- Zabbix6.0使用教程 (五)—zabbix从二进制包安装上篇
大家好,我是乐乐.上一期我们已经讲过从源代码安装zabbix,本期着重讲从二进制包安装zabbix. 当我们在ZABBIX官方存储库可以看到,Zabbix SIA 提供如下官方RPM和DEB包: ·R ...
- Git 系列:简介安装以及配置管理
目录 简介安装 简介 Centos安装 配置管理 git help 概要 选项 示例 git-doc git config 概要 选项 变量 示例 初始化配置 简介安装 简介 https://git- ...
- vscode 两种定位跳转的方法 ctrl+p 方法1 path:行号 方法2 #变量名 - 针对$store变量不好找的方案 方法1可以备注在代码里面
vscode 两种定位跳转的方法 ctrl+p 方法1 path:行号 方法2 #变量名 - 针对$store变量不好找的方案 方法1可以备注在代码里面 问题 $store的变量不能跳转,有跳转插件也 ...
- 摆脱鼠标操作 - vscode - vim Ctrl + hjkl 我定位为 上下翻半页和行头行尾
为什么 摆脱鼠标操作 - vscode - vim Ctrl + hjkl 我定位为 上下翻半页和行头行尾 翻页和当前行的开头结尾 我觉得都是高频操作 实现 settings.json 还附加了几个其 ...
- 可穿戴智能手环解决方案之BLE的ADV广播协议解读
一 概念 直接上英文原文,怕自己的翻译误导大家. When a BLE device is advertising, it periodically transmits packets, which ...
- 音频信号质量的度量标准--MOS得分的由来
早期语音质量的评价方式是凭主观的,人们在打通电话之后通过人耳来感知语音质量的好坏.1996年国际ITU组织在ITU-T P.800和P.830建议书开始制订相关的评测标准:MOS(Mean Opini ...
- python元组(tuple)循环遍历实例分析
一 概念: 元组是有序且不可更改的集合.在 Python 中,元组是用圆括号编写的. 二 使用方法: 1 基本创建: thistuple = ("apple", "ba ...
- 熬夜的JaVa
1 import java.util.Scanner; 2 3 public class viovo { 4 static int number = 5;//五个商品信息 5 static oppo[ ...
- CodeForces Hello 2024 个人题解(A~C)
A. Wallet Exchange 时间限制: 1秒 内存限制: 256兆 输入: 标准输入 输出: 标准输出 Alice and Bob are bored, so they decide to ...