背景

日常工作过程中,避免不了经常遇到很多需要手工进行的重复劳动,如果我们可以凭借自己勤劳的双手和聪明的智慧编写一些小工具或者脚本,这样我们就可以节省大量的时间,用来多看看新闻、刷刷头条,不香吗?

系统架构

基于java的后端应用,maven管理依赖及打包,基于gitlab代码托管,基于k8s运维部署,采用skaffold打包并推送镜像。

Skaffold是一款命令行工具,旨在促进Kubernetes应用的持续开发。你可以在本地迭代应用源码,然后将其部署到本地或者远程Kubernetes集群中。Skaffold会处理构建、上传和应用部署方面的工作流。它通用可以在自动化环境中使用,例如CI/CD流水线,以实施同样的工作流,并作为将应用迁移到生产环境时的工具 。

早期的日常流程是开发代码、提交到gitlab、更新代码、maven打包、生成并推送镜像。。,接下来我们实现一个shell命令行脚本,帮助我们批量完成这些任务。

首先在工程workspace目录下,定义一个project.txt文件,里面定义本次要部署的工程目录名称。脚本在执行时会读取文件的内容,并遍历。

@echo off
 
title 本地构建镜像脚本
color 3
echo;

echo 开始构建
setlocal enabledelayedexpansion
for /f %%i in (project.txt) do (
	cd %%i 
	echo 切换到release分支并更新代码
	call git checkout release
	call git pull
	echo;
	 
	echo 编译打包:mvn clean package
	call mvn clean package
	echo;
	
	echo 构建镜像并输出执行结果至文件:skaffold build -p test -n dev
	call skaffold build -p test -n dev>../%%i.txt
	cd ..
	echo;
	
	set /a line=0
	echo 开始遍历%%i.txt
	for /f "tokens=*" %%j in (%%i.txt) do (
		set /a line+=1
		if !line!==2 (
			echo %%j > %%i-temp.txt
		)
	)

	for /f "tokens=4 delims=:" %%k in (%%i-temp.txt) do (
		echo %%k > %%i-image.txt
		del %%i.txt
		del %%i-temp.txt
	)
	echo;
)
echo;
 
pause

这样,一个简单的批量执行脚本就编写完成了,可以用类似的思路实现多种脚本,如批量更新、合并代码,批量编译、批量打包等等。如批量更新代码:

@echo off
 
title 开发环境发布脚本
color 3
echo;

echo 开始构建
for /f %%i in (project.txt) do (
	echo 开始build %%i
	echo;
	cd %%i
	
	echo 切换到develop分支并更新代码
	call git checkout develop
	call git pull
	echo;
)
echo;
 
pause

一个小工具编写思路分享给大家,欢迎支持!共同学习!

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐