Gitlab+Jenkins+Pipeline+WebHook+Multibranch-实现持续集成
admin
2023-03-04 16:42:17
0

[Gitlab + Jenkins + Pipeline + WebHook+ Multibranch] - 实现持续集成和自动发布

本文的实现:

  • 代码提交gitlab,自动触发Jenkins构建
  • gitlab开发分支merge后自动发布到dev环境
  • gitlab master分支merge后自动构建,需手动更新prod环境

    1. Jenkins准备工作
    2. Jenkinsfile准备工作
    3. Gitlab准备工作
    4. 选择Jenkins任务的触发方式
    5. 验证

Jenkins准备工作

  • 安装插件
    1. gitlab
    2. pipeline
  • 配置Gitlab的连接
    1. 打开系统管理 - 系统设置 - gitlab
    2. 去掉此选项的勾选Enable authentication for '/project' end-point
    3. 配置GitLab connections
    4. 设置Connection nameGitlab host URL
    5. Credentials的配置
      1. 添加Jenkins凭据
      2. 类型选择Gitlab API token
      3. API token的获取
        1. 在Gitlab上拥有一个用户并具有developer角色
        2. 获取方法:登录用户 - User settings - Access Tokens,创建一个Token记录
      4. 复制Token值并保存到Jenkins的凭据中
      5. 点击下面的Test Connection测试
        1. 成功会提示Success
        2. 如果失败检查gitlab的url地址是否正确
  • 配置多分支流水线任务
    1. 新建任务,选择多分支流水线
    2. 配置任务
    3. 添加一个仓库,类型选Git
    4. Credentials的配置
      1. 添加Jenkins凭据
      2. 类型选择Username with Password
      3. 用户的获取
        1. 在Gitlab上拥有一个用户并具有developer角色
        2. 如果你的项目类型属于Private,这个用户必须是这个项目的成员
    5. 其他默认读取根目录下的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准备工作

  • 修改默认的安全请求
    1. 注意: 当Jenkins和Gitlab在同一台机器时
    2. 使用root登录,管理中心 - 设置 - 网络 - 外发请求(Admin Area - settings - Network - Outbound requests)
    3. 加上此选项的勾选Allow requests to the local network from hooks and services, 保存

选择Jenkins任务的触发方式

  • 手动触发
  • 定时触发
  • Gitlab trigger

    1. 进入项目,Settings - Integrations
    2. 填写Jenkins任务的地址,选中Push eventsMerge request events
    3. 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.

验证

  1. 提交代码
  2. 查看状态 - 进入项目
    1. WebHook状态
      1. 依次点击Settings - Integrations
      2. 编辑触发Jenkins的那条记录
      3. 查看Recent Deliveries部分,显示了最近的Trigger状态
    2. Pipelines状态
    3. Jenkins Job状态
  3. 成功状态
    1. WebHook状态 - 200
    2. Pipelines状态 - passed
    3. Jenkins Job状态 - 成功

感谢

  • CI/CD之Gitlab集成Jenkins多分支pipeline实现质量检测和自动发布

相关内容

热门资讯

红场阅兵在即:首次取消展示重型... 澎湃新闻记者 薛晶俄罗斯将于5月9日在莫斯科举行卫国战争胜利日阅兵活动。据新华社报道,5月7日,俄罗...
吉林化工园区推动产业转型升级抢... 进入生产旺季,吉林化工园区美思德(吉林)新材料有限公司生产线满负荷运转。在数字化车间内,巨大的信息屏...
我国首台双核原子量子计算机“汉... IT之家 5 月 8 日消息,据央视新闻今日消息,由中国科学院牵头,联合武汉大学、华中科技大学和武汉...
台军前高官怒轰M1A2T战车“... 海峡导报综合报道 民进党当局对美采购108辆M1A2T战车,但台陆军前司令李翔宙怒轰,采购M1A2T...
爆火的“平替游”,正在撕开谁的... 【文/观察者网 邓军 编辑/赵乾坤】受中东地缘局势不确定性及国际油价波动等因素影响,今年“五一”假期...
8名网贷设计者,揭秘大厂如何“... 00后李明,是老同学眼中“别人家的孩子”。他在重点大学读着自己梦想的心理学专业,还计划念博士。每次和...
“横行霸道”2亿年,小小螃蟹如... 一项近日发表于eLife的研究汇总形成了迄今最大的关于螃蟹如何运动的数据集。通过对比多个物种,科学家...
移动云 智能新空间 2026移... 做强算力资源、搭建服务平台、焕新AI体验、推进生态共建……5月8日,中国移动2026移动云大会主论坛...
4月岛内县市长声量排行蒋万安居... 海峡导报综合报道 随着2026“九合一”选战逼近,选举相关讨论声量逐步升高。岛内媒体调查4月份全台县...
马斯克官宣:解散xAI! 最新官宣。 当地时间5月6日,埃隆・马斯克在社交平台X正式宣布,xAI将解散并停止作为独立公司运营,...