爱历史的IT男

背景

最近有个项目存储在gitee上,运行程序的服务器配置比较差,而且还是我自己的服务器,不太适合其他人登陆到服务器上。实际上有很多方案:

  1. 部署Jenkins,但太占资源
  2. 建一个Gitee的webhook,然后回调触发的服务器的脚本(编译、运行)

后面发现gitee提供的go,就选用go试试(这个go有点迷惑人,开始以为是Golang的go)。编译操作等都是在gitee提供的虚拟环境中实现的,不用在自己的服务器上再部署maven、git等环境

环境

服务器: 阿里云轻量服务器
开发语言: JAVA

原理

gitee go主要是通过代码下的.workflow文件夹下的yml脚本实现的。

实现方式

1.在需要部署的仓库上选择“流水线”,开通。选择要生成.workflow配置文件的分支,gitee go会自动选择主要开发语言,并默认创建三条流水线

go语言有那些接口自动化框架 go语言自动化脚本_自动部署


go语言有那些接口自动化框架 go语言自动化脚本_gitee go_02

2.配置要部署到的服务器,配置“主机管理”,也就是“主机组管理”。

go语言有那些接口自动化框架 go语言自动化脚本_自动部署_03


go语言有那些接口自动化框架 go语言自动化脚本_go语言有那些接口自动化框架_04


go语言有那些接口自动化框架 go语言自动化脚本_gitee go_05


如果是用的阿里云等几家云厂商的ECS类的弹性服务器,配置了AK,ACK后是可以自动导入的,我由于买的只是阿里云轻量服务器,所以不能导入,只有“自主导入”

go语言有那些接口自动化框架 go语言自动化脚本_go语言有那些接口自动化框架_06


go语言有那些接口自动化框架 go语言自动化脚本_git_07


go语言有那些接口自动化框架 go语言自动化脚本_git_08


go语言有那些接口自动化框架 go语言自动化脚本_gitee go_09

准备配置部署流水线,也就是部署脚本。支持两种方式,一种可视化的,一种原始yml配置。此处选择yml配置

go语言有那些接口自动化框架 go语言自动化脚本_服务器_10

## 3.配置触发部署的方式。后面以branch为例,比如发现是deploy-java分支的就自动部署

go语言有那些接口自动化框架 go语言自动化脚本_gitee go_11

4.配置触发部署的方式。后面以branch为例,比如发现是deploy-java分支的就自动部署

go语言有那些接口自动化框架 go语言自动化脚本_服务器_12

5.开始任务编排

go语言有那些接口自动化框架 go语言自动化脚本_服务器_13

  • 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已内部支持钉钉、企业微信等。