Github Actions 介绍
背景
持续集成往往与代码版本管理密切结合,CI的过程往往由git操作触发。Gitlab为此设计了Gitlab Cl,Github提出了Github Actions
特点
- GitHub提供慷慨的计算资源(为每个workflow也就是一个持续集成过程提供一个独享的1核虚拟cpu,3.75GB的内存,网络权限以及100GB的磁盘空间),使得它的性能十分强大
- 广泛支持各种语言和框架
- 实时日志,为你的构建行为提供丰富的反馈
- 可以自由地创造和分享Actions
Github Actions 概念
workflow
持续集成一次运行的过程,就是一个workflow
job
一个workflow由一个或多个jobs 构成。Job是一系列完成某一目的的步骤(step)
Job是并行运行的,除非你指定依赖关系
step
组成job的步骤。可以包含自己写的命令(run),也可以引入其他仓库的action
action
对某—种逻辑的封装,每个step可以依次执行一个或多个action
Actions 使用
起步
- 在代码仓库中,新建.github/workflows目录
- 目录中的每一个.yml文件,就是一个GithubAction的 workflow
name
name字段是当前workflow的名称,如果没有,就取.yml的文件名
on
on字段指定触发workflow的条件,可以是某个事件,也可以定时,甚至手动触发
job 和 steps
workflow文件的主体是jobs字段,表示要执行的一项或多项任务。
name: job的名称
runs-on:运行所需要的虚拟机环境
needs:指定当前任务的依赖关系
steps:运行的步骤
yml 官方示例
- 切到正确Git分支
- 安装Node环境
- 安装依赖、构建应用
- 部署到AWS
//next.js
//workflow 名称
name: Deploy productio
on :
// 触发事件
push:
// 切换到master分支
branches: master
jobs :
build:
name: Deploy production build
// build job的依赖
runs-on: ubuntu-latest
steps :
//第一个step 安装node v10
// uses: step的外部依赖(action)
uses: actions/ checkout@v1
name: Use Node.js v10.x
uses: actions/setup-node@v1
// with: 传递给依赖的参数
with:
version:'10.x'
//第二个step 安装依赖和构建
name: Install yarn and build
run:
npm install -g yarn
yarn install
yarn run build
//第三个step 部署
name: Deploy the build via Up
// env: up action 依赖的配置参数
env:
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY H}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }
UP_CONFIG:${i secrets.UP_CONFIG }}
uses: apex/actions / up@v0.5.0
with:
args: deploy production --no-build