公司项目基本都用 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 脚本和常用命令,这对于提升工作效率非常有用!后续有机会的话,我来写个专栏抛砖引玉。
订阅更新,获取更多学习资料,请关注我们的公众号: