云原生系列4 批量定时更新本地代码库

字节鎏金师
• 阅读 1238

云原生系列4 批量定时更新本地代码库

图中是一个自动化的机械流水线。

作为一名程序员,每天一定有非常多工作是每天必须重复的,

如何消除重复性的工作?也让自己日常重复工作自动化呢?

背景和需求

云原生系列4 批量定时更新本地代码库

开发人员入职一家新公司,一般会使用git来进行代码的版本管理和协作,

负责的代码库随着时间的推移会慢慢增加,最后可能会有1-20个代码工程,

有些是新的工程,需要做新的功能特性开发,有的是老的工程做维护开发,

而每个工程可能是多人协作的。手工更新多个代码工程的代码,

有一些重复性的工作在里面,随着时间的推移,

这个时间的消耗会更多,浪费了大量的编码和设计时间。

云原生系列4 批量定时更新本地代码库

假如每天花2分钟做拉取代码, 如果你维护20个工程,

一年按照正常工作日上班,需要耗费173个小时时间。

目标提炼

这个批量更新代码的时间完全可以自动化,即通过定时任务执行脚本的方式,

每日定时的批量更新你的代码工程,节约这个每年86个小时的时间,

有更多的时间做设计和陪女朋友。

实现路径

要点:

  1. 列举出你维护的git代码工程,并简单备注名称,类型;
  2. 没有则clone代码到本地,有则拉取代码到本地,并做一定扩展;
  3. 定时任务执行你的任务,在上班之前执行;

云原生系列4 批量定时更新本地代码库

列举维护的代码工程

文件名: 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个小时时间。

云原生系列4 批量定时更新本地代码库

原创不易,关注诚可贵,转发价更高!转载请注明出处,让我们互通有无,共同进步,欢迎沟通交流。
点赞
收藏
评论区
推荐文章
梦
4年前
微信小程序new Date()转换时间异常问题
微信小程序苹果手机页面上显示时间异常,安卓机正常问题image(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/b691e1230e2f15efbd81fe11ef734d4f.png)错误代码vardate'2021030617:00:00'vardateT
Wesley13 Wesley13
3年前
java实现SSH远程链接服务器导出Excel并发送到指定邮箱
最近做的一些客户项目需要每天给accountexecutive每天发数据,因自己懒的每天去发送所以写了一个小工具,实现了远程SSH连接服务器后从数据库导出数据为Excel并发送到指定邮箱。用linux做了一个定时器,每天固定时间点发送,偷个懒,下边是关键代码,其他用到的工具类都是简单使用,所以就不贴了。import java.sql.C
Peter20 Peter20
4年前
mysql中like用法
like的通配符有两种%(百分号):代表零个、一个或者多个字符。\(下划线):代表一个数字或者字符。1\.name以"李"开头wherenamelike'李%'2\.name中包含"云",“云”可以在任何位置wherenamelike'%云%'3\.第二个和第三个字符是0的值wheresalarylike'\00%'4\
云原生场景下实现编译加速
云原生下的流水线是通过启动容器来运行具体的功能步骤,每次运行流水线可能会被调度到不同的计算节点上。这会导致一个问题:容器运行完是不会保存数据的,每当流水线重新运行时,又会重新拉取代码、编译代码、下载依赖包等等。在云原生场景下,不存在本地宿主机编译代码、构建镜像时缓存的作用,大大延长了流水线运行时间,浪费很多不必要的时间、网络和计算成本。
九路 九路
4年前
一个爬虫的故事:这是人干的事儿?
本文转载自轩辕之风的文章,链接https://mp.weixin.qq.com/s/YygbUWpa2mbPZPuPNhdt2w爬虫原理我是一个爬虫,每天穿行于互联网之上,爬取我需要的一切。image.png(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/656d
Stella981 Stella981
3年前
AssemblyScript 入门指南[每日前端夜话0xEB]
每日前端夜话0xEB每日前端夜话,陪你聊前端。每天晚上18:00准时推送。正文共:2459 字预计阅读时间:10分钟作者:DannyGuo翻译:疯狂的技术宅来源:logrocket!(https://oscimg.oschina.net/oscnet/b880277c594152a503
Stella981 Stella981
3年前
JavaScript 核心原理精讲【朋友圈已刷屏】
作为一名前端工程师,JavaScript你一定每天都在用。但是,即便工作5年以上的前端也不一定用得非常熟,甚至很多前端对JavaScript的掌握程度仅仅停留在会用的层面。而且Vue/React等框架的便利,更是让前端人无需苦学JavaScript原生,就可以快速构建一个网页。它解决了开发者短期的痛点,却为依赖框架开发的程序员埋下长期隐
Stella981 Stella981
3年前
Node.js 12中的ES模块[每日前端夜话0x9E]
每日前端夜话0x9E每日前端夜话,陪你聊前端。每天晚上18:00准时推送。正文共:2552字预计阅读时间:10 分钟作者:BrianDeSousa翻译:疯狂的技术宅来源:logrocket!(https://oscimg.oschina.net/oscnet/2ccaf94cecd3
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
5个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
字节鎏金师
字节鎏金师
Lv1
重要的人要干干净净的放在心上。
文章
6
粉丝
0
获赞
0