Skip to content

Latest commit

 

History

History
141 lines (102 loc) · 4.61 KB

github-actions.md

File metadata and controls

141 lines (102 loc) · 4.61 KB

Github actions 实现CI/CD

Gitlab提供了内置的CI/CD工具,但由于Gitlab比较占内存,需要额外的服务器进行部署,所以一般都是公司用比较多,个人无脑Github

GitHub Actions 是一种持续集成和持续交付 (CI/CD) 平台,可用于自动执行生成、测试和部署管道。

当Github提供了Github Actions ,个人开发者也可以愉快的玩DevOps,而又不必强依赖于Jenkins、Travis CI、Gitlab CI等工具,特别是Github很大方的提供了以下配置的服务器作为runner,相当的豪

Hardware specification for Windows and Linux virtual machines:

  • 2-core CPU (x86_64)
  • 7 GB of RAM
  • 14 GB of SSD space

Hardware specification for macOS virtual machines:

  • 3-core CPU (x86_64)
  • 14 GB of RAM
  • 14 GB of SSD space

如果需要更强的配置,或者有网络、存储方面的特殊需求,它而且也支持自建runner

快速开始

新建仓库,找到Actions标签页,然后搜索Node.js模板(前端项目),点击Configure

会生成一个文件.github/workflows/node.js.yml,已经初始化了一段脚本

修改内容如下,并保存,然后执行git push操作,可以在Actions 标签页看到执行进度以及结果

name: Try github actions

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Use Node.js 16.x
      uses: actions/setup-node@v3
      with:
        node-version: 16.x
        cache: 'yarn'
    - run: yarn
    - run: yarn build

概念与术语

  • runner:Github 分配的用来执行 CI/CD 的服务器 (也可以自建 runner)
  • event:触发工作流的git仓库特定动作,比如git pushpull request
  • workflow:CI/CD工作流,一个工作流可运行多个作业job
  • job:作业(任务),比如构建、部署,一个作业可运行多个step
  • step:每个step通过run命令运行具体的指令/脚本

name: Try github actions  # 这个workflow的名称

on: [push] # Event,触发这个workflow的动作/条件

jobs: # 各种任务,比如下面的build就是其中一个job
  build: # job的具体名称
    runs-on: ubuntu-latest # 当前job运行在什么系统上
    steps: # 每个name代表不同step
    - uses: actions/checkout@v3
    - name: Use Node.js 16.x
      uses: actions/setup-node@v3
      with:
        node-version: 16.x
        cache: 'yarn'
    - run: yarn
    - run: yarn build	

配置

Workflow syntax for GitHub Actions - GitHub Docs

jobs之间依赖关系

jobs.<job_id>.needs

jobs:
  test:
  deploy:
    needs: test

actions复用

jobs.<job_id>.steps.uses

选择一个action,等于写了很多的 steps.run,只要是写代码的地方,就有复用

可以在github marketplace浏览别人写的actions,然后复用

比如复用在操作系统安装node的实例

- name: use Node.js 10.x
  uses: actions/setup-node@v1
  with:
    node-version: 10.x

secret and context

如何配置敏感数据或环境变量呢?

在仓库设置actions secret

在配置中使用

jobs:
  triage:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/build
        with:
          repo-token: ${{ secrets.SECRET_TOKEN }}

context是属于workflow中的上下文信息,用$符合表示,除了上面的secret,还有几种context类型

  • github:workflow的基础信息,比如github.sha -> 当前commit SHA,可以作为docker image的版本号
  • env:环境变量
  • job:当前执行 job 的信息,比如job.status -> 当前job的执行状态
  • matrix:构建信息,比如系统版本、node版本

更多可参考Contexts - GitHub Docs