jenkins+gitlab+微服务发布+k8s发布

背景:jenkins+gitlab+微服务发布+k8s发布实现自动更新
1.配置jenkins pipeline

  1. pipeline语法
    `node {
    try {
    stage(‘代码拉取‘) {
    git credentialsId: ‘xiongxj‘, url: ‘[email protected]:xinjiang.xiong/oam.git‘

    }
    stage(‘项目构建‘) {
       sh " /opt/software/apache-maven-3.6.0/bin/mvn clean package"
    }
    def regPrefix = ‘k8s.harbor.maimaiti.site/oam/‘
    stage(‘镜像构建‘) {
    docker.withRegistry(‘http://k8s.harbor.maimaiti.site/‘,‘k8sharbor‘){
         if ("${MODULE}".contains(‘oamboot-eurekaServer‘)){
           dir(‘oamboot-eureka-server‘) {
                def imageName = docker.build("${regPrefix}oam-eurekaserver:V1.0-${env.BUILD_ID}")
                imageName.push("V1.0-${env.BUILD_ID}")
                //imageName.push("latest")
                sh "/usr/bin/docker rmi ${regPrefix}oam-eurekaserver:V1.0-${env.BUILD_ID}"
            }
            }
         if ("${MODULE}".contains(‘oambootActiviti‘)){
           dir(‘oamboot-activiti‘) {
                def imageName = docker.build("${regPrefix}oam-activiti:V1.0-${env.BUILD_ID}")
                imageName.push("V1.0-${env.BUILD_ID}")
                //imageName.push("latest")
                sh "/usr/bin/docker rmi ${regPrefix}oam-activiti:V1.0-${env.BUILD_ID}"
            }
            }
         if ("${MODULE}".contains(‘oamboot-applyBasicOperation‘)){
           dir(‘oamboot-applyBasicOperation‘) {
                def imageName = docker.build("${regPrefix}apply-basicoperation:V1.0-${env.BUILD_ID}")
                imageName.push("V1.0-${env.BUILD_ID}")
                //imageName.push("latest")
                sh "/usr/bin/docker rmi ${regPrefix}apply-basicoperation:V1.0-${env.BUILD_ID}"
            }
            }
         if ("${MODULE}".contains(‘oamboot-applyDB‘)){
           dir(‘oamboot-applyDB‘) {
                def imageName = docker.build("${regPrefix}oam-applydb:V1.0-${env.BUILD_ID}")
                imageName.push("V1.0-${env.BUILD_ID}")
                //imageName.push("latest")
                sh "/usr/bin/docker rmi ${regPrefix}oam-applydb:V1.0-${env.BUILD_ID}"
            }
            }
         if ("${MODULE}".contains(‘oamboot-applyOperation‘)){
           dir(‘oamboot-applyOperation‘) {
                def imageName = docker.build("${regPrefix}apply-operation:V1.0-${env.BUILD_ID}")
                imageName.push("V1.0-${env.BUILD_ID}")
                //imageName.push("latest")
                sh "/usr/bin/docker rmi ${regPrefix}apply-operation:V1.0-${env.BUILD_ID}"
            }
            }
         if ("${MODULE}".contains(‘oamboot-basic‘)){
           dir(‘oamboot-basic‘) {
                def imageName = docker.build("${regPrefix}oam-basic:V1.0-${env.BUILD_ID}")
                imageName.push("V1.0-${env.BUILD_ID}")
                //imageName.push("latest")
                sh "/usr/bin/docker rmi ${regPrefix}oam-basic:V1.0-${env.BUILD_ID}"
            }
            }
         if ("${MODULE}".contains(‘oamboot-cmdb‘)){
           dir(‘oamboot-cmdb‘) {
                def imageName = docker.build("${regPrefix}oamboot-cmdb:V1.0-${env.BUILD_ID}")
                imageName.push("V1.0-${env.BUILD_ID}")
                //imageName.push("latest")
                sh "/usr/bin/docker rmi ${regPrefix}oamboot-cmdb:V1.0-${env.BUILD_ID}"
            }
            }
         if ("${MODULE}".contains(‘oamboot-email‘)){
           dir(‘oamboot-email‘) {
                def imageName = docker.build("${regPrefix}oam-email:V1.0-${env.BUILD_ID}")
                imageName.push("V1.0-${env.BUILD_ID}")
                //imageName.push("latest")
                sh "/usr/bin/docker rmi ${regPrefix}oam-email:V1.0-${env.BUILD_ID}"
            }
            }
         if ("${MODULE}".contains(‘oamboot-file‘)){
           dir(‘oamboot-file‘) {
                def imageName = docker.build("${regPrefix}oam-file:V1.0-${env.BUILD_ID}")
                imageName.push("V1.0-${env.BUILD_ID}")
                //imageName.push("latest")
                sh "/usr/bin/docker rmi ${regPrefix}oam-file:V1.0-${env.BUILD_ID}"
            }
            }
        if ("${MODULE}".contains(‘oamboot-zuul‘)){
           dir(‘oamboot-zuul‘) {
                def imageName = docker.build("${regPrefix}oam-api-getaway-zuul:V1.0-${env.BUILD_ID}")
                imageName.push("V1.0-${env.BUILD_ID}")
                //imageName.push("latest")
                sh "/usr/bin/docker rmi ${regPrefix}oam-api-getaway-zuul:V1.0-${env.BUILD_ID}"
            }
            }
           }
        }
    stage(‘重启应用‘){
         if ("${MODULE}".contains(‘oamboot-eurekaServer‘)){
            sh "sed -i \‘s/latest/V1.0-${env.BUILD_ID}/g\‘ yaml/oam-EurekaServer.yml"
            sh "/usr/local/bin/kubectl   apply  -f         yaml/oam-EurekaServer.yml  --record "
            }
         if ("${MODULE}".contains(‘oambootActiviti‘)){
            sh "sed -i \‘s/latest/V1.0-${env.BUILD_ID}/g\‘ yaml/oam-activiti.yml"
            sh "/usr/local/bin/kubectl   apply  -f         yaml/oam-activiti.yml  --record "
            }
         if ("${MODULE}".contains(‘oamboot-applyBasicOperation‘)){
            sh "sed -i \‘s/latest/V1.0-${env.BUILD_ID}/g\‘ yaml/apply-basicoperation.yml"
            sh "/usr/local/bin/kubectl   apply  -f         yaml/apply-basicoperation.yml --record "
            }
         if ("${MODULE}".contains(‘oamboot-applyDB‘)){
            sh "sed -i \‘s/latest/V1.0-${env.BUILD_ID}/g\‘ yaml/oam-applydb.yml"
            sh "/usr/local/bin/kubectl   apply  -f         yaml/oam-applydb.yml  --record "
            }
         if ("${MODULE}".contains(‘oamboot-applyOperation‘)){
            sh "sed -i \‘s/latest/V1.0-${env.BUILD_ID}/g\‘ yaml/apply-operation.yml"
            sh "/usr/local/bin/kubectl   apply  -f         yaml/apply-operation.yml  --record "
            }
         if ("${MODULE}".contains(‘oamboot-basic‘)){
            sh "sed -i \‘s/latest/V1.0-${env.BUILD_ID}/g\‘ yaml/oam-basic.yml"
            sh "/usr/local/bin/kubectl   apply  -f         yaml/oam-basic.yml  --record "
            }
         if ("${MODULE}".contains(‘oamboot-cmdb‘)){
            sh "sed -i \‘s/latest/V1.0-${env.BUILD_ID}/g\‘ yaml/oamboot-cmdb.yml"
            sh "/usr/local/bin/kubectl   apply  -f         yaml/oamboot-cmdb.yml  --record "
            }
         if ("${MODULE}".contains(‘oamboot-email‘)){
            sh "sed -i \‘s/latest/V1.0-${env.BUILD_ID}/g\‘ yaml/oamboot-email.yml"
            sh "/usr/local/bin/kubectl   apply  -f         yaml/oamboot-email.yml  --record "
            }
         if ("${MODULE}".contains(‘oamboot-file‘)){
            sh "sed -i \‘s/latest/V1.0-${env.BUILD_ID}/g\‘ yaml/oam-file.yml"
            sh "/usr/local/bin/kubectl   apply  -f         yaml/oam-file.yml  --record "
            }
        if ("${MODULE}".contains(‘oamboot-zuul‘)){
            sh "sed -i \‘s/latest/V1.0-${env.BUILD_ID}/g\‘ yaml/oamboot-zuul.yml"
            sh "/usr/local/bin/kubectl   apply  -f         yaml/oamboot-zuul.yml  --record "
        }            
    
    }       

}catch (any) {
currentBuild.result = ‘FAILURE‘
throw any}

}
`

原文地址:https://blog.51cto.com/whitehat/2399450

时间: 2024-09-29 22:08:47

jenkins+gitlab+微服务发布+k8s发布的相关文章

微服务与K8S容器云平台架构

微服务与K8S容器云平台架构 微服务与12要素 网络 日志收集 服务网关 服务注册 服务治理- java agent 监控 今天先到这儿,希望对技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管理,团队建设 有参考作用 , 您可能感兴趣的文章: 领导人怎样带领好团队构建创业公司突击小团队国际化环境下系统架构演化微服务架构设计视频直播平台的系统架构演化微服务与Docker介绍Docker与CI持续集成/CD互联网电商购物车架构演变案例互联网业务场景下消息队列架构互联网高效研

spring cloud微服务项目的发布与部署

ranhou zai 普通的javaweb项目要发布的话,一般就三种方法: 1.把项目直接放在tomcat的webApps下启动tomcat即可. 2.把项目打包成war包放在webApps下,启动tomcat,自动解压war包. 3.采用显示定义上下文的方法(上面两种都是隐式定义上下文),也就是改配置文件的方法,要么在Tomcat的conf/Catalina/localhost目录下创建一个XML文件:要么在Tomcat的conf/server.xml文件中添加一个Context元素. 但现在

基于DevOps 微服务以及k8s的高可用架构探索与实现

现代的企业面临着一个VUCA的时代,高可用系统架构面对着诸多不确定性带来的影响和挑战,如何才能能够突破困境,使得复杂的系统仍然能保持业务的连续性.业务的弹性扩容也同时会对高可用性的架构造成影响,在实践中,我们结合微服务/K8S/DevOps这三架马车进行了微服务的容器化的实践之路. 高可用架构的挑战 在现实的复杂而又不确定性的环境下,高可用架构面临诸多挑战,都可能对系统带来巨大影响,比如: 应用程序的异常退出 操作系统的突然宕机 服务器的意外断电 运维人员人为操作失误 地震等不可抵抗因素 业务量

ASP.NET Core微服务 on K8S(Jessetalk)(第一章:详解基本对象及服务发现)(持续更新)

课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 任务1:课程介绍 任务2:Labels and Selectors 所有资源对象(包括Pod, Service, Namespace, Volume)都可以打 Label,定义标签 Selectors:=, !=, in, not in, and 关系 Kubernetes Labels 和 Selectors #deploy.yaml apiVersion: apps/v1

k8s原生微服务管理工具helm-v3的使用初探实践(1)

Helm-v3应用包管理器 3.1 为什么需要Helm?K8S上的应用对象,都是由特定的资源描述组成,包括deployment.service等.都保存各自文件中或者集中写到一个配置文件.然后kubectl apply –f 部署. 为什么使用helm?在k8s中,当我们去部署应用的时候,一般都是使用yaml文件去管理我们的应用的发布,比如像微服务,其中包括deployment,service,configmap,ingress,但是如果我们有上百个微服务的话,每次的修改涉及也都会比较多,感觉就

为什么 kubernetes 天然适合微服务 (3)

此文已由作者刘超授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验 四.Kubernetes 本身就是微服务架构 基于上面这十个设计要点,我们再回来看 Kubernetes,会发现越看越顺眼. 首先 Kubernetes 本身就是微服务的架构,虽然看起来复杂,但是容易定制化,容易横向扩展. 如图黑色的部分是 Kubernetes 原生的部分,而蓝色的部分是网易云为了支撑大规模高并发应用而做的定制化部分. Kubernetes 的 API Server 更像网关,提供统一的鉴权

微服务注册与发现

目录 简介 实现服务注册组件 设计服务注册表数据结构 搭建应用程序框架 定义服务注册表接口 使用 ZooKeeper 实现服务注册 服务注册模式 实现服务发现组件 搭建应用程序框架 实现服务发现 服务发现优化方案 服务发现模式 参考 简介 先来回顾下整体的微服务架构 在发布微服务时,可连接 ZooKeeper 来注册微服务,实现"服务注册".当浏览器发送请求后,可使用 Node.js 充当 service gateway,处理浏览器的请求,连接 ZooKeeper,发现服务配置,实现服

第四十四章 微服务CICD(6)- gitlab + jenkins + docker + k8s

总体流程: 在开发机开发代码后提交到gitlab 之后通过webhook插件触发jenkins进行构建,jenkins将代码打成docker镜像,push到docker-registry 之后将在k8s-master上执行rc.service的创建,进而创建Pod,从私服拉取镜像,根据该镜像启动容器 在第四十三章 微服务CICD(5)- gitlab + jenkins + docker中,实现了前两步.本节实现第三步 一.打通jenkins与k8s-master两台机器之间的ssh无密码访问

Jenkins-k8s-helm-harbor-githab-mysql-nfs微服务发布平台实战

基于 K8S 构建 Jenkins 微服务发布平台 实现汇总: 发布流程设计讲解 准备基础环境 K8s环境(部署Ingress Controller,CoreDNS,Calico/Flannel) 部署代码版本仓库Gitlab 配置本地Git上传测试代码,创建项目到Gitlab 部署pinpoint 全链路监控系统(提前修改Dockerfile,打包镜像上传) 部署镜像仓库Harbor(开启helm仓库) master节点部署helm应用包管理器(配置本地helm仓库,上传helm包) 部署K8