基于Kubernetes的DevOps平台企业级实践(二)

接着上一篇继续:

gitlab与jenkins集成

操作步骤

  1. 安装gitlab plugin

    插件中心搜索并安装gitlab,直接安装即可。

  2. 系统管理,配置Gitlab

    其中的API Token,需要从下个步骤中获取
    基于Kubernetes的DevOps平台企业级实践(二)_第1张图片

  3. 获取AccessToken

    登录gitlab,选择user->profile->access tokens新建一个访问token。

  4. 获取Secret Token

    新建job->构建触发器选择 Build when a change is pushed to GitLab->生成一个Secret token

  5. gitlab配置webhook

    进入项目下settings->webhooks->url(是jenkins端job的url)->Secret Token 填入在Jenkins端生成的token->Add webhook->test push envent成功说明通过。

    至此,gitlab与jenkins关联成功。gitlab端提交代码会触发webhook,然后触发jenkins构建打包。

流水线Jenkinsfile文件

编写项目的jenkins文件

pipeline {
   agent { label '10.248.190.3'}       ##指定运行job的jenkins节点
   options {
        gitLabConnection('gitlab')
   }
   stages {
      stage('printenv') {
         steps {
            echo 'Hello World'
            sh 'printenv'
         }
      }
      stage('check') {                    #gitlab的代码拉取
         steps {
            checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '750073ef-4545-451e-865d-4d13a7f0682b', url:
'http://10.248.190.7/root/pipline-brog.git']]])
         } 
      }
      stage('build-image') {                  #构建docker镜像
         steps {
            sh 'docker build . -t myblog:latest'
         }
      }
      stage('deploy') {                      #部署项目到k8s集群
         steps{
              sh "sed -i 's#{{IMAGE_URL}}#myblog:latest#g' deploy/*"
              timeout(time: 1, unit: 'MINUTES') {
                    sh "kubectl apply -f deploy/"
              }
         }
      }
   }
   post {                                #把运行结果发出
        success {
            echo 'Congratulations!'
            sh """
                curl 'https://oapi.dingtalk.com/robot/send?access_token=9e481a9918fb0fe6bd86911f4dfc94bbda5b21d80bb63371c83f79dd1636d484' -H 'Content-Type: application/json'  -d '{"msgtype": "text","text": {"content": "构建成功\n 关键字:DevOps\n 项目分支:${GIT_BRANCH}\n 项目名称: ${JOB_BASE_NAME}\n Commit Id: ${GIT_COMMIT}\n 构建地址:${RUN_DISPLAY_URL}"}}' """
        }
        failure {
            echo 'Oh no!'
            sh """
                curl 'https://oapi.dingtalk.com/robot/send?access_token=9e481a9918fb0fe6bd86911f4dfc94bbda5b21d80bb63371c83f79dd1636d484' -H 'Content-Type: application/json'  -d '{"msgtype": "text","text": {"content": "构建失败\n 关键字:DevOps\n 项目名称: ${JOB_BASE_NAME}\n Commit Id: ${GIT_COMMIT}\n 构建地址:${RUN_DISPLAY_URL}"}}' 
"""
        }
   }
}

钉钉推送

官方文档:https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq
调用钉钉相关api接口:

配置机器人
调用接口发消息:

$  curl  'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx'  \
-H  'Content-Type:  application/json'  \
-d  '{"msgtype":  "text", "text":  {
"content":  "欢迎到DevOps"
}
}'

cicd demo演示

gitlab提交代码
基于Kubernetes的DevOps平台企业级实践(二)_第2张图片
触发jenkins job自动构建
基于Kubernetes的DevOps平台企业级实践(二)_第3张图片
打开blue ocean可以查看job过程中每个具体步骤
基于Kubernetes的DevOps平台企业级实践(二)_第4张图片
最后将构建结果发送至钉钉群

基于Kubernetes的DevOps平台企业级实践(二)_第5张图片

总结

整个DevOps流水线就可以拉通,但是整个架构中还是有一些可以优化的点,之后的博客将会基于该架构做优化,欢迎大家关注我的博客。

你可能感兴趣的:(DevOps,kubernetes,docker,devops)