一、前言
大家知道,持续集成由很多操作组成,比如抓取代码、运行测试、登录远程服务器,发布到第三方服务等等。GitHub 把这些操作就称为 actions。
很多操作在不同项目里面是类似的,完全可以共享。GitHub 注意到了这一点,想出了一个很妙的点子,允许开发者把每个操作写成独立的脚本文件,存放到代码仓库,使得其他开发者可以引用。
如果你需要某个 action,不必自己写复杂的脚本,直接引用他人写好的 action 即可,整个持续集成过程,就变成了一个 actions 的组合。这就是 GitHub Actions 最特别的地方。
(以上摘抄自:阮一峰网络日志)
二、使用方法
1. 我们创建一个 laravel 项目的仓库
2. 服务器安装好对应 PHP 环境、Composer 等等,总之项目从 github 上拉取下来,要在服务器上能够安装依赖,正常运行即可
3. 生成 SSH 密钥对,并配置公钥到服务器主机,实现免密登录
1 | 生成名为test的ssh 公钥和秘钥,-f 文件名 -C 备注 |
4. 配置 github 仓库级常量Secret
打开我们新建的 laravel 项目代码仓库,点击 Settings 标签,找到 Secrets 设定,添加如下 Secret 常量
| 常量名称 | 常量值 | 备注 |
|---|---|---|
| SERVER_KEY | —-BEGIN RSA PRIVATE KEY—–… | ssh 的私钥,是我们添加到 authorized_keys 公钥对应的私钥 |
| SERVER_HOST | 如:127.0.0.1 | 服务器公网ip地址 |
| SERVER_PORT | 如:22(默认) | 服务器 ssh 连接端口 |
| SERVER_USERNAME | 如:root | 服务器登录用户名 |
| SERVER_DESTINATION | 如:/var/www/laravel-test | 部署代码的服务器目录 |
配置完成如图所示:
5. 编写 GitHub Actions 工作流 yml 文件
在仓库根目录中创建 .github/workflows/test.yml ,yml文件名可自定义,文件内容如下:
1 | # 工作流名称,可自定义 |
6. 验证一下
随便提交一些东西到 test 分支,然后观察 GitHub Actions 执行状态
如图:

三、结语
在小型业务场景下,可以不用搭建复杂的 ci-cd 工具,如 Jenkins 那些,可以使用 GitHub Actions 来做一些简单化的部署,使用 gitlab 也可以使用 gitlab-ci 来做一些满足我们做持续集成的需求。
顺便这里吐槽一下 gitee ,难道说国内开源真的走不长远么? gitee 开源还需要一系列认证,非企业认证仓库数量有限,ci-cd 工具收费,这样大家都乐意搭建社区版的 gitlab 进行私有化,这样对于程序员来说无疑是最大的损失。
(以上内容纯属个人观点,如有冒犯请联系本人删除!)