程序员首先要学会偷懒

老当益壮,宁移白首之心?穷且益坚,不坠青云之志。

—— 唐·王勃·《滕王阁序》

公司项目基本都用 gitlab-ci 实现自动集成部署,代码提交后自动触发 代码编译容器构建K8S部署

最近将 gitlab-ci 权限开放给开发同学,自主将代码部署上测试环境,以便快速验证新功能。我们约定好通过 标签tag )来触发部署,只要推送了格式形如 cicd-x-nnn-MMddHHmm 的标签,就会触发自动部署。其中, nnn 代表开发者姓名拼音首字母,其后跟着日期时间。

如果我想部署当前的代码 提交点commit ),我只需按照约定打一个部署标签,然后推送到服务器:

1
2
git tag cicd-x-cyf-07171430
git push origin cicd-x-cyf-07171430

很方便不是?

但可能是我太懒了,还是觉得远远不够。首先,我感受到记忆标签格式的负担,记不住就得查;其次,我得大致看下时间,然后还得手工输入,这绝对不能忍……

于是,我想到了写一个简单的 shell 脚本 push-cicd-tag.sh 来干这件事:

1
2
3
4
5
6
7
8
ident="$1"
if [ -z "${ident}" ]; then
    echo "ident is empty!"
    exit 1
fi

tag="cicd-x-${ident}-$(date +%m%d%H%M)"
git tag "${tag}" && git push origin "${tag}"

这个脚本以开发者姓名拼音首字母为参数,如果参数为空就报错。然后,它根据这个参数,自动生成标签名。注意到,这一步通过 date 命令来生成日期和时间。最后,它执行 git 命令打标签,并将标签推送到服务器。

现在,我只需执行这个脚本,即可完成部署标签的推送,省事多了。

1
2
3
fasion@MacBox:~/website$ ./push-cicd-tag.sh cyf
Total 0 (delta 0), reused 0 (delta 0)
 * [new tag]         cicd-x-cyf-07171455 -> cicd-x-cyf-07171455

但我发现其他开发同事都是自己手工敲标签名,他们可比我“勤快”多了!哈哈~

实际上,我发现自己懒得连姓名拼音都不想打,经常输入脚本路径后就急着按回车:

1
2
fasion@MacBox:~/website$ ./push-cicd-tag.sh
ident is empty!

当初留这个参数,而没把自己的姓名写死在脚本里,就是想将脚本分享给其他人用,没想到竟成了我偷懒的障碍……果断不能忍!

那能不能在 git 仓库中取得作者信息呢?这时我想到了 git config 中配置的用户信息:

1
2
fasion@MacBox:~/website$ git config user.name
小菜学编程

但按照项目规范,名字必须是真实姓名,似乎又无解了……那 git config 能否配置自定义信息呢?立马试了一下:

1
2
3
fasion@MacBox:~/website$ git config user.shortname cyf
fasion@MacBox:~/website$ git config user.shortname
cyf

果然可以!于是,我将脚本改成执行 git config 命令来获取开发者姓名:

1
2
3
4
5
6
7
8
9
ident="$(git config user.shortname)"
if [ -z "${ident}" ]; then
    echo "please config your shortname first! for example: git config user.shortname cyf"
    exit 1
fi

tag="cicd-x-${ident}-$(date +%m%d%H%M)"
git tag "${tag}" && git push origin "${tag}"

第一次执行时,它将提醒配置 shortname

1
2
fasion@MacBox:~/website$ ./scripts/push-cicd-tag.sh
please config your shortname first! for example: git config user.shortname cyf

配置好后,就只需直接执行脚本即可:

1
2
3
4
fasion@MacBox:~/website$ git config user.shortname cyf
fasion@MacBox:~/website$ ./push-cicd-tag.sh
Total 0 (delta 0), reused 0 (delta 0)
 * [new tag]         cicd-x-cyf-07171524 -> cicd-x-cyf-07171524

现在可方便多了,简直 perfect

从这件小事管中窥豹,可以看到“偷懒”精神的重要性:

  • 警惕重复劳动;
  • 利用合适的工具提升效率;
  • 保持学习,掌握更多工具;

我觉得每个开发(包括前端),都应该学点 shell 脚本和常用命令,这对于提升工作效率非常有用!后续有机会的话,我来写个专栏抛砖引玉。

订阅更新,获取更多学习资料,请关注我们的公众号:

【随笔】系列文章首发于公众号【小菜学编程】,敬请关注: