时间 | 版本 | 修改人 | 描述 |
---|---|---|---|
2024年5月11日21:50:15 | V0.1 | 宋全恒 | 新建文档 |
简介
注,需要提前完成从DockerService到FastBuild主机的免密,因为脚本使用了ssh命令。
博客 | 描述 |
---|---|
04-22 周日 阿里云-瑶光上部署FastBuild过程(配置TLS、自定义辅助命令)-CSDN博客 | 👍👍👍👍记录了部署FastBuild的完整过程,基本流程,该文章主要描述自动化,即使用CI工具构建镜像,并部署服务部分。 |
04-25 周四 FastBuild重构实践-TLS、全局捕获异常、一键配置-CSDN博客 | 记录了第一次优化的过程,完成配置文件移入数据库 |
05-08 周三 FastBuild FastAPI 引入并发支持和全局捕获异常-CSDN博客 | 记录了并发支持和全局捕获异常。解决拉取和check解耦问题以及超时问题。 |
脚本内容
手动执行过程
10.200.88.53/library/dros-fast-build-service:master.20240507105741-npg
docker pull 10.200.88.53/library/dros-fast-build-service:master.20240507105741-npg
docker save -o dros-fast-build-service-master-20240507105741-npg.tar 10.200.88.53/library/dros-fast-build-service:master.20240507105741-npg
nerdctl load -i dros-fast-build-service-master-20240507105741-npg.tar
/etc/iscos/patch/dros-fast-build/charts目录下 修改 imageTag 成最新版本
root@iZ1pp06qu51oiqqddsrnuxZ:/etc/iscos/patch/dros-fast-build/charts# helm upgrade --install dros-fast-build-service .
Release "dros-fast-build-service" has been upgraded. Happy Helming!
NAME: dros-fast-build-service
LAST DEPLOYED: Tue May 7 19:23:35 2024
NAMESPACE: default
STATUS: deployed
REVISION: 2
TEST SUITE: None
NOTES:
1. Get the application URL by running these commands:
kubectl --namespace default get pod
脚本开发
脚本名称为deploy_fb.sh,wei
#!/bin/bash
# 2024年5月11日20:35:19
# 用于拉取CI的镜像,并部署到FB服务
# 注意,需要事先配置好从DockerService到FastBuild,主机的免密
# $1 内容为10.200.88.53/library/dros-fast-build-service:master.20240511122313-npg
full_image_name=$1
fb_host=10.200.88.43
config_file=/etc/iscos/patch/dros-fast-build/charts/values.yaml
charts_dir=$(dirname "$config_file")
if [ $# -ne 1 ]; then
echo "Usage: $0 <full_image_name>"
exit 2
fi
if [ -z "$1" ]; then
exit 3
fi
image_base_name=$(echo "$full_image_name" | awk -F'/' '{print $NF}')
tag=$(echo "$image_base_name" | awk -F':' '{print $2}')
new_image_tar_name=$(echo "$image_base_name" | awk -F':' '{gsub(/\./, "-", $2); gsub(/:/, "-", $1); print $1"-"$2".tar"}')
echo "简单镜像名称: $image_base_name"
echo "tag名称: $tag"
echo "将要保存的镜像名称: $new_image_tar_name"
docker pull $1
echo "将镜像导出成压缩包: ${new_image_tar_name}"
docker save -o $new_image_tar_name $full_image_name
echo
echo
echo "将镜像压缩包: ${new_image_tar_name}拷贝到FastBuild主机"
scp $new_image_tar_name $fb_host:`pwd`
# 远程执行导入新镜像
ssh $fb_host "cd /root && nerdctl load -i $new_image_tar_name"
ssh root@$fb_host "sed -i 's/imageTag:.*npg$/imageTag: $tag/g' $config_file"
echo “使用helm完成部署”
ssh root@$fb_host "cd ${charts_dir}; helm upgrade --install dros-fast-build-service ."
在编辑脚本的时候,还是尽量使用vscode吧,不然变量名重新命名总是很容易忘记某个,导致失败,调试很花时间。
脚本使用
使用root账户连接至10.200.88.44,在Jenkins获取新ci得到的镜像名称,然后执行如下命令即可:
./deploy_fb.sh 10.200.88.53/library/dros-fast-build-service:master.20240511140630-npg
脚本会自动拉取镜像,保存为tar,并传送到FastBuild主机,修改配置文件,完成部署。
总结
能够熟练的掌握一两门编程语言真的很重要,这样可以减少许多重复性的工作,让人舒服很多。小进步可以让人有成就感。不过,不行了,今天有的太疯狂了,为单位加班到23:50了。