使用 Github Action 做自动化部署
我有个站点,代码托管在 Github 中,每次本地编写完都需要提交到 Github,然后在到服务器中 关闭应用、拉代码、再重新启动,变更多了,操作也就非常繁琐。
诉求很简单,变更的功能在提交后,站点能立即生效,不需要去手动更新、重启。发现 Github Action 就能满足需求,配置和编写都非常简单,下面看下基本操作步骤。
1. 创建自动化目录
在工程根路径创建目录 .github/workflows
,在 workflows 目录中创建一个 main.yml
的配置文件
2. 编写自动化文件
编辑 main.yml
文件,添加触发任务,下面的脚本配置大概意思是,当此仓库有代码 push 时,在我们自有服务器(self-hosted)中执行 run 后面的命令,命令是进入服务器应用目录,使用 git pull
更新最新代码,并重启应用。
# 工作流描述
name: auto deploy when push code
# 触发条件:当branch触发push
on: push
# 工作流程,可包含多个作业
jobs:
# 作业名称
pull:
# 指定的运行器环境
runs-on: self-hosted
steps:
- run: cd /home/wwwroot/abc.com/ && git pull && server restart
Github Action 本身能提供复杂的能力,但大部分可能用不到,根据实际需求定义执行,需要更复杂的功能,还请参看 官方文档
3. 提交变更的代码
创建好 workflows 后,提交工程代码,去 Github 仓库中点击 Action 查看配置是否生效,下图可以看到创建的 auto deploy when push code 已经成功注册。
点进去看明细时,发现任务一直在队列中等待执行
注意输出 Waiting for a runner to pick up this job…,这里的 runner 就是下一步需要在服务器安装的执行器
4. 安装配置 Action Runner
打开当前仓库的 setting菜单,选择左侧 Action - Runners,点击右上角 New self-hosted runner 按钮创建。
选择自己对应的系统,在本地服务器中按照步骤执行,归纳如下命令:
# 下载
curl -o actions-runner-linux-x64-2.309.0.tar.gz -L https://github.com/actions/runner/releases/download/v2.309.0/actions-runner-linux-x64-2.309.0.tar.gz
# 解压缩
tar -zxvf actions-runner-linux-x64-2.309.0.tar.gz
# 配置
./config.sh --url https://github.com/xxxx/xxxx-cc --token AAN54EZQQFU4DABCL2YKZB3FFUAEQ
若用 root 用户执行的时候,会出现 Must not run with sudo 的提示,此时只需要在前面加上 sudo RUNNER_ALLOW_RUNASROOT=true,完整的执行命令如下:
sudo RUNNER_ALLOW_RUNASROOT=true ./config.sh --url https://github.com/xxxx/xxxx-cc --token AAN54EZQQFU4DABCL2YKZB3FFUAEQ
执行安装,后按照提示操作,基本保持缺省,一路回车,至此配置完成。
5. 运行 Action Runner
上面的 config.sh
执行完成后,再执行下述命令运行 Action Runner
nohup sudo RUNNER_ALLOW_RUNASROOT=true ./run.sh /dev/null 2>&1 &
6. 检查 Runner 运行状态
回到 Github 的仓库中,检查 Action 菜单下此 Runner 的状态,发现已经成功执行了自定义的脚本命令,至此,后续任何代码的提交都会自动更新代码,配置完成。
版权所有,本作品采用知识共享署名-非商业性使用 3.0 未本地化版本许可协议进行许可。转载请注明出处:https://www.wangjun.dev//2023/10/auto-deploy-with-github-action/