Update avaliable. Click RELOAD to update.
目录

使用 Github Action 做自动化部署

01-auto-deploy-with-github-action

我有个站点,代码托管在 Github 中,每次本地编写完都需要提交到 Github,然后在到服务器中 关闭应用拉代码、再重新启动,变更多了,操作也就非常繁琐。

诉求很简单,变更的功能在提交后,站点能立即生效,不需要去手动更新、重启。发现 Github Action 就能满足需求,配置和编写都非常简单,下面看下基本操作步骤。

1. 创建自动化目录

在工程根路径创建目录 .github/workflows,在 workflows 目录中创建一个 main.yml 的配置文件

02-auto-deploy-with-github-action

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 已经成功注册。

03-auto-deploy-with-github-action

点进去看明细时,发现任务一直在队列中等待执行

04-auto-deploy-with-github-action

注意输出 Waiting for a runner to pick up this job…,这里的 runner 就是下一步需要在服务器安装的执行器

05-auto-deploy-with-github-action

4. 安装配置 Action Runner

打开当前仓库setting菜单,选择左侧 Action - Runners,点击右上角 New self-hosted runner 按钮创建。

06-auto-deploy-with-github-action

选择自己对应的系统,在本地服务器中按照步骤执行,归纳如下命令:

# 下载
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

执行安装,后按照提示操作,基本保持缺省,一路回车,至此配置完成。

07-auto-deploy-with-github-action

5. 运行 Action Runner

上面的 config.sh 执行完成后,再执行下述命令运行 Action Runner

nohup sudo RUNNER_ALLOW_RUNASROOT=true ./run.sh /dev/null 2>&1 &

6. 检查 Runner 运行状态

回到 Github 的仓库中,检查 Action 菜单下此 Runner 的状态,发现已经成功执行了自定义的脚本命令,至此,后续任何代码的提交都会自动更新代码,配置完成。

08-auto-deploy-with-github-action

版权所有,本作品采用知识共享署名-非商业性使用 3.0 未本地化版本许可协议进行许可。转载请注明出处:https://www.wangjun.dev//2023/10/auto-deploy-with-github-action/