微信发布了独立的 miniprogram-ci 小程序编译模块,可以通过node脚本或者命令行直接操作代码上传及预览,而不再需要使用完整的微信开发者工具。
这篇文章讲述如何使用 Coding 的持续集成上传小程序代码,同时也兼容Jenkins或者基于Jenkins的持续集成系统。
首先到小程序后台,开发→开发设置→小程序代码上传获取密钥,由于 Coding 的构建节点出口IP一般不固定,因此需要关闭“IP白名单”。
获取到密钥后,到 Coding 的项目设置→开发者选项→凭据管理,凭据类型选择SSH私钥,然后填入刚刚下载的密钥(记事本打开)。
新增构建计划。由于我们仅需要实现代码上传,因此使用命令行模式。Jenkinsfile
编写比较简单,直接贴出代码。
pipeline {
agent any
stages {
stage('检出') {
steps {
checkout([
$class: 'GitSCM',
branches: [[name: env.GIT_BUILD_REF]],
userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]])
}
}
stage('安装依赖') {
steps {
sh 'npm install -g miniprogram-ci'
}
}
stage('部署') {
steps {
withCredentials([sshUserPrivateKey(credentialsId: env.PRIVATE_KEY, keyFileVariable: 'PRIVATE_KEY_PATH')]) {
sh '''miniprogram-ci upload \
--pp ./ \
--pkp ${PRIVATE_KEY_PATH} \
--appid ${APP_ID} \
--uv ${CI_BUILD_NUMBER} \
-r 1 \
--enable-es6 true \
--enable-es7 true \
--enable-minifyJS true \
--enable-minifyWXSS true \
--enable-autoPrefixWXSS true'''
}
}
}
}
}
-r 1
后的参数可以根据项目实际情况填写,参数说明在包的 readme 中有,也可以参照下图。
另外,如果开启了minifyWXML
,对于wxml的语法规则会比使用微信开发者工具上传时更加严格,例如wxml中<input />
写成了<input></input>
,在部署时会直接报错。
20002 ‘Error: {“errCode”:-1,”errMsg”:”inner upload fail with errcode: -80054, errmsg: ./pages/auth/login.wxml:15:3: expect end-tag
input
., nearview
“}’
(node:4362) UnhandledPromiseRejectionWarning: Error: Error: {“errCode”:-1,”errMsg”:”inner upload fail with errcode: -80054, errmsg: ./pages/auth/login.wxml:15:3: expect end-taginput
., nearview
“}
at Object.upload (/usr/lib/node_modules/miniprogram-ci/dist/upload/upload.js:1:3214)
at process._tickCallback (internal/process/next_tick.js:68:7)
填写完Jenkinsfile
后,添加一个环境变量APP_ID
,值为小程序的appid,然后完成其它配置。
执行构建任务,提示done: upload
且没有报错即完成,在后台“版本管理”将可以看到刚刚提交上来的代码。
发表回复