栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

GitLab+Jenkins集群+docker CICD集成

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

GitLab+Jenkins集群+docker CICD集成

前言

最近部门进行CICD架构升级将引入k8s编排docker容器。借此机会梳理下目前应用部署发布方式。当前架构是我刚到公司时基于gitlab+jenkins+docker+nexus搭建。引入K8S后将调整pod yaml生成方式通过kubectl 命令启动。

功能介绍及实现方式
  • 代码管理工具选择gitlab社区版
  • 搭建nexus 作为maven私服与dockerhub服务器
  • 通过三台物理机搭建jenkins主从集群
  • jenkins 安装各种插件
  • 通过jenkins流水线编写jenkinsfile
  • 编写dockerfile
  • 编写启动脚本
  • 集成应用项目

其实在外企比较常见的CICD一般会与jira集成,通过jira跟踪每次build然后进行发布

由于当前部门研发人员不多管理的项目不超过50个这套方案也算够用。

整体使用流程相对简单

  1. 首先开发人员提交merge request, project owner 同意合并分支
  2. 开发人员登陆jenkins 执行build
  3. jenkins 流水线开始执行
  4. 下载执行分支代码,编译,构建镜像,推送镜像
  5. ssh 登陆到具体物理机执行脚本 停容器 删除老镜像,下载新景象,启动容器

以上所有操作通过如下三个文件完成。

 
 Jenkinsfile 

由于项目使用maven多module方式管理,jenkinsfile可以参考如下方式

node {
   stage('prepare') {
        checkout([$class: 'GitSCM', branches: [[name: 'origin${app_name}"
        echo "docker-img-name: ${docker_img_name}"
        sh "docker build --build-arg APP_NAME=${app_name} --build-arg SOURCE_FILE=${source_file} --build-arg JAR_FILE=${jar_file} -t ${docker_img_name}:${commit_id} ."
        sh "docker login -u **** -p **** ${dockerHub}:****"
        sh "docker push ${docker_img_name}:${commit_id}"
        echo "delete images"
        sh "docker rmi `docker images | grep  '${app_name}' | awk '{print $3}'`"
   }
   stage('deploy'){
        for (ip in ipList.tokenize(',')){
           def remote = [:]
           remote.name = ip
           remote.host = ip
           remote.user = ****
           remote.password = ****
           remote.allowAnyHosts = true
           sshPut remote: remote, from: 'deploy.sh', into: '/'
           sshCommand remote: remote, command: "chmod 777 /deploy.sh"
           sshCommand remote: remote, command: "docker login -u **** -p **** ${dockerHub}:****"
           sshCommand remote: remote, command: "sh /deploy.sh ${docker_img_name}:${commit_id} ${pom.artifactId} ${nacosServer} ${port}"
         }
      }
}
 总结

CICD 集成其实不难,难点是如何规范的使用。后续也会分享升级为k8s后的架构与实现方案

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/837820.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号