Gitlab+Jenkins+Pipeline+WebHook+

2019-07-25  本文已影响0人  米开朗基乐

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

本文的实现:


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

Jenkins准备工作

  1. gitlab
  2. pipeline
  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准备工作

选择Jenkins任务的触发方式

验证

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

感谢

上一篇 下一篇

猜你喜欢

热点阅读