云原生系列4 批量定时更新本地代码库
图中是一个自动化的机械流水线。
作为一名程序员,每天一定有非常多工作是每天必须重复的,
如何消除重复性的工作?也让自己日常重复工作自动化呢?
背景和需求
开发人员入职一家新公司,一般会使用git来进行代码的版本管理和协作,
负责的代码库随着时间的推移会慢慢增加,最后可能会有1-20个代码工程,
有些是新的工程,需要做新的功能特性开发,有的是老的工程做维护开发,
而每个工程可能是多人协作的。手工更新多个代码工程的代码,
有一些重复性的工作在里面,随着时间的推移,
这个时间的消耗会更多,浪费了大量的编码和设计时间。
假如每天花2分钟做拉取代码, 如果你维护20个工程,
一年按照正常工作日上班,需要耗费173个小时时间。
目标提炼
这个批量更新代码的时间完全可以自动化,即通过定时任务执行脚本的方式,
每日定时的批量更新你的代码工程,节约这个每年86个小时的时间,
有更多的时间做设计和陪女朋友。
实现路径
要点:
-
列举出你维护的git代码工程,并简单备注名称,类型;
-
没有则clone代码到本地,有则拉取代码到本地,并做一定扩展;
-
定时任务执行你的任务,在上班之前执行;
列举维护的代码工程
文件名: codeProject.text
比如我录入了我放在github上的三个工程代码;
git@github.com:carterbrother/springbootpractice.git|springbootpractice|springboot练习代码|backend git@github.com:carterbrother/COLA.git|cola|cola骨架代码|backend git@github.com:carterbrother/cat.git|cat|cat服务监控代码|backend
循环处理代码并可不断扩展
一个shell循环处理即可,同时预留扩展;
比如如果是java后端工程,需要执行mvn clean install到本地;
如果是vue前端工程需要执行类似的操作;
总体的脚本如下:
#!/usr/bin/env bash #set -e function doExtend() { serviceType=$1 appPath=$2 if [ ${serviceType} == 'backend' ]; then cd ${appPath} git checkout dev git pull mvn clean install -Dmaven.test.skip=true fi } echo '拉取工作维护代码到本地开发机器' export shPath="${PWD}" echo "当前路径:${shPath}" export codeBasePath=~/src/work echo "你设置存放工作代码的目录是:${codeBasePath}" if [ ! -d ${codeBasePath} ]; then echo "你设置存放工作代码的目录是:${codeBasePath} 它不存在,自动创建它!" mkdir -p ${codeBasePath} fi export codeProject="codeProject.txt" echo '按照行来读取您维护的代码工程文件: ${codeProject}' for line in $(cat "${shPath}/${codeProject}"); do echo "line conent: ${line}" arr=(${line//|/ }) repoName=${arr[0]} serviceName=${arr[1]} serviceTitle=${arr[2]} serviceType=${arr[3]} echo "服务名称: ${serviceTitle},服务类型:${serviceType} 仓库git地址:${repoName} " appPath="${codeBasePath}/${serviceName}" if [ ! -d ${appPath} ]; then pwd echo "代码${serviceName}不存在,需要git clone到本地" cd ${codeBasePath} git clone "${repoName}" else cd ${appPath} pwd echo "代码${serviceName}存在,需要更新 git pull" git pull fi doExtend ${serviceType} ${appPath} done
前提是你需要配置好你的git的ssh公钥信息到你的gitlab库,
这里不会配置的话可自行利用搜索引擎。
定时任务执行脚本
我使用的是mac电脑,可以使用crontab工具来定时的执行上面的脚本。
命令格式:
crontab [-u user] file crontab [-u user] [ -e | -l | -r ]
备份和恢复crontab
# 备份 crontab -l > $HOME/.mycron # 恢复 crontab $HOME/.mycron
把文件放到对应的位置,crontab -e编辑,写入指令即可。
#每天6点定时拉取代码 * 6 * * * sh ~/tool/codetool/pullCode.sh
小结
一句话概括本篇:使用shell指定和定时任务crontab自动化的批量更新你的代码工程一年可节约86个小时时间。
原创不易,关注诚可贵,转发价更高!转载请注明出处,让我们互通有无,共同进步,欢迎沟通交流。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2011-02-18 程序员的基本素质