雲原生系列4 批量定時更新本地代碼庫

image.png

圖中是一個自動化的機械流水線。前端

做爲一名程序員,天天必定有很是多工做是天天必須重複的,vue

如何消除重複性的工做?也讓本身平常重複工做自動化呢?java

背景和需求

file

開發人員入職一家新公司,通常會使用git來進行代碼的版本管理和協做,git

負責的代碼庫隨着時間的推移會慢慢增長,最後可能會有1-20個代碼工程,程序員

有些是新的工程,須要作新的功能特性開發,有的是老的工程作維護開發,github

而每一個工程多是多人協做的。手工更新多個代碼工程的代碼,spring

有一些重複性的工做在裏面,隨着時間的推移,shell

這個時間的消耗會更多,浪費了大量的編碼和設計時間。後端

image.png

假如天天花2分鐘作拉取代碼, 若是你維護20個工程,springboot

一年按照正常工做日上班,須要耗費173個小時時間。

目標提煉

這個批量更新代碼的時間徹底能夠自動化,即經過定時任務執行腳本的方式,

每日定時的批量更新你的代碼工程,節約這個每一年86個小時的時間,

有更多的時間作設計和陪女友。

實現路徑

要點:

  1. 列舉出你維護的git代碼工程,並簡單備註名稱,類型;

  2. 沒有則clone代碼到本地,有則拉取代碼到本地,並作必定擴展;

  3. 定時任務執行你的任務,在上班以前執行;

image.png

列舉維護的代碼工程

文件名: 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個小時時間。

批量更新工做代碼庫.png

原創不易,關注誠難得,轉發價更高!轉載請註明出處,讓咱們互通有無,共同進步,歡迎溝通交流。

相關文章
相關標籤/搜索