近几年,伴随着前端技术日新月异的发展,前端开发中前后端分离,工程化,自动化等现代化的开发模式越来普及,前端项目也引入了编译,构建,单元测试等现代软件工程化的标准环节。这样大提高了前端的开发效率和业务交付能力。但是,在代码集成,项目部署阶段,我们还需要引入 CI / CD 等现代化的软件开发实践,来减少风险,重复过程,节省我们的时间。
我们废话少说,这里不再对 持续集成/持续部署(CI/CD) 的概念做过多赘述,本文主要分享一下如何基于 gitlab 、 jenkins 让 CI/CD 跑起来。
其中:
在我们的前端项目里(如: 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", // 运行单元测试
这个流程中,每一个步骤都要重复人工操作,很大增加了时间成本,不能保证操作的准确性。对于 unit 或者 build 的结果,没有一个自动的反馈机制,需要人工 check 运行结果,最后部署也是人工登录服务器执行脚本,非常繁琐。
在 CI/CD 流程中,只有步骤1和步骤2需要人工操作,其他步骤都是自动运行,是一个非常标准化的流程,减少了人工操作的风险,省去了重复性工作,增强了项目的可见性。接下来我们将通过配置 jenkins 和 gitlab webhook 来实现这个流程。
首先,在 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
, 分别做安装依赖、单元测试、编译打包三件事。
点击 "构建后操作" 选项,添加两个构建后操作步骤:
点击最下方的 "保存",job 创建完毕。
进入项目的 gitlab 页面 >> Settings >> Integrations , 添加一条 webhook: URL 中输入"http://你的jenkins服务器host/gitlab/build_now", Trigger 是触发 webhook 的时机,根据需要自己选一个就行,这里我们勾选 "Push events", 点击 "Add webhook"。
这样,当有代码 push 到git 仓库时,gitlab 会想 jenkins 服务器发送提交 post 请求,触发之前创建好的 jenkins job 运行, 代码从开发到部署测试,是一个持续的过程,同时对整个过程错误提供了反馈机制。
从此,前端开发再也不用关心代码 push 以后的事情,写代码更加专注和自信了!!**
扫码关注w3ctech微信公众号
共收到0条回复