05-11 周六 一键完成FastBuild镜像部署功能的开发

2024-05-12 15:44

本文主要是介绍05-11 周六 一键完成FastBuild镜像部署功能的开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

05-11 周六 一键完成FastBuild镜像部署功能的开发
时间版本修改人描述
2024年5月11日21:50:15V0.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-npgnerdctl load -i dros-fast-build-service-master-20240507105741-npg.tar/etc/iscos/patch/dros-fast-build/charts目录下 修改 imageTag 成最新版本
image-20240507191910270
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.43config_file=/etc/iscos/patch/dros-fast-build/charts/values.yaml
charts_dir=$(dirname "$config_file")if [ $# -ne 1 ]; thenecho "Usage: $0 <full_image_name>"exit 2
fiif [ -z "$1" ]; thenexit 3
fiimage_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 $1echo "将镜像导出成压缩包: ${new_image_tar_name}"
docker save -o $new_image_tar_name $full_image_nameecho
echoecho "将镜像压缩包: ${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得到的镜像名称,然后执行如下命令即可:

image-20240511222107710
./deploy_fb.sh 10.200.88.53/library/dros-fast-build-service:master.20240511140630-npg

 脚本会自动拉取镜像,保存为tar,并传送到FastBuild主机,修改配置文件,完成部署。

总结

 能够熟练的掌握一两门编程语言真的很重要,这样可以减少许多重复性的工作,让人舒服很多。小进步可以让人有成就感。不过,不行了,今天有的太疯狂了,为单位加班到23:50了。

这篇关于05-11 周六 一键完成FastBuild镜像部署功能的开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/983049

相关文章

Docker多阶段镜像构建与缓存利用性能优化实践指南

《Docker多阶段镜像构建与缓存利用性能优化实践指南》这篇文章将从原理层面深入解析Docker多阶段构建与缓存机制,结合实际项目示例,说明如何有效利用构建缓存,组织镜像层次,最大化提升构建速度并减少... 目录一、技术背景与应用场景二、核心原理深入分析三、关键 dockerfile 解读3.1 Docke

Android实现图片浏览功能的示例详解(附带源码)

《Android实现图片浏览功能的示例详解(附带源码)》在许多应用中,都需要展示图片并支持用户进行浏览,本文主要为大家介绍了如何通过Android实现图片浏览功能,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

Python一次性将指定版本所有包上传PyPI镜像解决方案

《Python一次性将指定版本所有包上传PyPI镜像解决方案》本文主要介绍了一个安全、完整、可离线部署的解决方案,用于一次性准备指定Python版本的所有包,然后导出到内网环境,感兴趣的小伙伴可以跟随... 目录为什么需要这个方案完整解决方案1. 项目目录结构2. 创建智能下载脚本3. 创建包清单生成脚本4

Nginx部署HTTP/3的实现步骤

《Nginx部署HTTP/3的实现步骤》本文介绍了在Nginx中部署HTTP/3的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前提条件第一步:安装必要的依赖库第二步:获取并构建 BoringSSL第三步:获取 Nginx

C#实现一键批量合并PDF文档

《C#实现一键批量合并PDF文档》这篇文章主要为大家详细介绍了如何使用C#实现一键批量合并PDF文档功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言效果展示功能实现1、添加文件2、文件分组(书签)3、定义页码范围4、自定义显示5、定义页面尺寸6、PDF批量合并7、其他方法

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同