gitlab-jenkins-shell-helm-chart-k8s自动化部署微服务

news2024/11/17 19:52:22

1.准备好编译环境的容器,所有容器的镜像制作在gemdale-dockerfile这个代码库里面,也可以直接拉取官方镜像部署

docker run --name node1420-patternx -v /data/var/www/:/data/var/www/ -v /var/jenkins_home/:/var/jenkins_home/ -v /mnt/hgfs/:/mnt/hgfs/ --net host --restart always -d -t node:14.20.0

docker run --name node1615-patternx  -v /data/var/www/:/data/var/www/ -v /var/jenkins_home/:/var/jenkins_home/ -v /mnt/hgfs/:/mnt/hgfs/ --net host --restart always -d -t node:16.15.1

docker run --name nodejs1417-patternx -v /data/var/www/:/data/var/www/ -v /var/jenkins_home/:/var/jenkins_home/ -v /mnt/hgfs/:/mnt/hgfs/ --net host --restart always -d -t jelastic/nodejs:14.17.5-forever

FROM node:16.20.1-bullseye
docker run --name nodejs16 -v /data/var/www/:/data/var/www/ -v /var/jenkins_home/:/var/jenkins_home/ -v /mnt/hgfs/:/mnt/hgfs/ --net host --restart always -d -t linice/nodejs16:v1.1.0.0

FROM golang:1.19.6-buster
docker run --name golang -v /data/var/www/:/data/var/www/ -v /var/jenkins_home/:/var/jenkins_home/ -v /mnt/hgfs/:/mnt/hgfs/ -v /data/etc/cron.d/:/etc/cron.d/ -v /data/etc/supervisord.d/:/etc/supervisord.d/ -v /data/var/log/supervisor/:/var/log/supervisor/ --net host --restart always -d -t golang:1.19.6-bullseye

FROM node:14.20.0-buster
docker run --name nodejs14 -v /data/var/www/:/data/var/www/ -v /var/jenkins_home/:/var/jenkins_home/ -v /mnt/hgfs/:/mnt/hgfs/ --net host --restart always -d -t linice/nodejs14:v1.2.0.0

FROM python:3.9.17-bullseye
docker run --name python39-testing -v /data/var/www/:/data/var/www/ -v /var/jenkins_home/:/var/jenkins_home/ -v /mnt/hgfs/:/mnt/hgfs/ --net host --restart always -d -t linice/python39-testing:v1.0.0.1

FROM maven:3.8.6-openjdk-11
docker run --name maven3-openjdk11 -v /data/var/www/:/data/var/www/ -v /var/jenkins_home/:/var/jenkins_home/ -v /mnt/hgfs/:/mnt/hgfs/ --net host --restart always -d -t linice/maven3-openjdk11:v1.2.0.0

FROM python:3.10.13-bullseye
docker run --name ansible --privileged -v /data/root/.ssh/:/root/.ssh/ -v /data/root/.tiup/:/root/.tiup/ -v /var/jenkins_home/:/var/jenkins_home/ -v /mnt/hgfs/:/mnt/hgfs/ -v /data/ansible/:/data/ -v /data/etc/ansible/:/etc/ansible/ --restart always -d -t linice/ansible:v1.2.0.0

FROM maven:3.8.6-openjdk-8
docker run --name maven3-openjdk8 -v /data/var/www/:/data/var/www/ -v /var/jenkins_home/:/var/jenkins_home/ -v /mnt/hgfs/:/mnt/hgfs/ --net host --restart always -d -t linice/maven3-openjdk8:v1.1.0.0

2.发布jenkins的shell执行脚本代码在仓库gemdale_jenkins

gemdale_jenkins
在这里插入图片描述
This project is parameterized
Choice Parameter 参数的名称这些参数作为环境变量公开用于构建
这个是定义项目脚本里面的变量
dr 默认是deploy部署脚本 可以选rollback回滚脚本
在这里插入图片描述
project ienjoys 项目变量
在这里插入图片描述
env test prod 环境变量
在这里插入图片描述
部署到服务器
在这里插入图片描述
实际部署的服务service是服务名称变量,gemdale_jenkins是实际服务名
在这里插入图片描述
代码分支
在这里插入图片描述
选择变量false,true:是否更新helm chart release. 默认为false, 即不更新.第一次执行要选true
在这里插入图片描述
回滚设置
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
bash /data/var/www/service/gemdale_jenkins/sourcecode/sourcecode.sh

#!/bin/bash
set -e #有报错就直接退出
######## define variables -- start ########
# current shell script file's directory
workdir=$(dirname $(readlink -f $0)) #当前文件所在的目录
######## define variables -- end ########
# arg
dr=${dr:-deploy}  #-deploy等于jenkins设置的默认变量deploy
# comm_var
shell=$workdir/default/sourcecode-$dr.sh  #设置一个变量
# exec
#执行变量脚本/data/var/www/service/gemdale_jenkins/default/sourcecode-$dr.sh
source $shell     

source sourcecode-deploy.sh

#!/bin/bash

echo 'renew my_tgt:'
rm -rf my_tgt
mkdir my_tgt

######## define variables -- start ########
keep=20
######## define variables -- end ########

# comm
#可无权限执行脚本/data/var/www/service/gemdale_jenkins/default/sourcecode-comm.sh
source $workdir/default/sourcecode-comm.sh

# build_env
service_ws=$WORKSPACE
service_tgt_path=$service_ws

echo 'compress service:'
cd $service_tgt_path
tgz_file=$service-${BUILD_ID}.tar.gz
tgz_file_path=$WORKSPACE/my_tgt/$tgz_file
tar --exclude=my_tgt -czf $tgz_file_path .

# run
dest_tgz_file_path=$dest_d_dir/$service/$tgz_file
dest_d_path=$dest_d_dir/$service/$service-$BUILD_ID

source $workdir/default/sourcecode-run.sh

echo "on destination server: delete old tgz files and service directories, to keep last $keep services. -- start"
del_files=''
for ((i=$keep; i < $(($keep + 100)); i++)); do
  if (($BUILD_ID - $i <= 0)); then
    break;
  fi
  del_files="$del_files $service-$(($BUILD_ID - $i)) $service-$(($BUILD_ID - $i)).tar.gz"
done

docker exec ansible ansible $rs -m shell -a "cd $dest_d_dir/$service && rm -rf $del_files"
echo "on destination server: delete old tgz files and service directories, to keep last $keep services. -- end"

source sourcecode-comm.sh

#!/bin/bash

# comm_var
dest_dir=/data/var/www/service
dest_d_dir=/data/var/www/service.d
dest_path=$dest_dir/$service

# env_service_var
case $env in
  test | uat )
    case $service in
      patternx-charts )
        rs=${rs:-10.0.103.211,10.0.103.213,10.0.103.215,10.0.103.245,10.0.103.247,10.0.103.249}
        ;;
      carpark-charts )
        rs=${rs:-10.0.103.211,10.0.103.213,10.0.103.215}
        ;;
      gdimg-charts )
        rs=${rs:-10.0.103.211,10.0.103.213,10.0.103.215}
        ;;
      gdnb-charts )
        rs=${rs:-10.0.103.211,10.0.103.213,10.0.103.215}
        ;;
      gdr-charts )
        rs=${rs:-10.0.103.211,10.0.103.213,10.0.103.215}
        ;;
      gdyk-charts )
        rs=${rs:-10.0.103.211,10.0.103.213,10.0.103.215}
        ;;
      gemdale_charts )
        rs=${rs:-10.0.103.211,10.0.103.213,10.0.103.215,10.0.103.245,10.0.103.247,10.0.103.249}
        ;;
      gemdale_jenkins )
        rs=${rs:-10.0.103.245,10.0.103.247,10.0.103.249}
        ;;
      gemdale-playbook )
        rs=${rs:-10.0.103.211,10.0.103.213,10.0.103.215,10.36.21.224}
        echo ${rs}
        ;;
      pmc-charts )
        rs=${rs:-10.0.103.211,10.0.103.213,10.0.103.215,10.0.103.245,10.0.103.247,10.0.103.249}
        ;;
    esac
    ;;
  prod )
    case $service in
      patternx-charts )
        rs=${rs:-10.0.103.212,10.0.103.214,10.0.103.216}
        ;;
      ats-charts )
        rs=${rs:-10.0.103.212,10.0.103.214,10.0.103.216}
        ;;
      carpark-charts )
        rs=${rs:-10.0.103.212,10.0.103.214,10.0.103.216}
        ;;
      gdimg-charts )
        rs=${rs:-10.0.103.212,10.0.103.214,10.0.103.216}
        ;;
      gdnb-charts )
        rs=${rs:-10.0.103.212,10.0.103.214,10.0.103.216}
        ;;
      gdr-charts )
        rs=${rs:-10.0.103.212,10.0.103.214,10.0.103.216}
        ;;
      gdyk-charts )
        rs=${rs:-10.0.103.212,10.0.103.214,10.0.103.216}
        ;;
      gemdale_charts )
        rs=${rs:-10.0.103.212,10.0.103.214,10.0.103.216,10.0.103.246,10.0.103.250}
        ;;
      gemdale_jenkins )
        rs=${rs:-10.0.103.246,10.0.103.250}
        ;;
      gemdale-playbook )
        rs=${rs:-10.0.103.212,10.0.103.214,10.0.103.216,10.36.14.174}
        ;;
      pmc-charts )
        rs=${rs:-10.0.103.212,10.0.103.214,10.0.103.216,10.0.103.246,10.0.103.250}
        ;;
    esac
    ;;
esac

source sourcecode-run.sh

#!/bin/bash

echo 'on destination server, create directories:'
docker exec ansible ansible $rs -m file -a "path=$dest_dir state=directory"
docker exec ansible ansible $rs -m file -a "path=$dest_d_path state=directory"

echo 'scp tgz file to destination server:'
docker exec ansible ansible $rs -m copy -a "src=$tgz_file_path dest=$dest_d_dir/$service/"

echo 'on destination server, decompress tgz file:'
docker exec ansible ansible $rs -m shell -a "tar -xzf $dest_tgz_file_path -C $dest_d_path/"

echo 'on destination server, link to dest_path:'
docker exec ansible ansible $rs -m shell -a "ln -snf $dest_d_path $dest_path"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1283592.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot自定义异常处理机制

说明&#xff1a;在完整的项目结构中&#xff0c;我们通常会创建一个自定义的异常处理机制&#xff0c;在系统可能出现异常的地方手动抛出这些异常&#xff0c;可以快速定位到异常代码片段&#xff0c;提供项目的可维护性。 本文介绍在SpringBoot项目中&#xff0c;搭建一套自…

万字长文带你搞定MMUTLBTWU

最近一直在学习内存管理&#xff0c;也知道MMU是管理内存的映射的逻辑IP&#xff0c;还知道里面有个TLB。 今天刚刚好看到了几篇前辈的文章&#xff0c;很是不错&#xff0c;于是这里来一起学习一下吧。 PART 一&#xff1a;MMU 架构篇 MMU&#xff08;Memory Management Uni…

解决在Linux中进行redis的主从复制时出现的从机可以获取到主机的信息,主机获取不到从机的信息~

主机&#xff1a; 从机1&#xff1a; 从机2&#xff1a; 出现上述的原因是我在redis.conf中设置了密码&#xff0c;那么就导致了我在进行主从复制时&#xff0c;需要进行密码验证&#xff0c;然后我在网上查阅了很多资料&#xff0c;有的说让在从机中指定密码&#xff0c;有的说…

12.04 二叉树中等题

513. 找树左下角的值 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1 思路&#xff1a;找到最低层中最左侧的节点值&#xff0c;比较适合层序遍历&#xff0c;返回最…

按升序输出各个字符串。

编写程序&#xff0c;设计并实现如下功能&#xff1a;从键盘输入多个字符串&#xff0c;按升序输出各个字符串。

笔记66:自注意力和位置编码

本地笔记地址&#xff1a;D:\work_file\&#xff08;4&#xff09;DeepLearning_Learning\03_个人笔记\3.循环神经网络\第10章&#xff1a;动手学深度学习~注意力机制 a a a a a a a a a a a a a a a a a a a

YOLOv8-Seg改进:简单高效的模块-现代反向残差移动模块 (iRMB) | | ICCV2023 EMO

🚀🚀🚀本文改进:设计了一种面向移动端应用的简单而高效的现代反向残差移动模块 (Inverted Residual Mobile Block, iRMB),它吸收了类似 CNN 的效率来模拟短距离依赖和类似 Transformer 的动态建模能力来学习长距离交互,引入YOLOV8 🚀🚀🚀YOLOv8-seg创新专栏:h…

艾瑞:央国企数字化升级,低代码首选得帆云!

中国权威咨询机构艾瑞咨询最新发布了《2023年央国企数字化升级研究报告》。 THE NEW RESEARCH 报告认为 央国企作为中国特色社会主义的重要物质基础和政治基础&#xff0c;肩负着推动经济发展和增强社会价值的重要责任&#xff0c;必须在数字化升级中发挥引领作用。当前&#…

5.【自动驾驶与机器人中的SLAM技术】2D点云的scan matching算法 和 检测退化场景的思路

目录 1. 基于优化的点到点/线的配准2. 对似然场图像进行插值&#xff0c;提高匹配精度3. 对二维激光点云中会对SLAM功能产生退化场景的检测4. 在诸如扫地机器人等这样基于2D激光雷达导航的机器人&#xff0c;如何处理悬空/低矮物体5. 也欢迎大家来我的读书号--过千帆&#xff0…

详解十大经典排序算法(四):希尔排序(Shell Sort)

算法原理 希尔排序是一种基于插入排序的排序算法&#xff0c;也被称为缩小增量排序。它通过将待排序的序列分割成若干个子序列&#xff0c;对每个子序列进行插入排序&#xff0c;然后逐步缩小增量&#xff0c;最终使整个序列有序。 算法描述 希尔排序&#xff08;Shell Sort&am…

【软考S01计算机系统知识】E01 中央处理单元

E01 中央处理单元 计算机系统硬件基本组成中央处理单元组成功能 多核 CPU 计算机系统硬件基本组成 计算机系统由硬件和软件组成&#xff0c;基本硬件系统由 运算器、控制器、存储器、输入设备 和 输出设备 5大部件组成&#xff1b; 中央处理单元&#xff1a; 运算器、控制器等…

【MySQL语言汇总[DQL,DDL,DCL,DML]以及使用python连接数据库进行其他操作】

MySQL语言汇总[DQL,DDL,DCL,DML] SQL分类1.DDL:操作数据库&#xff0c;表创建 删除 查询 修改对数据库的操作对表的操作复制表&#xff08;重点&#xff09;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 2.DML:增删改表中数据3.DQL&#xff1a;查询表中的记录…

hnust 湖科大 创业基础考察课程结课作业 创业计划书+路演PPT 资源下载

hnust 湖科大 创业基础考察课程结课作业 创业计划书 资源下载 资源详尽&#xff0c;图文并茂&#xff0c;开箱即用&#xff0c;附赠若干模板 资源预览图 创业计划书word 路演PPT 赠品 下载链接 链接&#xff1a;https://pan.baidu.com/s/1p1n6qwM5Jx6bB96ifAJmiw?pwd1111 …

Autosar MCAL-RH850P1HC Port配置

文章目录 PortPortGroupPortPin PortFilterGroupConfigDigital Filter Clock Selection0Digital Filter Clock Selection1 PortGeneralCritical Section ProtectionDev Error DetectDevice NameMax ModeSet Pin Default Modee ApiSet Pin Modee ApiSet to Dio Alt Modee ApiUse…

Ubuntu22.04 交叉编译mp4V2 for Rv1106

一、配置工具链环境 sudo vim ~/.bashrc在文件最后添加 export PATH$PATH:/opt/arm-rockchip830-linux-uclibcgnueabihf/bin 保存&#xff0c;重启机器 二、下载mp4v2 下载路径&#xff1a;MP4v2 | mp4v2 三、修改CMakeLists.txt 四、执行编译 mkdir build cd buildcmak…

ubuntu16.04升级openssl

Ubuntu16.04 默认带的openssl版本为1.0.2 查看&#xff1a;openssl version 1.下载openssl wget https://www.openssl.org/source/openssl-1.1.1.tar.gz 编译安装 tar xvf openssl-1.1.1.tar.gz cd openssl-1.1.1 ./config make sudo make install sudo ldconfig 删除旧版本 su…

springboot的常用注解

声明解释这个对象&#xff08;类或者其他&#xff09;组件相关 名称作用Controller用于修饰MVC中controller层的组件SpringBoot中的组件扫描功能会识别到该注解&#xff0c;并为修饰的类实例化对象&#xff0c;通常与RequestMapping联用&#xff0c;当SpringMVC获取到请求时会…

DistributionBalancedLoss

Distribution-Balanced Loss P I ( x k ) P^I(x^k) PI(xk) 1 C ∑ y i k 1 1 n i {1\over C}\sum\limits_{y_i^k1}{1\over{n_i}} C1​yik​1∑​ni​1​&#xff0c; P i C ( x k ) P^C_i(x^k) PiC​(xk) 1 C 1 n i {1\over C}{1\over{n_i}} C1​ni​1​ r i k _i^k ik​ P i …

目标检测——R-CNN系列检测算法总结

R-CNN系列算法详细解读文章&#xff1a; R-CNN算法解读SPPNet算法解读Fast R-CNN算法解读Faster R-CNN算法解读Mask R-CNN算法解读 目录 1、概述1.1 获取目标候选框1.2 候选框提取特征1.3 候选框分类及边框回归 2、R-CNN系列算法概述2.1 R-CNN算法2.2 SPPNet算法2.3 Fast R-CN…