爱历史的IT男
背景
最近有个项目存储在gitee上,运行程序的服务器配置比较差,而且还是我自己的服务器,不太适合其他人登陆到服务器上。实际上有很多方案:
- 部署Jenkins,但太占资源
- 建一个Gitee的webhook,然后回调触发的服务器的脚本(编译、运行)
后面发现gitee提供的go,就选用go试试(这个go有点迷惑人,开始以为是Golang的go)。编译操作等都是在gitee提供的虚拟环境中实现的,不用在自己的服务器上再部署maven、git等环境
环境
服务器: 阿里云轻量服务器
开发语言: JAVA
原理
gitee go主要是通过代码下的.workflow文件夹下的yml脚本实现的。
实现方式
1.在需要部署的仓库上选择“流水线”,开通。选择要生成.workflow配置文件的分支,gitee go会自动选择主要开发语言,并默认创建三条流水线
2.配置要部署到的服务器,配置“主机管理”,也就是“主机组管理”。
如果是用的阿里云等几家云厂商的ECS类的弹性服务器,配置了AK,ACK后是可以自动导入的,我由于买的只是阿里云轻量服务器,所以不能导入,只有“自主导入”
准备配置部署流水线,也就是部署脚本。支持两种方式,一种可视化的,一种原始yml配置。此处选择yml配置
## 3.配置触发部署的方式。后面以branch为例,比如发现是deploy-java分支的就自动部署
4.配置触发部署的方式。后面以branch为例,比如发现是deploy-java分支的就自动部署
5.开始任务编排
- MAVEN构建一般需要修改target路径和缓存路径,选中“maven 构建”会在右边出现编辑框。gitee go默认maven源是阿里云的源,如果不填缓存路径,每次编译都要重新拉maven依赖包,很耗时;target为生成的运行java路径,如果是maven主子工程,有可能就是子module/target。
- 上传制品,可暂时不改
- 发布,是把打好的包上传到gitee go的环境中,可以供后续下载包,包为“制品名称”处填的值
6.增加一个节点,发布部署。
- 选择第2步创建的主机组
- 填写自己在服务器上要执行的脚本,下面提供一个样例
以下为脚本案例,把xxx换成自己的jar包名即可
cd ~/gitee_go/deoloy
ls
tar -zxf output.tar.gz
cd target
pid=`ps -ef|grep xxx|grep -v grep|awk '{print $2}'`
if [ $pid ]
then
kill -15 $pid
fi
nohup java -jar xxx.jar --server.port=8090 &
for((i=1;i<=10;i++));
do
new_pid=`ps -ef|grep xxx|grep -v grep|awk '{print $2}'`
if [ ! $new_pid ]
then
echo 'starting......'
sleep 10
else
echo "Deploy Success"
break;
fi
done
7.保存流水线后即可自动运行。
如果还需要添加部署完成后的消息通知,gitee go已内部支持钉钉、企业微信等。