乐趣区

关于java:云原生系列4-批量定时更新本地代码库

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

作为一名程序员,每天肯定有十分多工作是每天必须反复的,

如何打消重复性的工作?也让本人日常反复工作自动化呢?

背景和需要

开发人员入职一家新公司,个别会应用 git 来进行代码的版本治理和合作,

负责的代码库随着工夫的推移会缓缓减少,最初可能会有 1 -20 个代码工程,

有些是新的工程,须要做新的性能个性开发,有的是老的工程做保护开发,

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

有一些重复性的工作在外面,随着工夫的推移,

这个工夫的耗费会更多,节约了大量的编码和设计工夫。

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

一年依照失常工作日下班,须要消耗 173 个小时工夫。

指标提炼

这个批量更新代码的工夫齐全能够自动化,即通过定时工作执行脚本的形式,

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

有更多的工夫做设计和陪女朋友。

实现门路

要点:

  1. 列举出你保护的 git 代码工程,并简略备注名称,类型;
  2. 没有则 clone 代码到本地,有则拉取代码到本地,并做肯定扩大;
  3. 定时工作执行你的工作,在下班之前执行;

列举保护的代码工程

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

原创不易,关注诚可贵,转发价更高!转载请注明出处,让咱们互通有无,共同进步,欢送沟通交流。

退出移动版