miniprogram+GitLab CI/CD实现微信小程序代码自动上传

2,321 阅读1分钟

miniprogram-ci

miniprogram-ci 是从微信开发者工具中抽离的关于小程序/小游戏项目代码的编译模块。官方地址文档地址

const ci = require('miniprogram-ci')
let version = process.argv.slice(2)[0] //接收命令行传入版本参数
let desc = process.argv.slice(3)[0] //接收命令行传入描述参数

if (!version) version = 'v1.0.0'
if (!desc) desc = new Date() + 'Robot上传'

const project = new ci.Project({
  appid: '******', //你的APPID
  type: 'miniProgram',
  projectPath: process.cwd() + '/dist/build/mp-weixin', //项目路径
  privateKeyPath: '/app/mall/private.******.key', //私钥的路径
  ignores: ['node_modules/**/*'],
})
ci.upload({
  project,
  version,
  desc,
  setting: {
    es6: true,
  },
}).then(res => {
  console.log(res)
  console.log('上传成功')
}).catch(error => {
  if (error.errCode == -1) {
    console.log('上传成功')
  }
  console.log(error)
  console.log('上传失败')
  process.exit(-1)
})

gitlab-ci

gitlab-ci 是git官方提供的的自动化部署持续集成工具。

before_script:
  - date
  - npm -v
  - node -v
  - npm install
  - cp .env.example .env

after_script:
  - date
  
stages:
  - deploy

cache:
  paths:
    - ./node_modules

deploy:
  stage: deploy
  except:
    - tags
  script:
    - npm run build
    - VERSION=`node -p "require('./package.json').version"` #获取package.json版本号
    - DESCRIPTION=`git log -1 --pretty=format:%s` #获取最近一次git提交信息
    - node ./tool/upload.js $VERSION $DESCRIPTION  #执行

production:
  stage: deploy
  only:
    - tags
  script:
    - npm run build
    - DESCRIPTION=`git log -1 --pretty=format:%s`
    - node ./tool/upload.js $CI_BUILD_TAG $DESCRIPTION