前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CI/CD之Gitlab集成Jenkins多分支pipeline实现质量检测和自动发布

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

作者头像
Ryan-Miao
发布2019-06-18 20:58:35
3.1K0
发布2019-06-18 20:58:35
举报
文章被收录于专栏:Ryan Miao

本次实施主要实现:

  • 代码提交gitlab,自动触发Jenkins构建
  • gitlab发起Merge Request, 需要Jenkins检查通过才可以merge,实现代码review和质量管控
  • gitlab开发分支merge后自动发布到test环境
  • gitlab master分支merge后自动发布到prod环境

配置gitlab connection

系统设置-gitlab

配置API token, 需要登陆gitlab,给一个developer角色的账号,在系统设置中找到access token, 获取token。 然后在Jenkins中配置Gitlab API Toekn的凭证。

Jenkins多分支Job

新建多分支流水线任务。

配置分支源,输入gitlab地址,创建一个username password token, 填入gitlab的账号和密码。其他默认读取根目录下的jenkinsfile文件。

接下来重点就是Jenkinsfile里的配置。

主要有:

获取gitlab connection, 填写我们之前配置gitlab connection

代码语言:javascript
复制
properties([gitLabConnection('gitlab-bigdata')])

拉取代码

代码语言:javascript
复制
checkout scm

告诉gitlab job状态

代码语言:javascript
复制
updateGitlabCommitStatus name: 'build', state: 'pending'

不同分支走不同的构建方式

代码语言:javascript
复制
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 trigger.

Gitlab Merge Request

gitlab在项目设置中,找到Merge Request

代码语言:javascript
复制
Only allow merge requests to be merged if the pipeline succeeds 
Pipelines need to be configured to enable this feature. 
Only allow merge requests to be merged if all discussions are resolved

当我们发起一个M-R

当pipeline构建成功之后:

我们Jenkinsfile里设置不同分支的构建策略,这样就实现了不同环境的发布和质量校验。需要注意的是,当代码合并到master的时候,我们的功能就会执行发布策略了。而实际上,我们应该发布到canary金丝雀环境,即预生产环境,等确保没有任何问题之后再手动发布到prod。这里简化处理发布流程,直接发布。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-06-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Jenkins多分支Job
  • Gitlab Merge Request
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档