通过 GitHub Actions 自动上传小程序代码
发布于 3 年前 作者 mhuang 3279 次浏览 来自 分享

miniporgram-ci

我们可以通过 miniporgram-ci 这个包来上传小程序代码

比如新建文件 scirpts/upload.js 示例代码如下:

const path = require('path');
const {Project, upload} = require('miniprogram-ci');

const {version, description} = require('../package.json');
const {appid: appId} = require('../project.config.json');

(async () => {
	const project = new Project({
		appid: appId,
		type: 'miniProgram',
		projectPath: path.join(__dirname, '../'),
		privateKeyPath: './private.key',
		ignores: [
			'.github',
			'scripts',
			'README.md',
			'yarn.lock',
			'node_modules/**/*'
		]
	});
	const uploadResult = await upload({
		project,
		version,
		desc: description,
		setting: {
			es7: true,
			minify: true,
			codeProtect: true,
			minifyJS: true,
			minifyWXML: true,
			minifyWXSS: true,
			autoPrefixWXSS: true
		},
		onProgressUpdate: console.log
	});

	console.log(uploadResult);
})();

我们需要在小程序中的公众平台的后台的

“开发” => “开发管理” => “开发设置” => “小程序代码上传”

下载上传秘钥,重命名为 private.key 和 禁用 “IP白名单” 功能

然后运行命令

node scripts/upload.js

GitHub Actions

Github 提供了 Github Actions 来出提供 CI/CD 和 自定义 workflow.

示例我们在 package.json 中的 scripts 中添加一行命令

{
  "scripts": {
     "mp:upload": "node scripts/upload.js"
  }
}

然后创建 .github/workflows/upload_miniprogram.yml 文件,内容如下。

name: Upload MiniProgram
on:
  push:
    branches:
      - main
  pull_request:
    types: ['labeled']

jobs:
  upload:
    if: ${{ github.ref == 'refs/heads/main' }} || contains(github.event.pull_request.labels.*.name, 'upload_miniprogram')
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@master
      - shell: bash
        env:
          MP_PRIVATE_KEY: ${{ secrets.MP_PRIVATE_KEY }}
        run: |
          if [[ -z $MP_PRIVATE_KEY ]]; then
            echo "##########"
            echo ""
            echo "Please set 'MP_PRIVATE_KEY' key in actions secrets"
            echo ""
            echo "##########"
            exit 1
          else
            echo "$MP_PRIVATE_KEY" > private.key
          fi
      - uses: actions/setup-node@master
        with:
          node-version: '12.x'
      - run: |
          yarn
          yarn build
          yarn mp:upload

if: ${{ github.ref == ‘refs/heads/main’ }} || contains(github.event.pull_request.labels.*.name, ‘upload_miniprogram’)

这里标识当分支是名称 main 的时候,或者当 PR 包含 upload_miniprogram label 的时候回出发上面的 upload 这个任务

MP_PRIVATE_KEY: ${{ secrets.MP_PRIVATE_KEY }}

有之前下载 private.key 是秘钥,所以 Git 应该 ignore 它。但是我们上传小程序的代码的时候需要使用,我们可以通过 GitHub 的 secrets 把秘钥的内容设置进去

然后我们 push main 这个分支就会出发我们的一个上传小程序代码的工作流

回到顶部