由于某种原因,国内无法访问GitHub,所以我的大部分代码都放在Gitee上.
今天一不小心看到了Gitee Go 2.0这个东西,持续集成这几个字一下子就吸引了我.
Gitee Go是Gitee全新推出的一款CICD工具,可提供持续集成、持续交付(部署)能力,帮助企业不断提升应用交付的质量和效率。通过构建自动化、测试自动化、部署自动化,完成从代码提交到应用交付的自动化。通过交付流程度量,发现效率问题,并推荐优化方案。
众所周知,个人发布代码是一件比较麻烦的事.
如果是公司,可以单独搞一台服务器安装Jenkins或者Bamboo作为发布机.
而个人可能没那么多服务器,而且自己的服务器配置本来也低,如果安装了Jenkins或者Bamboo肯定卡的要死.
所以一个可以一键部署,自动发布的CICD工具还是很有诱惑力.
之前我自己用的是Shell脚本或者Python脚本来进行发布.
虽然也挺简单的,执行一下命令就好,可是要做很多准备工作,要安装配置Maven或者Gradle
环境,如果用Python,还要安装Python环境,还有Git的证书,这样拉代码的时候就不用密码了.
反正就是麻烦.
今天看到了这个Gitee Go,就来试一下吧.
开通 Gitee Go
首先要开通Gitee Go流水线.个人每月有1000分钟免费构建时长,单个代码仓库均可直接获得200分钟免费构建时长,一共1200分钟.
然后会问你,是否自动创建流水线,然后提交相关的yml文件,可以选择创建,也可以不创建,后面自己设置流水线,我这里就不创建了.
接下来就可以自己创建流水线了.
新建流水线
就按照下面的步骤搞就行,如果熟悉yml语法,也可以切换代码视图,不过有一说一,他这个yml搞得有点麻烦.
基本信息不用修改.
事件监听这里可以设置:
- 分支匹配: 当
push到指定分支后,自动构建发布 - Tag匹配: 当
Tag中有指定关键字时,进行自动构建发布,可以使用前缀,正则,精确等匹配方式 - 提交注释关键字匹配: 只支持正则
这里就设置为分支匹配和提交注释关键字匹配.
Push触发 (gitee.com/help/articl…)
Push事件由以下三种行为产生,本地推送、分支合并、PR合并。
因此,只要在流水线中配置了Push事件触发,以上三种操作都会自动触发流水线执行。
在Push事件下,提供以下三种匹配规则,三种匹配规则是交集关系,即同时设置了匹配规则,只有满足所有规则时才可触发流水线
- 分支匹配:共有以下四种匹配规则
- 前缀匹配:如填写
dev,则匹配dev开头的所有分支;当填写空时,匹配所有分支 - 精确匹配:如填写
dev,仅会匹配dev分支 - 正则匹配:如填写
dev.*,则匹配前缀为dev的所有分支 - 精确排除:如填写
dev,则向dev分支提交代码不会触发流水线。精确排 除的规则优先级最高,通常和其他规则混合使用
- 前缀匹配:如填写
Tag匹配:同分支匹配一样,共有以下四种匹配规则- 前缀匹配:如填写
v1,则匹配v1开头的所有Tag;当填写空时,匹配所有Tag - 精确匹配:如填写
v1.1.1,仅会匹配v1.1.1的Tag - 正则匹配:如填写
v1.*,则匹配前缀为v1的所有Tag - 精确排除:如填写
v1.1.1,则创建v1.1.1的Tag不会触发流水线。精确排除的规则优先级最高,通常和其他规则混合使用
- 前缀匹配:如填写
- 提交注释关键字匹配:仅支持正则匹配
- 正则匹配:如填写
.*build.*,则在提交代码时Commit Message中包含build关键字的都可以触发流水线
- 正则匹配:如填写
分支匹配配置了精确匹配master,Tag匹配配置了前缀匹配v1,提交注释关键字匹配配置了.*build.*,如下图
- 当向
master提交代码,但Commit Message是“Gitee Go”时,流水线不能触发 - 当向
master提交代码,但Commit Message是“Gitee build Go”时,流水线能触发 - 当推送
Tag为v1.10.1,但Commit Message是“Gitee Go”时,流水线不能触发 - 当推送
Tag为v1.10.1,但Commit Message是“Gitee build Go”时,流水线能触发
接下来就是任务编排.
可以看到,支持多种构建方式.
我这个项目是使用Maven的,那就选择Maven 吧
可以配置消息通知,支持钉钉,微信,飞书.
如果不设置通知,这里什么也不用改,设置一下阶段权限控制.
打包完成就该把打包好的东西上传到服务器上
这里也可以设置通知,不设置就不需要改什么,设置一下阶段权限控制就好.
接下来就是部署了.
部署可以选择主机部署,也可以选择K8S,这里选择主机部署.
部署文件来源可以来自上游构建产出或通用制品库
选择上传文件这里要选,不选可以保存,但是发布会失败.
后面还有一些工具,这里不需要,就不添加了,如果需要,可以根据自己的需求去添加.
参数配置
可以在脚本中使用参数,格式: ${PORT},参数的值可以根据自己的项目进行修改
添加主机
需要先添加一个主机组,然后再添加主机.名称和标识自己可以随便填,仓库就是要发布的代码的仓库.
添加主机,这里就是你自己的服务器啦 .
把命令复制到服务器执行一下就可以了.
添加完成
执行主机组那里就可以选择了
钉钉消息
钉钉群可以创建机器人,使用Webhook可以推送消息.
名称也是自己随便填,ID可以不填,会自动生成.
最后只要设置Webhook的url就行,如果有加签,需要设置秘钥.
可以看到支持的凭证类型还是挺多的.
部署脚本
上传到服务器的默认目录是/root/gitee_go/deploy
文件名为output.tar.gz
# 请在此输入部署脚本,如启动Java应用如下
cd ~/gitee_go/deploy
ls
tar -zxf output.tar.gz
cd target
nohup java -jar ${project_name}.jar &
echo "Deploy Success"
sleep 10
curl 127.0.0.1:${PORT}/${url_path}/ok
这个脚本可以根据自己的项目修改
部署
现在部署一下看看效果
果然失败!
检查发现数据库连不上
可以ping到,但是telnet超时,查了好久,发现是安全组规则,出站规则没有配置3306端口.
继续部署试试...
还是失败...
1核1G的服务器配置太低了,以后白送都不能要...
自己弄虚拟机吧.
配置虚拟机作为主机,打包发布
钉钉的效果就是这样.
现在只要推送到master,符合事件触发规则,就会触发,然后会自动构建,自动上传,自动部署.
发布忽然变得如此简单.
好了,今天就到这里
关注 南诏Blog 公众号,共同学习,一起进步。加油🤣