首页
学习
活动
专区
圈层
工具
发布
50 篇文章
1
【架构师(第一篇)】整体需求分析和架构设计
2
【架构师(第二篇)】脚手架架构设计和框架搭建
3
【架构师(第三篇)】脚手架开发之掌握Lerna操作流程
4
【架构师(第四篇)】脚手架开发之Lerna源码分析
5
【架构师(第五篇)】脚手架之import-local执行流程及简历设计
6
【架构师(第六篇)】脚手架之需求分析和架构设计
7
【架构师(第七篇)】脚手架之准备阶段编写
8
【架构师(第八篇)】脚手架之 commander 框架使用方法
9
【架构师(第九篇)】如何让 Node 环境支持 ES Module
10
【架构师(第十篇)】脚手架之注册命令及架构优化
11
【架构师(第十一篇)】脚手架之命令注册和执行过程开发
12
【架构师(第十二篇)】脚手架之命令行交互工具 inquirer.js 使用方法
13
【架构师(第十三篇)】脚手架之创建项目准备阶段开发
14
【架构师(第十四篇)】脚手架之 egg.js 和 mongodb 的使用
15
【架构师(第十五篇)】脚手架之创建项目模板开发
16
【架构师(第十六篇)】脚手架之创建项目模板的下载与更新
17
【架构师(第十七篇)】脚手架之 ejs 和 glob 的使用
18
【架构师(第十八篇)】脚手架之项目模板的安装
19
【架构师(第十九篇)】脚手架之组件库模板开发
20
【架构师(第二十篇)】脚手架之自定义模板及第一阶段总结
21
【架构师(第二十一篇)】编辑器开发之需求分析和架构设计
22
【架构师(第二十二篇)】编辑器开发之项目整体搭建
23
【架构师(第二十三篇)】编辑器开发之画布区域组件的渲染
24
【架构师(第二十四篇)】编辑器开发之添加模版到画布
25
【架构师(第二十五篇)】编辑器开发之属性编辑区域表单渲染
26
【架构师(第二十六篇)】编辑器开发之属性编辑同步渲染
27
【架构师(第二十七篇)】前端单元测试框架 Jest 基础知识入门
28
【架构师(第二十八篇)】 测试工具 Vue-Test-Utils 基础语法
29
【架构师(第二十九篇)】Vue-Test-Utils 触发事件和异步请求
30
【架构师(第三十篇)】Vue-Test-Utils 全局组件和第三方库 vuex | vue-router
31
【架构师(第三十一篇)】前端测试之 TDD 的开发方式
32
【架构师(第三十二篇)】 通用上传组件开发及测试用例
33
【架构师(第三十三篇)】 Vue 中的实例及本地图片预览
34
【架构师(第三十四篇)】 业务组件库开发之 vue3 的插件系统
35
【架构师(第三十五篇)】 业务组件库开发之使用 Rollup 进行打包
36
【架构师(第三十六篇)】 业务组件库开发之发布到 NPM
37
【架构师(第三十七篇)】 服务端开发之后端框架与数据库技术选型
38
【架构师(第三十八篇)】 服务端开发之本地安装最新版 MySQL 数据库
39
【架构师(第三十九篇)】 服务端开发之连接 MySQL 数据库
40
【架构师(第四十篇)】 服务端开发之连接 Mongodb 数据库
41
【架构师(第四十一篇)】 服务端开发之安装并连接 Redis数据库
42
【架构师(第四十二篇)】 服务端开发之常用的登录鉴权方式
43
【架构师(第四十三篇)】 服务端开发之单元测试和接口测试
44
【架构师(第四十四篇)】 服务端开发之 pm2 和 nginx 介绍
45
【架构师(第四十五篇)】 服务端开发之认识 Github actions
46
【架构师(第四十六篇)】 服务端开发之安装 Docker
47
【架构师(第四十七篇)】 服务端开发之认识 Docker
48
【架构师(第四十八篇)】 服务端开发之 Dockerfile
49
【架构师(第四十九篇)】 服务端开发之认识 Docker-compose
50
【架构师(第五十篇)】 服务端开发之自动发布到测试机
清单首页架构文章详情

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


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 文件已经存在了。

配置文件

默认的配置文件注释

代码语言:javascript
复制
# 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 的四种方式

代码语言:javascript
复制
 # 一 直接使用 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 时执行远程接口测试
代码语言:javascript
复制
// .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 代码。

下一篇
举报
领券