内容简介:前端开发如何让持续集成/持续部署(CI/CD)跑起来
近几年,伴随着前端技术日新月异的发展,前端开发中前后端分离,工程化,自动化等现代化的开发模式越来普及,前端项目也引入了编译,构建,单元测试等现代软件工程化的标准环节。这样大提高了前端的开发效率和业务交付能力。但是,在代码集成,项目部署阶段,我们还需要引入 CI / CD 等现代化的软件开发实践,来减少风险,重复过程,节省我们的时间。
我们废话少说,这里不再对 持续集成/持续部署(CI/CD) 的概念做过多赘述,本文主要分享一下如何基于 gitlab 、 jenkins 让 CI/CD 跑起来。
其中:
- gitlab 用于代码版本管理,并通过其提供的 webhook 功能,触发 jenkins job 的运行。
- jenkins 用来执行项目中 单元测试,编译打包相关 npm 命令,并发送反馈邮件,执行远程部署脚本。
- nodejs 用于提供单元测试,编译打包功能的 npm 命令
在我们的前端项目里(如: https://github.com/hanan198501/vue-spa-template ),一般使用 karma 来运行单元测试,使用 webpack 来进行打包构建, 使用 npm script 来执行这些任务,其中我们的 package.json 的 scripts 字段就有如下:
"dev": "node build/dev-server.js", "build": "node build/build.js", //打包构建 "build-server": "node build/build-server.js", "unit": "karma start test/unit/karma.conf.js --single-run", // 运行单元测试
如果没有 CI/CD, 我们的前端从开发到提测工作流程可能如下:
- 本地机器上写代码
- 在命令行输入 npm run unit,查看单元测试结果
- 提交代码,push 到 git 远程仓库
- 登录测试服务器,拉取代码,执行 npm run build,构建项目
- 如果测试服务器是基于 pm2 的 proxy server,还需要重启 server
这个流程中,每一个步骤都要重复人工操作,很大增加了时间成本,不能保证操作的准确性。对于 unit 或者 build 的结果,没有一个自动的反馈机制,需要人工 check 运行结果,最后部署也是人工登录服务器执行脚本,非常繁琐。
引入 CI/CD 以后,整个流程变成:
- 本地机器上写代码
- 提交代码,push 到 git 远程仓库
- git hook 触发 jenkins 的构建 job (自动)
- jenkins job 中拉取项目代码,运行 npm run unit 和 npm run build,如果失败,发送邮件通知相关人。(自动)
- jenkins job 中执行测试服务器的部署脚本 (自动)
在 CI/CD 流程中,只有步骤1和步骤2需要人工操作,其他步骤都是自动运行,是一个非常标准化的流程,减少了人工操作的风险,省去了重复性工作,增强了项目的可见性。接下来我们将通过配置 jenkins 和 gitlab webhook 来实现这个流程。
配置项目的 jenkins job
首先,在 jenkins 中需要安装 Gitlab Hook Plugin 这个插件,一支持 gitlab 的 webhook 功能。
-
在 jenkins 左边栏点击 “新建”, 输入 job 名称,选择 “构建一个自由风格的软件项目” 一项。点击 “OK”
-
进入 job 配置页面,点击 “General” 选项,配置名称和描述
-
点击 “源码管理” 选项,配置项目的 git 仓库地址的需要构建的分支信息
-
点击 “构建触发器” 选项,配置 job 构建时机,勾选 “Poll SCM”,”日程表” 留空。即可通过 gitlab webhook 来触发 job 构建
-
点击 “构建” 选项,再点击 “增加构建步骤”, 选择 “Execute shell”,配置构建命令。 如下,这里配置了
cnpm install
、npm run unit
、npm run build
, 分别做安装依赖、单元测试、编译打包三件事。 -
点击 “构建后操作” 选项,添加两个构建后操作步骤:
- “E-mail Notification”,配置构建失败的邮件通知人;
- “Send build artifacts over ssh”, 执行预先写好的远程服务器的部署脚本
-
点击最下方的 “保存”,job 创建完毕。
配置 gitlab webhook
进入项目的 gitlab 页面 >> Settings >> Integrations , 添加一条 webhook: URL 中输入” http://你的jenkins服务器host/gitlab/build_now", Trigger 勾选Push events,点击 “Add webhook”。
这样,当有代码 push 到git 仓库时,gitlab 会想 jenkins 服务器发送提交 post 请求,触发之前创建好的 jenkins job 运行, 代码从开发到部署测试,是一个持续的过程,同时对整个过程错误提供了反馈机制。
从此,前端开发再也不用关心代码 push 以后的事情,写代码更加专注和自信了!!**
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 【前端打包部署】谈一谈我在SPA项目打包=>部署的处理
- 如何使用 docker 部署前端应用
- 前端自动化部署方案探索
- 前端工程化:构建、部署、灰度
- 前端之路: 如何用 jenkins 构建部署项目
- 前端项目无独立部署环境时,使用shell命令简化依赖后台部署的繁杂操作
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
UNIX 时间戳转换
UNIX 时间戳转换
HEX CMYK 转换工具
HEX CMYK 互转工具