出處:
https://mp.weixin.qq.com/s?__biz=MzUxOTg4NDAxMg==&mid=2247483863&idx=1&sn=7c22a42169b0eb7f061e14b3b1a21c28
01初期 小程式測試上線流程及問題
初期流程依賴於手工操作,一不留神就會出現紕漏:
1、 效率低 小程式提測時將程式碼包給測試,測試各自開啟開發者工具、配置引數執行,此過程中約10分鐘已被浪費掉
2、 易出錯 人為改環境變數+上傳程式碼包,上線完後手動合master到開發分支,出現過漏改及漏合分支的情況,也是此契機使我們反思需要做一套機器自動化機制
3、 流程複雜 測試同學需熟悉開發者工具、及程式碼中引數配置過程,手動執行
02好大夫小程式自動化部署方案
好大夫自動化部署方案實現開發測試視覺化操作,關鍵流程程式自動執行,複雜流程實現一鍵操作:
1、 視覺化操作 開發測試同學只需在運維平臺透過互動式的操作,即可完成整個部署過程,有效的提高了工作效率並降低了學習成本
2、 自動化配置 上傳小程式只在運維平臺上進行,機器自動調整線上引數並上傳(避免人為因素出錯),釋出完成後自動合併程式碼到master分支
03使用效果
3.1 釋出測試版
3.2 釋出體驗版
04技術方案
目前微信開發者工具只有 windows 版本以及 mac 版本,公司內用4臺MAC MINI作為小程式打包機,每臺機器各自運行同樣node服務,開發者工具開啟服務埠(設定-安全-服務埠)後支援http及命令列呼叫,公司使用的是命令列模式。執行修改引數、生成預覽碼、上傳小程式等。
4.1 生成測試預覽碼
//更改ENV為線上let cmdENV = `sed -i "" s#"const ENV = [^;]*"#"const ENV = '${args.ENV}'"# config.js`;//更改小程式appidlet testAppid = args.minipAppid || wxMinipPrdParams.appid;cmdResult += `sed -i "" s#'"appid[^,]*"'#'"appid": "${testAppid}"'# project.config.json && `;// 更改小程式版本號cmdResult += `sed -i "" s#"const APP_VER[^;]*"#"const APP_VER = '${args.VER}'"# config.js && `;//上傳小程式let upoutPath = `${CODE_PATH}${wxMinip}/upout${opsCode}.txt`;let upResult = await cmd(`sh ${CLI_PATH} -u ${version}@${sourcePath} --upload-desc '${desc}' --upload-info-output ${upoutPath}`);
4.3 解決機器定期退出微信開發者的問題
if(preview.appedLogs.indexOf(`需要重新登入`) > -1){ preview.appedLogs+= '\n已連環call通知相關大神重登,可更換測試機或稍候重打'; resErr(ctx, preview.appedLogs); notify_login(qroutPath);}const machineName = require("os").hostname();function notify_login(qroutPath) { let cmd = `sh ${CLI_PATH} -l --login-qr-output base64@${qroutPath}`; cp.exec(cmd, function (err, stdout, stderr) { }); setTimeout(() => { //呼叫企業微信api傳送訊息,@某人 sendTextToUser(USER_LIST[machineName]); sendImg(fsObj.readFile(qroutPath), qroutPath); }, 10000);}
4.4 解決生成小程式碼介面超時
1、優先透過指定servicewechat.com的dns解決
3、其他域名最後走內網dns地址
目前第一步已解決,未出現超時問題
resolv-file=/usr/local/etc/resolv.dnsmasq.confstrict-orderserver=/servicewechat.com/114.114.114.114listen-address=127.0.0.1listen-address=`內網ip`no-hostsaddn-hosts=/usr/local/etc/dnsmasq.hostsconf-dir=/usr/local/etc/dnsmasq.d
05
未來規劃
5.1 加快打包速度
5.2 無需手動選擇打包機器
目前測試同學需要在4臺機器中手 動選擇,後期固定為一臺做分發機,根據其appId最近打包過的機器、打包機器是否忙碌,是否已退出登入進行自動分配,使使用者體驗更流暢,同時考慮使用新出的miniprogram-ci 來進行預覽上傳。
06結尾
同時目前該方案在好大夫已執行近1年,也在不停迭代最佳化,實現了小程式的部署發版流程易用無誤的目標,同時內部也不斷有新的便捷工具出現~
【作者簡介】
崔桂祥:好大夫前端架構師,專注混合開發、自動化部署流程等前端基礎建設,目前任醫藥事業部前端技術負責人。
出處:
https://mp.weixin.qq.com/s?__biz=MzUxOTg4NDAxMg==&mid=2247483863&idx=1&sn=7c22a42169b0eb7f061e14b3b1a21c28