DevsDawn
DevsDawn

使用Coding持续集成部署微信小程序

微信发布了独立的 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., near view“}’
(node:4362) UnhandledPromiseRejectionWarning: Error: Error: {“errCode”:-1,”errMsg”:”inner upload fail with errcode: -80054, errmsg: ./pages/auth/login.wxml:15:3: expect end-tag input., near view“}
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且没有报错即完成,在后台“版本管理”将可以看到刚刚提交上来的代码。

若无特别说明,本文采用 CC BY-SA 4.0 协议进行许可。如需转载,请附上本文链接和本声明。
本文链接:https://devsdawn.com/2020/05/using-jenkins-ci-to-deploy-wechat-miniapp/
DigitalOcean云服务,美国上市公司,注册即送200USD体验金
Vultr云服务,全球25+地域,注册即送100USD体验金

发表回复

textsms
account_circle
email

DevsDawn

使用Coding持续集成部署微信小程序
微信发布了独立的 miniprogram-ci 小程序编译模块,可以通过node脚本或者命令行直接操作代码上传及预览,而不再需要使用完整的微信开发者工具。 这篇文章讲述如何使用 Coding 的持续集成…
扫描二维码继续阅读
2020-05-08