Github 2019年秋天发布的CI/CD工具,功能强大且稳定。 Github 被微软收购之后,越来越强大了,正在由一个git托管服务,变为一个研发项目解决方案。

  • 网上的Ct/CD有很多,例如travis ,任选一个即可。
  • Github actions高效稳定,功能强大,易学易用。

实际上是github提供虚拟机(runner)来运行我们的工作流,本地克隆您的存储库,安装测试软件。

基本认识

介绍https://github.com/imooc-lego/biz-editor-server-open/actions/new
中文文档 https://docs.github.com/cn/actions/learn-github-actions
使用方法十分简单,代码在项目的 .github/workflows 目录下,添加.yml 格式文件。
添加jobs和steps,代码提交之后就会运行。

相关

workflows文件的语法:
github actions应用市场

应用场景

参考:https://github.com/imooc-lego/biz-editor-server-open/tree/master/.github/workflows

  • master 分支,自动化测试
  • dev分支,自动部署到测试机
  • v*.*.* 格式的tag ,自动上线(支持回滚)

触发条件 on

  • push:推送maste分支的时候触发

    • branches
    • paths
      1. on: # 触发条件
      2. push:# 在下面分支 git push 的时候触发
      3. branches:
      4. - master
      5. paths:# 当前本次 push 改动的文件 包含以下文件就触发
      6. - '.github/workflows/**'
      7. - '__test__/**'
      8. - 'src/**'

      任务 jobs和步骤 steps

  • 默认情况会依次执行,不会互相依赖。

从下面可以看出,steps使用有三种形式:

  • 直接使用 uses 第三方
  • 使用name和uses第三方
  • 使用name 和run ```bash jobs: # 任务 test: # 任务名称可以自己取
    1. # 指定操作系统
    2. runs-on: ubuntu-latest
    3. # 步骤:有几个-就有几个步骤,这里有3个
    4. steps:
    5. - uses: actions/checkout@v2 # 步骤1:git pull,第三方的action,获取最新的代码
    6. - name: Use Node.js # 步骤2:定义了步骤的名词,可选。
    7. uses: actions/setup-node@v1 #安装Nodejs
    8. with:
    9. node-version: 14 #使用node14
    10. - name: lint and test # 步骤3:定义了步骤的名词,可选。
    11. run: | # 自定义的命令
    12. npm i
    13. npm run lint
    14. npm run test:remote
  1. 效果如图:<br />![截屏2022-09-28 14.40.35.png](https://cdn.nlark.com/yuque/0/2022/png/282427/1664347287953-385560c2-78bf-4262-8b5f-b5b43d12c019.png#clientId=u3c626b1a-8e16-4&crop=0&crop=0&crop=1&crop=1&errorMessage=unknown%20error&from=paste&height=517&id=ue78bd477&margin=%5Bobject%20Object%5D&name=%E6%88%AA%E5%B1%8F2022-09-28%2014.40.35.png&originHeight=1034&originWidth=3802&originalType=binary&ratio=1&rotation=0&showTitle=false&size=223319&status=error&style=none&taskId=uf6defc61-e306-492c-9380-938b4aae7bf&title=&width=1901)
  2. <a name="iVoao"></a>
  3. ## 关于测试流程
  4. - pre-commit 时执行本地接口测试 `npm run test:local` 本地测试测试刚开发好的功能,即时性高
  5. ```bash
  6. "husky": {
  7. "hooks": {
  8. "pre-commit": "lint-staged && npm run test:local",
  9. "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
  10. }
  11. },
  • master push 时执行远程接口测试 npm run test:remote 远程测试方式关闭了本地测试环节,没有验证。