zoukankan      html  css  js  c++  java
  • 云原生系列4 批量定时更新本地代码库

    image.png

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

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

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

    背景和需求

    file

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

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

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

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

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

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

    image.png

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

    一年按照正常工作日上班,需要耗费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

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

    no pays,no gains!
  • 相关阅读:
    用MFC(C++)实现拼音搜索
    MFC里ON_COMMAND_RANGE消息映射的ID问题
    01:MFC应用程序编程
    MFC笔记(DN)
    linuxmint系统定制与配置(2)-输入法
    linuxmint系统定制与配置(3)-字体
    linuxmint系统定制与配置(1)-系统初始配置
    笔记-读官方Git教程(2)~安装与配置
    笔记-读官方Git教程(1)~认识Git
    Python中多层List展平为一层
  • 原文地址:https://www.cnblogs.com/snidget/p/14410324.html
Copyright © 2011-2022 走看看