使用 Github Actions 做持续集成
之前团队代码托管在 Gitee,自动化流程是 git 仓库 webhook + jenkins 那一套。最近部分业务迁移到 github,折腾一下,使用 Github Actions 做自动化流程。因为自己以前在 Github 代码使用的是 Travis CI,所以这次简单记录一下 Github Actions 的使用。
了解
Github 将持续集成过程中:获取分支代码、测试、构建、发布到远程服务器…等等操作定义为 Actions
。
在项目根目录 .github/workflows/
文件夹下编写 *.yml
后缀的 YAML
类型文件,可以使用 actions 库中官方或第三方的库来快速实现获取分支代码、发布到远程服务器等操作,以此组合各类actions。
Github仓库发现 .github/workflows/
目录下有 *.yml
就会自动执行,由此实现自动化流程。
概念
主要理解以下概念,更多的配置参考官方文档
- on: 定义 workflow 何时被触发执行
- push 到 master 分支时
1 2 3 4
on: push: branches: - master
- PR 到 master 分支时
1 2 3 4
on: pull_request: branches: - master
- 每小时触发执行
1 2 3
on: schedule: - cron: "0 * * * *"
- push 到 master 分支时
- jobs: 要执行的多项任务
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
jobs: first_job: # 指定虚拟机环境(必须) runs-on: ubuntu-latest # 步骤 steps: # 使用官方 actions 库获取分支代码 - name: Checkout uses: actions/checkout@v2 # 执行命令行指令,安装依赖 - name: Install dependencies run: npm install second_job: # 另一个任务
例子
需求:将一个 create-react-app 生成的典型 react 工程接入 Github Actions,实现自动化构建、部署
准备
整个过程可以分为: 获取分支代码->设置 npm 版本->安装依赖->构建->部署到远程服务器
部署文件到远程服务器 这一步涉及服务器权限认证,我们采用 ssh 登录,使用 easingthemes/ssh-deploy
第三方库。会使用到 ssh 私钥、服务器登录用户名、服务器地址三个参数,将这三个参数配置到代码仓库-> Settings -> Secrets,使之私密不可见
执行
ssh-keygen -t rsa -f <YOUR_NAME>
,然后一路回车,可以在~/.ssh
目录下看到生成了两个文件:YOUR_NAME
(私钥)和YOUR_NAME.pub
(公钥)。私钥是个人登录凭证,需保密;公钥要配置到部署的目标服务器将公钥
YOUR_NAME.pub
内容复制到目标服务器的~/.ssh/authorized_keys
中,使目标服务器允许这个秘钥对登录将私钥文件
YOUR_NAME
配置到代码仓库Secrets
中
编写
项目根目录下新建 ./github/workflows/deploy.yml
文件
|
|
将更新提交到仓库 master
分支,点开 actions
可以看到类似下面的构建过程,至此一个简单的自动化流程就完成了,关于 Github Actions
还有更多可玩性值得去探索。
参考
http://www.ruanyifeng.com/blog/2019/09/getting-started-with-github-actions.html https://frostming.com/2020/04-26/github-actions-deploy