<tbody id="5vw1z"></tbody>
<rp id="5vw1z"></rp>
  •  

    Taro 自動部署微信+支付寶小程序方法

    使用taro3同時開發?微信小程序 + 支付寶小程序;常規上傳方式為:在本地打包完微信使用開發者工具上傳;再次打包支付寶使用支付寶開發者工具上傳;相對繁瑣;所以使用ci機器人配合jenkins達到提交代碼自動部署雙平臺并且發送飛書消息通知。

    1. 微信小程序自動上傳體驗版

    1.1 安裝相關插件依賴

    小程序持續集成?借助該文檔的plugin-mini-ci插件進行機器人自動部署功能

    1.2 微信小程序機器人部署代碼配置

    打包配置修改:

    // config/index.js
    const CIPluginOpt = {
      // 微信小程序
      weapp: {
        appid: 'appid',
       // 在開放平臺下載的密鑰文件;放到根目錄的路徑;見下圖
        privateKeyPath: 'private.appid.key'
      },
      // 版本號
      version: '0.0.2',
      // 版本發布描述
      desc: '版本描述'
    // ....其他代碼
    const config = {
      // 其他代碼
      plugins:[[[email protected]/plugin-mini-ci', CIPluginOpt], [email protected]/plugin-html', 'taro-plugin-pinia'],
      }
    }

    1.3 設置自動上傳體驗版白名單

    添加打包后上傳ip白名單:

    設置自動上傳體驗版白名單

    1.4 配置npm打包+上傳命令

    // package.json
    "build:weapp:upload": "taro build --type weapp --upload",
    

    使用npm run build:weapp:upload 即可完成本地打包后成功上傳到體驗版。

    配置npm打包+上傳命令

    至此微信小程序本地打包自動部署到體驗版已經完成![撒花🎉]

    2. 支付寶小程序自動上傳到體驗版

    支付寶小程序體驗版版本號相對嚴格(需要本次上傳的版本號必須大于上次的版本號)

    2.1 安裝相關插件依賴(和1相同)

    小程序持續集成?借助該文檔的plugin-mini-ci插件進行機器人自動部署功能

    2.2 修改上傳前版本號

    • 可以手動的修改版本號然后繼續
    • 也可以使用nodejs修改版本號然后繼續

    補充:使用nodejs修改項目package.json版本號方法

    詳細代碼如下(nodejs簡陋); 注釋了自動創建分支+提交動作;可根據需求自行使用:

    //build.js文件
    var exec = require('child_process').exec // 異步子進程
    var fs = require('fs')
    
    var packageJSON = require('./package.json')
    /** package.json文件的version參數 */
    var version = packageJSON.version
    /** 命令行的所有參數 */
    var options = process.argv
    /** 命令行的type參數 */
    var type = null
    /** 新的version參數 */
    var newVersion = null
    
    //判斷命令行是否存在type參數或version參數進行邏輯處理
    for (let i = 0; i < options.length; i++) {
      if (options[i].indexOf('type') > -1) {
        //存在type參數
        type = options[i].split('=')[1]
      } else if (options[i].indexOf('version') > -1) {
        //存在version參數
        newVersion = options[i].split('=')[1]
      } else {
        //code
      }
    }
    
    if (newVersion) {
      //存在設置version參數則改變原來的version
      version = newVersion
    } else if (type) {
      //不設置version則根據type來進行修改version
      version = handleType(version, type)
    } else {
      version = null
      console.log('-----------沒有改變version-----------')
    }
    
    //修改了version則寫入
    if (version) {
      packageJSON.version = version
      //同步寫入package.json文件
      fs.writeFileSync('package.json', JSON.stringify(packageJSON, null, 2))
      console.log('-----------更新package的version為:%s參數成功-----------', version)
      // handleGitAdd('./package.json')
      // pullRemote()
    }
    
    /**
     * 根據分支類型處理版本號version
     * @param {string} oldVersion 舊的版本號
     * @param {string} type 分支類型
     * @private
     */
    function handleType(oldVersion, type) {
      var oldVersionArr = oldVersion.split('.')
      //版本號第一位 如:1.2.3 則為 1
      var firstNum = +oldVersionArr[0]
      //版本號第二位 如:1.2.3 則為 2
      var secondNum = +oldVersionArr[1]
      //版本號第三位 如:1.2.3 則為 3
      var thirdNum = +oldVersionArr[2]
      switch (type) {
        case 'release':
          //release分支的處理邏輯
          ++secondNum
          thirdNum = 0
          break
    
        case 'hotfix':
          //hotfix分支的處理邏輯
          ++thirdNum
          break
    
        default:
          // 默認按照最小版本處理
          ++thirdNum
          break
      }
    
      return firstNum + '.' + secondNum + '.' + thirdNum
    }
    
    // /**
    //  * 將package.json推送到遠程新創建的分支
    //  */
    // function pullRemote() {
    //   var branch = type + '/' + version
    //   //創建新分支
    //   handleGitCreate(branch)
    // }
    
    // /**
    //  * 創建新分支
    //  * @param {string} branch 分支名
    //  */
    // function handleGitCreate(branch) {
    //   exec('git branch ' + branch, function (error, stdout, stderr) {
    //     console.log('-----------創建新分支:%s DONE-----------', branch)
    //     //切換分支
    //     handleGitCheckOut(branch)
    //   })
    // }
    
    // /**
    //  * 切換分支
    //  * @param {string} branch 分支名
    //  */
    // function handleGitCheckOut(branch) {
    //   exec('git checkout ' + branch, function (error, stdout, stderr) {
    //     console.log('-----------切換新分支:%s DONE-----------', branch)
    //     //添加修改文件
    //     handleGitAdd('./package.json')
    //   })
    // }
    
    /**
     * 添加修改文件
     * @param {string} filePath 文件路徑
     */
    function handleGitAdd(filePath) {
      exec('git add ' + filePath, function (error, stdout, stderr) {
        console.log('[添加修改文件輸出:%s]', stdout)
        //提交文件
        handleGitCommit('更新package.json文件')
      })
    }
    
    /**
     * 提交文件
     * @param {string} prompt commit文字備注
     */
    function handleGitCommit(prompt) {
      // var branch = type + '/' + version
      exec('git commit -m "' + prompt + '"', function (error, stdout, stderr) {
        console.log('[提交修改文件輸出:%s]', stdout)
        //推送分支
        handleGitPush()
      })
    }
    
    /**
     * 推送分支
     */
    function handleGitPush() {
      exec('git push ', function (error, stdout, stderr) {
        console.log('[推送至分支:%s輸出:%s]', stdout || error || stderr)
        console.log('-----------提交修改文件完成-----------')
      })
    }
    
    /**
     * 自動生成版本號腳本思路
     * 1.獲取傳進來的參數 √
     * 2.根據參數進行邏輯處理 √
     * 3.獲取package.json中的version參數 √
     * 4.修改version的值寫入package.json文件 √
     * 5.git提交package.json文件 √
     */
    

    使用:

    • node build.js --type=hotfix 只修改最小版本
    • node build.js --type=release 修改功能版本
    • node build.js --type=release --version=0.0.8 修改為指定版本

    2.3 支付寶小程序機器人部署代碼配置

    打包配置修改:

    // config/index.js
    // 引入package.json內的版本號
    import packageData from '../package.json'
    const CIPluginOpt = {
      // 微信小程序
      weapp: {
        appid: 'appid',
       // 在開放平臺下載的密鑰文件;放到根目錄的路徑;見下圖
        privateKeyPath: 'private.appid.key'
      },
      // 支付寶小程序
      alipay: {
        appId: '支付寶小程序appid',
        toolId: '使用工具生成(見2.3.1),
        privateKeyPath: '私鑰使用工具生成(見2.3.1)'
      },
      // 版本號(如果是微信小程序就固定002;可以不用更新體驗版二維碼圖片;其他直接讀package.json的版本號)
      version: process.argv.includes('weapp') ? '0.0.2' : packageData.version,
      // 版本發布描述
      desc: '版本描述'
    // ....其他代碼
    const config = {
      // 其他代碼
      plugins:[[[email protected]/plugin-mini-ci', CIPluginOpt], [email protected]/plugin-html', 'taro-plugin-pinia'],
      }
    }

    2.3.1 生成配置需要的 toolId

    安裝工具:

    npm install alipay-dev -g

    工具初始化配置:

    (1)運行 alipaydev key create -w?生成密鑰。
    工具初始化配置

    (2)運行?alipaydev key upload?自動打開瀏覽器配置頁或直接前往 工具密鑰設置 頁面,配置工具公鑰(第一步中生成的 公鑰)以及設置 IP 白名單(可選),設置完成后系統會為您分配一個工具 ID(toolId)。

    配置工具公鑰

    2.4 配置npm打包+上傳命令

    "build:alipay:upload": "taro build --type alipay --upload",

    沒有修改版本號的結果:

    沒有修改版本號的結果

    修改大于上次體驗版的結果:

    修改大于上次體驗版的結果

    結語

    以上就是關于Taro 自動部署微信+支付寶小程序(附帶動態修改支付寶體驗版版本號),屬于實戰教程吧,個人覺得不錯,轉載學習,原文鏈接點擊這里。

    「點點贊賞,手留余香」

    0

    給作者打賞,鼓勵TA抓緊創作!

    微信微信 支付寶支付寶

    還沒有人贊賞,快來當第一個贊賞的人吧!

    聲明:
    1. 本站所有文章教程及資源素材均來源于網絡與用戶分享或為本站原創,僅限用于學習和研究。
    2. 如果內容損害你的權益請聯系客服QQ:1642748312給予處理。
    碼云筆記 » Taro 自動部署微信+支付寶小程序方法

    發表回復

    IT互聯網行業相關廣告投放 更專業 更精準

    立即查看 聯系我們
    亚洲 自拍 另类小说综合图区