Skip to content

部署自动化

前言

传统项目部署流程:手动打包、上传代码到git、部署项目。这个过程虽然简单,但往往是重复性强且浪费时间还容易出错,尤其是当项目规模较大时,整个流程会变得非常耗时和繁琐。

为了解决这个问题我们有必要为项目配置 CI/CD 流程。

名词解释

CI

持续集成(Continuous Integration, CI)。

试想软件在开发过程中,需要不断的提交,合并进行单元测试和发布测试版本等等,这一过程是痛苦的。持续集成CI是在源代码变更后自动检测、拉取、构建的过程。

CD

CD 对应两个概念 持续交付Continuous Delivery 持续部署Continuous Deployment

持续交付

提交交付顾名思义是要拿出点东西的。在 CI 的自动化流程阶段后,运维团队可以快速、轻松地将应用部署到生产环境中或发布给最终使用的用户。

从前端的角度考虑,在某些情况下肯定是不能直接通过自动化的方式将最终的 build 结果直接扔到生产机的。持续交互就是可持续性交付供生产使用的的最终 build。最后通过运维或者后端小伙伴进行部署。

持续部署

作为持续交付的延伸,持续部署可以自动将应用发布到生产环境。

思路

手动部署一个前端项目的步骤包括:

  1. 写完代码执行npm run build打包前端项目。
  2. 把代码推送到gitlab仓库。
  3. 通过Jenkins执行项目build。
  4. 发布最新版本。

实现

环境安装

  1. 代码管理 Gitlab 安装
  2. Jenkins 安装,Jenkins 安装 Gitlab 插件

Jenkins Freestyle 任务构建

  1. New Item
    1. Freestyle project
  2. 进入项目 ->
    1. 点击 Configure -> 进入General面板
    2. 配置 Source Code Management
    3. 配置 Build Triggers

部署到本机

在 构建 中选择 增加构建步骤 -> 执行 shell 输入打包发布相关的命令。

# 安装yarn
npm install yarn -g
# 安装项目依赖
yarn install
# 打包项目
yarn build
# 打包 build 后的文件
tar -zcvf dist.tar.gz dist/
# 删除 build 后的文件
rm -rf dist/
# 移动 build 后的压缩包到 nginx 托管目录下。
sudo mv dist.tar.gz /usr/share/nginx/html
# 进入托管目录下
cd /usr/share/nginx/html
# 解压
sudo tar -zxcf dist.tar.gz
# 删除压缩包
sudo rm -rf dist.tar.gz
# 安装yarn
npm install yarn -g
# 安装项目依赖
yarn install
# 打包项目
yarn build
# 打包 build 后的文件
tar -zcvf dist.tar.gz dist/
# 删除 build 后的文件
rm -rf dist/
# 移动 build 后的压缩包到 nginx 托管目录下。
sudo mv dist.tar.gz /usr/share/nginx/html
# 进入托管目录下
cd /usr/share/nginx/html
# 解压
sudo tar -zxcf dist.tar.gz
# 删除压缩包
sudo rm -rf dist.tar.gz

侦听 git 提交到指定分支进行构建

Gitlab 配置
  1. 代码仓库需要 Maintainer 权限
  2. 代码仓库
    1. 用户设置
    2. Webhooks
    3. 输入URL、Secret Token
    4. 点击Add webhook
    5. 点击测试
    6. 点击 Push events
    7. 提示:Hook executed successfully: HTTP 200,表示成功了。

Jenkins 配置

1, 修改 Jenkins 任务配置 构建触发器中选择 GitHub hook trigger for GITScm polling

2, 由于在上面的源码管理中已经指定了main分支,此时如果这个分支的代码有改动就会触发自动构建。

部署到目标主机

在真实的开发场景中,Jenkins 几乎不会和前端资源放到一个服务器。大多数情况下 Jenkins 所处的服务器环境就是一个工具用的服务器,放置了一些公司中常用的工具。因此构建到指定的服务器也至关重要。

1, 先修改原有的构建脚本。因为要发布到远程,所以原有的发布命令要进行去除。

# 安装yarn
npm install yarn -g
# 安装项目依赖
yarn install
# 打包项目
yarn build
# 只打包,然后删除文件夹。
tar -zcvf dist.tar.gz dist/
rm -rf dist/
# 安装yarn
npm install yarn -g
# 安装项目依赖
yarn install
# 打包项目
yarn build
# 只打包,然后删除文件夹。
tar -zcvf dist.tar.gz dist/
rm -rf dist/

2, 选择构建后操作 -> Send build artifacts over SSH

钉钉机器人通知

1,系统管理 -> 插件管理 搜索 DingTalk 进行安装。

2,钉钉群创建机器人。钉钉群 -> 只能群助手 -> 添加机器人 -> 自定义

参考