当前,如果我们手动部署Spring Boot应用,一般都是在本地打成jar包,然后在通过ftp上传到服务器,再重启应用。这样部署实在太过麻烦,如果能把代码直接提交到代码库,自动跑测试,测试通过去部署应用,也就是持续集成,这样就能省太多的时间去创造更好的产品。
当前的持续集成服务主要有:最早支持Github项目的Travis CI,腾讯的Coding和大名鼎鼎的Jenkins。
Github Actions是Github提供的持续集成和持续部署服务。
1. 工作流程workflow
1.1 创建workflow文件
Github Actions顾名思义,肯定是先选择你的Github项目,并且找到Actions功能,如图:
在这个页面,我们可以看到官方建议的工作流,还有部署到不同平台和不同语言的非常多的模板供我们选择,这里我们先看官方默认的配置,其他的再熟悉了流程之后可以慢慢研究。
当我们点击了创建工作流后,会在当前仓库.github/workflows
目录下创建一个yml格式的文件,这个就是我们工作流的配置文件,在这里我们可以定义触发规则,编译阶段,部署阶段等每一步需要做的事情。
在这个配置文件中的基本字段:
-
name
: workflow的名称 -
on
:触发规则。比如push,pr等特定事件或者定时执行或发生外部的事件时执行,比如创建分支等,更多可以参考触发工作流程的事件。 -
jobs.*.runs-on
:指定job运行的虚拟机环境,比如ubuntu-latest。 -
jobs.*.steps
:指定每个job的运行步骤,比如指定jdk版本,编译打包等阶段。 -
jobs.*.steps.run
:该步骤运行的命令或者 action。每个 step 可以依次执行一个或多个命令(action),比如
mvn package
和ssh-deploy。
在Github Marketplace中提供了非常非常多的Actions,比如ssh,ftp等,可以非常方便的直接拿来使用。
注意,一个仓库可以有多个workflow文件,命名随意,GitHub 只要发现.github/workflows
目录里面有.yml
文件,就会自动运行该文件。
1.2 环境变量
在Github项目里找到Settings中的Secrets,并点击创建密钥,如图所示:
GitHub 设置适用于工作流程运行中每个步骤的默认环境变量,环境变量区分大小写,在操作或步骤中运行的命令可以创建、读取和修改环境变量。
1.3 创建自定义Runner
在上文的配置文件中提到有jobs.*.runs-on
字段,是指官方提供的虚拟机环境,也就是我们的job是在官方提供的服务器上运行的,那么能不能添加我们的服务器呢,答案是肯定的。
我们可以将服务器添加到单个仓库中。如果要将自托管的运行器添加到用户仓库,您必须是仓库所有者。对于组织仓库,您必须是组织所有者或拥有该仓库管理员的权限。
在Github项目的主页面上,点击Settings中的Actions。
在右上角点击添加自己托管的runner。
我们可以看到根据不同的操作系统都提供了对应的下载,配置和使用方法,根据步骤操作完就可以在列表上看到我们自定义的runner。
2. 使用Github Actions + Docker部署Spring Boot应用
2.1 创建workflow文件
name: Deploy with docker
on:
push:
# 分支
branches: