zl程序教程

您现在的位置是:首页 >  其他

当前栏目

【架构师(第四十五篇)】 服务端开发之认识 Github actions

2023-02-18 15:37:26 时间

CI/CD

要让开发人员更加专注于业务代码的开发,那么架构师就得保障研发流程。合理全面的 CI/CD ,自动化研发流程 ,能够提高研发效率,增加系统稳定性。

CI/CD 的核心概念是 持续集成、持续交付和持续部署

CI 持续集成(Continuous Integration)

构建软件和完成初始测试的过程。

CD 持续交付(Continuous Delivery)

CI 在完成了构建、单元测试和集成测试这些自动化流程后,持续交付可以自动把已验证的代码发布到企业自己的存储库。

CD 持续部署(Continuous Deployment)

对于一个完整、成熟的 CI/CD 管道来说,最后的阶段是持续部署。它是作为持续交付的延伸,持续部署可以自动将应用发布到生产环境。

学习内容

  • 使用 Github actions 进行 CI/CD
  • 学会 Dockernode.js 项目中的应用
  • 搭建测试环境,自动发布到测试机。

Github actions

初始化

?? 中文文档

随便选择一个 github 仓库,然后点击 actions

这里是一些模板,选择一个就会在项目的 .github/workflows 目录下,生成 .yml 文件。

红框里输入文件名,然后点击右面的 start commit

输入 commit message,直接默认,点击 commit new file

代码仓库多了一个文件

本地拉一下代码,可以看到 .yml 文件已经存在了。

配置文件

默认的配置文件注释

# master 分支 自动测试

name: test # 测试名称 语义化即可

on: # 触发条件
    push: # 在下面的分支进行 push 操作的时候触发
        branches: # 触发的分支 可以设置多个
            - main # 分支名称
        paths: # 以下目录中的文件有改动就触发  可以不写 代表所有文件
            - '.github/workflows/**'
            - '__test__/**'
            - 'src/**'

jobs: # 任务
    test: # 任务名称 可以自定义 也可以使用第三方
        runs-on: ubuntu-latest # 指定运行环境 操作系统 没有特殊情况不需要改
        steps: # 步骤
            - uses: actions/checkout@v2 # 第一个步骤   第三方的actions   等同于执行了 git pull
            - name: Use Node.js # 第二个步骤 步骤名称 自定义
              uses: actions/setup-node@v1 #  第三方的actions   安装 node.js
              with: # 参数
                  node-version: 14 # nodejs 的版本
            - name: lint and test # 第三个步骤 步骤名称 自定义
              run: | # 自定义执行命令  多行的方式
                  npm i
                  npm run lint
                  npm run test:remote
    test2: # 任务名称 可以自定义 也可以使用第三方
        runs-on: ubuntu-latest # 指定运行环境 操作系统 没有特殊情况不需要改
        steps: # 步骤
            - run: touch a.txt # 自定义执行命令  单行的方式
            - run: echo 100 > a.txt # a.text 写入内容
            - run: cat a.txt # 读取  a.text 内容

流程

当本地 push 代码的时候,Actions 页面会出现当前 workflows,黄色点说明还没有开始。

过了一会发现红色的,就是 workflows 失败了

点进去看一下,这里就会显示 workflows 的信息了,原来是没有 lint 命令。

去掉 npm run lint 再试一下,push 代码,通过了就是绿色的。

step 的四种方式

 # 一 直接使用 uses 第三方
 - uses: actions/checkout@v2 
 # 二 使用 name + uses 第三方
 - name: Use Node.js 
   uses: actions/setup-node@v1 
 # 三 run  |  多行的方式
 run: | 
      npm i
      npm run test:remote
 # 四 run 单行的方式
    - run: touch a.txt 
    - run: echo 100 > a.txt 
    - run: cat a.txt

Github actions 做自动化测试

  • pre-commit 时执行本地接口测试
  • master push 时执行远程接口测试
// .github\workflows\test.yml
# master 分支 自动测试

name: test # 测试名称 语义化即可

on: # 触发条件
    push: # 在下面的分支进行 push 操作的时候触发
        branches: # 触发的分支 可以设置多个
            - main # 分支名称
        paths: # 以下目录中的文件有改动就触发  可以不写 代表所有文件
            - '.github/workflows/**'
            - '__test__/**'
            - 'src/**'

jobs: # 任务
    test: # 任务名称 可以自定义 也可以使用第三方
        runs-on: ubuntu-latest # 指定运行环境 操作系统 没有特殊情况不需要改
        steps: # 步骤
            - uses: actions/checkout@v2 # 第一个步骤   第三方的actions   等同于执行了 git pull
            - name: Use Node.js # 第二个步骤 步骤名称 自定义
              uses: actions/setup-node@v1 #  第三方的actions   安装 node.js
              with: # 参数
                  node-version: 14 # nodejs 的版本
            - name: lint and test # 第三个步骤 步骤名称 自定义
              run: | # 自定义执行命令  多行的方式
                  npm i
                  npm run lint
                  npm run test:remote

push 代码的时候会有两个 workflow,一次 push 对应多个 workflow 是很正常的。

两个 workflow 都成功了。

由于非代码原因导致的错误,排除问题后可以点击 Re-run all jobs 而不用重新 push 代码。