Gitlab+Jenkins+Pipeline+WebHook+Multibranch-实现持续集成
[Gitlab + Jenkins + Pipeline + WebHook+ Multibranch] - 实现持续集成和自动发布
本文的实现:
成都创新互联公司一直秉承“诚信做人,踏实做事”的原则,不欺瞒客户,是我们最起码的底线! 以服务为基础,以质量求生存,以技术求发展,成交一个客户多一个朋友!为您提供做网站、网站制作、成都网页设计、成都微信小程序、成都网站开发、成都网站制作、成都软件开发、成都app软件开发公司是成都本地专业的网站建设和网站设计公司,等你一起来见证!
- 代码提交gitlab,自动触发Jenkins构建
- gitlab开发分支merge后自动发布到dev环境
-
gitlab master分支merge后自动构建,需手动更新prod环境
- Jenkins准备工作
- Jenkinsfile准备工作
- Gitlab准备工作
- 选择Jenkins任务的触发方式
- 验证
Jenkins准备工作
- 安装插件
gitlab
pipeline
- 配置Gitlab的连接
- 打开
系统管理 - 系统设置 - gitlab
- 去掉此选项的勾选
Enable authentication for '/project' end-point
- 配置GitLab connections
- 设置
Connection name
和Gitlab host URL
- Credentials的配置
- 添加Jenkins凭据
- 类型选择
Gitlab API token
- API token的获取
- 在Gitlab上拥有一个用户并具有developer角色
- 获取方法:
登录用户 - User settings - Access Tokens
,创建一个Token记录
- 复制Token值并保存到Jenkins的凭据中
- 点击下面的
Test Connection
测试- 成功会提示
Success
- 如果失败检查gitlab的url地址是否正确
- 成功会提示
- 打开
- 配置多分支流水线任务
- 新建任务,选择
多分支流水线
- 配置任务
- 添加一个仓库,类型选
Git
- Credentials的配置
- 添加Jenkins凭据
- 类型选择
Username with Password
- 用户的获取
- 在Gitlab上拥有一个用户并具有developer角色
- 如果你的项目类型属于
Private
,这个用户必须是这个项目的成员
- 其他默认读取根目录下的Jenkinsfile文件
- 新建任务,选择
Jenkinsfile准备工作
参考 Jenkinsfile Demo
主要配置:
// 获取gitlab connection, 填写我们之前配置gitlab connection
properties([gitLabConnection('gitlab-bigdata')])
// 拉取代码
checkout scm
// 告诉gitlab job状态
updateGitlabCommitStatus name: 'build', state: 'pending'
// 根据不同的分支触发不同的步骤
if (env.BRANCH_NAME == 'master' || env.BRANCH_NAME == 'dev' ) {
stage("Build Docker Image"){
echo "build docker image"
echo "Only dev/master branch can build docker image"
}
if(env.BRANCH_NAME == 'dev'){
stage("Deploy to test"){
echo "branch dev to deploy to environment test"
}
stage("Integration test"){
echo "test环境集成测试"
}
}
if(env.BRANCH_NAME == 'master'){
stage("Deploy to prod"){
echo "branch master to deploy to environment prod"
}
stage("Health check"){
echo "prod检查"
}
}
}
Gitlab准备工作
- 修改默认的安全请求
- 注意: 当Jenkins和Gitlab在同一台机器时
- 使用root登录,
管理中心 - 设置 - 网络 - 外发请求(Admin Area - settings - Network - Outbound requests)
- 加上此选项的勾选
Allow requests to the local network from hooks and services
, 保存
选择Jenkins任务的触发方式
- 手动触发
- 定时触发
Gitlab trigger
- 进入项目,
Settings - Integrations
- 填写Jenkins任务的地址,选中
Push events
和Merge request events
- Jenkins url格式:
http://JENKINS_URL/project/PROJECT_NAME
When you configure the plugin to trigger your Jenkins job, by following the instructions below depending on job type, it will listen on a dedicated URL for JSON POSTs from GitLab's webhooks. That URL always takes the form http://JENKINS_URL/project/PROJECT_NAME, or http://JENKINS_URL/project/FOLDER/PROJECT_NAME if the project is inside a folder in Jenkins. You should not be using http://JENKINS_URL/job/PROJECT_NAME/build or http://JENKINS_URL/job/gitlab-plugin/buildWithParameters, as this will bypass the plugin completely.
- 进入项目,
验证
- 提交代码
- 查看状态 - 进入项目
- WebHook状态
- 依次点击
Settings - Integrations
- 编辑触发Jenkins的那条记录
- 查看
Recent Deliveries
部分,显示了最近的Trigger状态
- 依次点击
- Pipelines状态
- Jenkins Job状态
- WebHook状态
- 成功状态
- WebHook状态 -
200
- Pipelines状态 -
passed
- Jenkins Job状态 -
成功
- WebHook状态 -
感谢
- CI/CD之Gitlab集成Jenkins多分支pipeline实现质量检测和自动发布
网站栏目:Gitlab+Jenkins+Pipeline+WebHook+Multibranch-实现持续集成
网站URL:http://ybzwz.com/article/gedddh.html