一、前言
大家知道,持续集成由很多操作组成,比如抓取代码、运行测试、登录远程服务器,发布到第三方服务等等。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
进行私有化,这样对于程序员来说无疑是最大的损失。
(以上内容纯属个人观点,如有冒犯请联系本人删除!)