小程序自动化构建-干货
基于 minigram 实现小程序自动化构建
1. 引言
在小程序开发过程中,手动构建和发布是一个繁琐且容易出错的流程。为了解决这个问题,我们可以借助 Minigram 这个轻量级的小程序编译工具,实现自动化构建,提高开发效率。
2. Minigram 简介
Minigram 是一个 Node.js 版的小程序编译工具,能够在不依赖微信开发者工具的情况下完成小程序的构建,适用于 CI/CD 场景。
2.1 主要功能
-
代码压缩、混淆
-
依赖解析与构建
-
支持 CI/CD 集成
-
支持 TypeScript、LESS/SASS 等预处理语言
3. 环境准备
在开始自动化构建之前,我们需要准备以下环境:
3.1 安装 Node.js 和 Minigram
确保本地安装了 Node.js,然后全局安装 Minigram:
npm install -g minigram
3.2 初始化小程序项目
如果已有小程序项目,可以跳过此步骤。
npx minigram init my-miniapp
cd my-miniapp
4. 实现小程序自动化构建
4.1 编写构建脚本
date npm install #npm install -g npm@latest #npm install -g miniprogram-ci miniprogram-ci \ $action \ --project ./project.config.json \ --pp ./ \ --pkp /opt/private.$appid.key \ --appid $appid \ --uv $version \ --enable-es6 true \ --enable-minify true \ --compile-condition '{}' \ --disable-dev-tools true \ --qrcode-format image \ --qrcodeOutputDest ./qrcode.jpg \ --verbose /data/soft/ossutil-v1.7.19-linux-amd64/ossutil64 cp -f /data/jenkins/workspace/test-xcx-preview/qrcode.jpg oss://xxx-xxx/test-xcx/
消息通知
import java.util.*; import java.text.SimpleDateFormat; //构建结果 def buildResult = manager. getResult() //构建用户 def buildUser= manager.getEnvVariable("BUILD_USER") //项目名称 def jobName= manager.getEnvVariable("JOB_NAME") //构建结果页面 def buildUrl= manager.getEnvVariable("BUILD_URL") //构建说明 //def buildDes = manager.getEnvVariable("description") def buildDes = manager.getEnvVariable("desc") //构建环境 def buildEnv= manager.getEnvVariable("version") //构建类型 def buildType= manager.getEnvVariable("action") //GIT分支 def gitBranch = manager.getEnvVariable("branch") manager.listener.logger.println("项目名称:"+ jobName) manager.listener.logger.println("构建分支:"+ gitBranch) manager.listener.logger.println("构建环境:"+ buildEnv) manager.listener.logger.println("构建类型:"+ buildType) manager.listener.logger.println("构建用户:"+ buildUser) manager.listener.logger.println("构建结果:"+ buildResult) if(buildResult == "SUCCESS"){ //解析蒲公英上传返回数据 //ipa下载地址 ipaDownloadUrl = "https://www.pgyer.com/"+ manager.getEnvVariable("buildShortcutUrl") def timestamp = System.currentTimeMillis() def qrCodeUrl = "https://xxx-xxx.oss-cn-zhangjiakou.aliyuncs.com/test-xcx/qrcode.jpg?ts=${timestamp}" //ipa二维码 ipaQrCode = manager.getEnvVariable("buildQRCodeURL") //ipa应用程序包 ipabuildIdentifier = manager.getEnvVariable("buildIdentifier") //ipa 版本号 ipabuildVersion = manager.getEnvVariable("buildVersion") manager.listener.logger.println("ipa下载地址"+ipaDownloadUrl) manager.listener.logger.println("ipa二维码地址:"+ipaQrCode) manager.listener.logger.println("ipa应用程序包名:"+ipabuildIdentifier) manager.listener.logger.println("ipa版本号:"+ipabuildVersion) dingding("小程序打包构建","### [ "+jobName+" ] 构建成功" + "\n\n构建分支:" + gitBranch + "\n\n构建类型:"+ buildType + "\n\n三端类型:" + "小程序" + "\n\n应用版本号:"+ buildEnv + "\n\n二维码图片:\n" + "\n\n构建日期:" + getNowTime() + "构建 " + "\n\n构建用户:"+ buildUser + "\n\n查看详情:[项目地址]("+buildUrl+")" ) }else if(buildResult == "ABORTED"){ dingding("test-xcx","### [ test-xcx ] 构建被终止\n" + " " + getNowTime() + " 终止\n\n[查看详情]("+buildUrl+")") }else{ dingding("test-xcx","### [ test-xcx ] 构建失败\n分支:" + gitBranch + "\n\n" + " " + getNowTime() + " 构建\n\n[查看详情]("+buildUrl+")") } //发送钉钉消息 def dingding(p_title,p_text){ manager.listener.logger.println("--------------------------"+p_title+p_text) def json= new groovy.json.JsonBuilder() json { msgtype "markdown" markdown { title p_title text p_text } at { atMobiles([]) isAtAll false } } manager.listener.logger.println("发送钉钉数据:"+json) def connection = new URL("https://oapi.dingtalk.com/robot/send?access_token=xxxxxxx").openConnection() connection.setRequestMethod('POST') connection.doOutput = true connection.setRequestProperty('Content-Type', 'application/json') def writer = new OutputStreamWriter(connection.outputStream) writer.write(json.toString()); writer.flush() writer.close() connection.connect() def respText = connection.content.text manager.listener.logger.println("钉钉返回结果:"+respText ) } //获取当前时间 def getNowTime(){ def str = ""; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar lastDate = Calendar.getInstance(); str = sdf.format(lastDate.getTime()); return str; }
5. 结论
通过 Minigram,我们可以在 CI/CD 流水线中实现小程序的自动化构建,避免手动操作带来的问题,提升开发效率。希望这篇文章能帮助你更好地理解并实践 Minigram 在小程序自动化构建中的应用!

浙公网安备 33010602011771号