likes
comments
collection
share

还在手动上传小程序? uni-mini-ci帮你一键发布多平台uni-app小程序

作者站长头像
站长
· 阅读数 9

背景

在没有CI工具帮助的时候,我们使用uni-app开发小程序通常会在小程序发版时先进行 build 构建,然后在小程序开发者工具中打开构建产物,然后进行上传代码的操作。这种人力运维的稳定性是不可控的,而且当我们一次要发布多个平台或者多个小程序时,这种人力运维的工作方式将浪费我们大量的时间。

为了解决这个问题,微信推出了miniprogram-ci,开发者可不打开小程序开发者工具,独立使用 miniprogram-ci 进行小程序代码的上传、预览等操作,随后支付宝、钉钉等其他小程序厂商也跟着推出了各自的CI工具,这一举措将开发者从繁琐的上传流程中解放了出来。

uni-mini-ci是一款支持微信、钉钉、支付宝、企业微信等小程序平台的持续集成工具。它集成了多个平台的ci工具一次配置发布到多端,让开发者可以轻松地将应用程序发布到多个小程序平台上。

为什么不直接使用各自平台的CI工具?

  1. 多个小程序平台CI工具的配置文件、配置项等有所差异,其能力也有所不同,
  2. uni-app存在构建的步骤,使用各自小程序平台的CI工具则需要在构建产物中各自创建配置文件。
  3. 钉钉小程序的DingTalk Design CLI,不支持指定版本号,而uni-mini-ci支持(至于为什么支持,可以去看一下uni-mini-ci的文档)。

所以使用uni-mini-ci可以让多平台的小程序持续集成统一化。

在哪些场景使用?

  1. Github Actions 小程序持续集成
  2. Jenkins 小程序持续集成
  3. GitLab CI/CD 小程序持续集成
  4. 本地上传多个小程序平台

借助Jenkins等工具可以将开发者从构建、上传小程序的工作中,彻底解放出来,只需动动手指,即可实现小程序的上传。

示例与实践

Jenkins示例

这里是一个简单的Jenkins示例,其中关于.minicirc的配置可见uni-mini-ci,示例中的变量都可以在jenkins中定义。

这里jenkins环境要全局安装uni-mini-ci

## 安装依赖
npm install

# 检查配置文件是否存在
if [ -f .minicirc ]; then
    # 如果文件存在,删除它
    rm .minicirc
fi

# 将配置写入配置文件
echo '{
  "dd": {
    "appid": "'$miniAppId'",
    "token": "'$token'",
    "projectPath": "dist/build/mp-alipay",
    "autoincrement": '$autoincrement'
  },
  "weixin": {
    "appid": "'$appid'",
    "privateKeyPath": "build/ci_keys/private.'$appid'.key",
    "projectPath": "dist/build/mp-weixin",
    "setting": {
      "minifyJS": true,
      "minifyWXML": true,
      "minifyWXSS": true,
      "minify": true
  },
  "version": "'$version'",
  "desc": "'$desc'"
}' > .minicirc

# 构建钉钉并上传
npm run build:mp-dingtalk
minici --platform dd

# 构建微信并上传
npm run build:mp-weixin
minici --platform weixin

Github Actions 示例

Github Actions与jenkins的实现基本一致,不过Github Actions是使用.yml作为配置文件的。

name: Upload To Weixin Alipay

on:
  push:
    tags:
      - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10

jobs:
  upload:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3

    - name: Install Dependencies
      run: |
        npm i uni-mini-ci -g
        yarn install

    - shell: bash
      env:
        PRIVATE_KEY: ${{ secrets.MP_PRIVATE_KEY }}
        APPID: ${{ secrets.MP_APPID }}
        TOOLID: ${{ secrets.ALI_TOOL_ID }}
        ALI_APPID: ${{ secrets.ALI_APPID }}
        ALI_PRIVATE_KEY: ${{ secrets.ALI_PRIVATE_KEY }}
      run: |
          echo "$PRIVATE_KEY" > private.key
          echo '{
            "alipay": {
              "appid": "'$ALI_APPID'",
              "toolId":"'$TOOLID'",
              "privateKey": "'$ALI_PRIVATE_KEY'",
              "projectPath": "dist/build/mp-alipay",
              "autoincrement":true
            },
            "weixin": {
              "appid": "'$APPID'",
              "privateKeyPath": "private.key",
              "projectPath": "dist/build/mp-weixin",
              "setting": {
                "minifyJS": true,
                "minifyWXML": true,
                "minifyWXSS": true,
                "minify": true
              }
            },
            "version": "",
            "desc": ""
          }' > .minicirc
        fi

    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v3
      with:
        node-version: "14.x"

    - name: upload
      run: |
        npm run build:mp-alipay
        minici --platform alipay

        # 构建微信并上传
        npm run build:mp-weixin
        minici --platform weixin

实践案例

Wot Design Uni 组件库

总结

通过使用uni-mini-ci,我们简化了使用uni-app开发的小程序的发布流程。借助Github Actions、Jenkins、GitLab CI/CD等工具的能力,我们可以实现小程序的自动化构建和部署,提高开发效率,使开发者能够更专注于业务逻辑的开发。

相关文章