小程序的持续集成方案

栏目: 服务器 · 发布时间: 7年前

内容简介:半年前,有机会开始接触微信小程序开发。却因为只是接触而并没投入开发小程序的过程中,因此对很多小程序的细节并未有充分的理解,仅仅停留在了解类似的理论层面,比如mpvue修改了 Vue.js 的 runtime 和 compiler 实现了编译及运行在原生小程序能力,比如原生小程序不支持npm包的使用及管理等,当然那时候的技术细节难点都是由非常给力的好同事解决消化了,所以也没多去细究。最近,我开始投入到完成的小程序开发迭代里,却发现一个头痛的问题,如何准确并快速的的把小程序上传去后台,并让测试人员进行测试。当

半年前,有机会开始接触微信小程序开发。却因为只是接触而并没投入开发小程序的过程中,因此对很多小程序的细节并未有充分的理解,仅仅停留在了解类似的理论层面,比如mpvue修改了 Vue.js 的 runtime 和 compiler 实现了编译及运行在原生小程序能力,比如原生小程序不支持npm包的使用及管理等,当然那时候的技术细节难点都是由非常给力的好同事解决消化了,所以也没多去细究。

最近,我开始投入到完成的小程序开发迭代里,却发现一个头痛的问题,如何准确并快速的的把小程序上传去后台,并让测试人员进行测试。

问题

当遇到多个开发人员并行开发不同功能模块的同一小程序,往往就会遇到测试人员需要进行测试的时候,让开发人员切换至测试分支后,进行构建编译和上传,最终把上传后生产的二维码提供出来进行测试使用。

若当前开发人员在认真coding,为某个功能正在奋斗。突然被别人打断并告诉你需要为他提供一个测试环境的二维码….

小程序的持续集成方案

因为为了这个二维码,需要做的事情是:

  • git stash
  • git checkout branch
  • npm install
  • npm run build
  • 点击“预览”,生成二维码,或点击上传,更新体验版

提供二维码出去后,恢复刚刚的工作状态

  • git checkout branch
  • git stash pop
  • npm install
  • npm run dev
  • 不断回想刚刚的开发思路

理想流程

小程序的持续集成方案

上面所说的,只是一个常见的场景,但是思考一下,这个场景的重复率是否很高,重复这类操作的价值究竟有多少?

为了解决不让开发人员为了一个测试环境的二维码而痛苦,我尝试把gitlab ci 和 微信开发者 工具 的能力进行对接尝试。

小程序的持续集成方案

在理想的流程里,开发人员只需要针对对应的分支进行合并或提交即可,无需关心如何把项目编译及版本分发交付到测试或体验人员手上。

接下来,对项目分支的管理不展开过多的说明,只设定develop分支是自动触发小程序持续集成( 安装依赖、构建、上传至体验版本 )的目标。

微信开发者工具

微信开发者工具有提供5个接口能力,并且提供cli 和 http方式调用:

  1. 命令行启动工具
  2. 命令行登录
  3. 命令行提交预览
  4. 命令行上传代码
  5. 支持自动化测试

由于这次目标只需要把对应develop分支的代码上传微信更新为体验版本,所以微信开发者工具的接口能力最主要的是第4个(命令行上传代码)。

如果是功能分支也需要创建预览二维码,可以通过第3个接口能力实现

cli和http的调用有什么区别

cli方式

通过命令行调用安装完成的工具可执行文件,完成登录、预览、上传、自动化测试等操作。调用返回码为 0 时代表正常,为 -1 时错误。 命令行工具所在位置: macOS: <安装路径>/Contents/Resources/app.nw/bin/cli Windows: <安装路径>/cli.bat

http 方式

http 服务在工具启动后自动开启,HTTP 服务端口号在用户目录下记录,可通过检查用户目录、检查用户目录下是否有端口文件及尝试连接来判断工具是否安装/启动。 端口号文件位置: macOS : ~/Library/Application Support/微信web开发者工具/Default/.ide Windows : ~/AppData/Local/微信web开发者工具/User Data/Default/.ide

说白了,cli可以直接通过调用命令行工具,而http需要先寻找端口再进行接口调用,更适合跨机器调用。 根据我当前情况,选择了cli方式。

设置构建机器

公司的Mac mini 类似的机器暂时没有资源,不得不回到Windows上进行构建机的设置。但是坑还是挺多,可能一方面也是对windows的不熟悉吧。最后还是选择在Windows上装vmware,在vmware上运行Mac os。

小程序的持续集成方案

在Mac上面,安装微信开发者工具,如何下载安装就没必要多说了。

接下来还需要安装gitlab runner,gitlab runner是用来运行你定制的任务(jobs)并把结果返回给 GitLab。 GitLab Runner 配合GitLab CI(GitLab 内置的持续集成服务) 协调完成任务。详情可以查看后面的引用文章。

在Mac上安装gitlab runner最简单的是用brew,当然另外下载应用包也是可以的

brew install gitlab-runner # 安装gitlab runner
brew services start gitlab-runner # 开机自动运行
gitlab-runner start # 只需要直接运行(不需要开机自动运行)
复制代码

安装完成后,可以进行runner的配置,主要需要提供gitlab url,项目仓库的token,runner tags等,详细信息请参考 Registering Runners | GitLab 中文文档

gitlab-runner register 
复制代码

编写CI文件

CI文件编写,最主要是项目根目录上创建一个名为.gitlab-ci.yml,每一行的

stages:
  - build # 总体CI的过程,暂时只有一个job:build

before_script:
  - shopt -s expand_aliases # 开启扩展aliases功能 issue https://gitlab.com/gitlab-org/gitlab-runner/issues/1083
  - alias wxcli="/Applications/wechatwebdevtools.app/Contents/Resources/app.nw/bin/cli" # 指定微信开发者工具cli命名为wxcli
  - type wxcli # 验证wxcli命令是否存在
  - wxcli # 启动微信开发者工具(其实好像有点多余,因为如果当前没启动微信开发者工具,在wxcli -u的时候也会启动)
  - source ~/.bash_aliases # 读取特点的alias,比如配置的nvm,issue https://gitlab.com/gitlab-org/gitlab-runner/issues/1958 
  - npm install # 安装依赖

# 测试环境
test-build:
  stage: build # 对应stages上的job名称
  script:
    - npm run build
    - curr_commit_content=`git log -1 --pretty=format:%s` # 获取最近提交的git内容
    - curr_version=`node -p "require('./package.json').version"` # 获取package的版本号
    - curr_proj_path=`pwd` # 当前项目路径
    - wxcli -u $curr_version@$curr_proj_path --upload-desc $curr_commit_content # 提交微信开发者
	  - # 上传成功后,你可以尝试发送一些通知提醒大家可以去打开新版本了,比如钉钉的webhook
  only:
    - develop
  tags:
    - xxx_mp

复制代码

查看构建结果

查看构建结果也是很简单,直接在gitlab仓库里的CI/CD —— pipeline 进行查看

小程序的持续集成方案

测试人员和体验人员可以从小程序开发助手上查看最新体验版(记得要在微信小程序后台把该CI用户上传的版本设定成体验版)

小程序的持续集成方案

真的不要再去做重复的工作,太影响心情了。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Web Designer's Idea Book, Vol. 2

The Web Designer's Idea Book, Vol. 2

Patrick McNeil / How / 2010-9-19 / USD 30.00

Web Design Inspiration at a Glance Volume 2 of The Web Designer's Idea Book includes more than 650 new websites arranged thematically, so you can easily find inspiration for your work. Auth......一起来看看 《The Web Designer's Idea Book, Vol. 2》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码