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
即可完成本地打包后成功上傳到體驗版。
至此微信小程序本地打包自動部署到體驗版已經完成![撒花🎉]
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 自動部署微信+支付寶小程序(附帶動態修改支付寶體驗版版本號),屬于實戰教程吧,個人覺得不錯,轉載學習,原文鏈接點擊這里。
1. 本站所有文章教程及資源素材均來源于網絡與用戶分享或為本站原創,僅限用于學習和研究。
2. 如果內容損害你的權益請聯系客服QQ:1642748312給予處理。
碼云筆記 » Taro 自動部署微信+支付寶小程序方法