微信開發工具是咱們開發微信小程序的重要工具,提供了預覽、上傳代碼的功能,可是裏面的上傳代碼在協做過程當中是很痛苦的,同時只能有一個預覽版,這個預覽版仍是跟某個開發者綁定的。想象下,5個開發者,裏面可能要麻煩1我的專職負責發佈。node
除此以外,小程序的發佈嚴重依賴於開發者以及Ta的電腦,一旦有緊急狀況可能就面臨無人可發的問題。git
在咱們的團隊中就遇到這樣那樣的問題,咱們都知道jenkins
用來作自動化構建,在不少項目中都會用它,因此最終開發了mimi-deploy腳本插件來配合jenkins
使用。github
固然mini-deploy
不只限於此,也能夠在任何node.js
的環境中執行並和您的程序配套使用,想象力有多大,效率就有多大。shell
原本以在jenkins
中使用的角度來介紹mini-deploy
的使用,讓咱們開始吧。express
要求以下:npm
windows
或Mac
系統的電腦jenkins
運行在該電腦假設咱們已經運行jenkins
,點擊"新建任務"開始填寫任務信息,輸入任務名稱並選擇"構建一個自由風格的軟件項目"。小程序
若是須要建立多個任務,能夠最後的"複製"功能。windows
"源碼管理"中配置項目代碼,以Git
爲例,須要配置兩個參數:微信小程序
$branch
,指定爲自定義構建參數在"General"中勾選"參數化構建過程",而後點擊"添加參數",在候選列表中選擇Git Parameter
,配置如下兩項:sass
Name
: 可訪問到的變量名稱,如配置爲branch後能夠經過$branch拿到值Parameter Type
:選擇Branch,也能夠根據狀況配置其餘選項這樣在前面"源碼管理"中配置的$branch
就能夠訪問到倉庫的全部分支。
另外還須要添加兩個文本參數:upload_version
和upload_desc
(用於發佈小程序時的版本號和描述)。
以及一個選項參數:build_type
(指定打包小程序的目標環境)。候選數據一行一條記錄輸入便可。
在"構建"中點擊"增長構建步驟"按鈕,在候選列表中選擇"執行 shell"。
這一步是最關鍵之處,咱們會調用mini-deploy
來發布小程序,先貼出來我在用的shell
腳本:
#!/bin/bash
echo -------------------------------------------------------
echo 代碼分支: ${GIT_BRANCH}
echo -------------------------------------------------------
# 準備工做
# 加速包安裝以及node-sass
# 由於使用的是taro,因此會有node-sass
yarn config set registry https://registry.npm.taobao.org
yarn config set sass_binary_site https://npm.taobao.org/mirrors/node-sass
# 安裝依賴
yarn install
# 刪除dist並執行打包
if [ "$build_type" == "dev" ]
then
rm -rf dist && yarn run build
else
rm -rf dist && yarn run $build_type
fi
if [ "$build_type" == "prod" ] || [ "$build_type" == "build" ]
then
mini-deploy --mode=upload --ver=$upload_version --desc="$upload_desc" --login.format=image --login.qr='login.png' --no-resume
let "result |= $?"
if [ "$result" == "0" ]
then
# 發送通知到釘釘羣
yarn run notify
fi
else
rm -rf ./preview.png
rm -rf ./login.png
mini-deploy --mode=preview --login.format=image --login.qr='login.png' --no-resume
let "result |= $?"
if [ "$result" == "2" ]
then
echo "need login"
fi
fi
複製代碼
使用mini-deploy
時有兩種方式:開發預覽和上傳代碼,這裏須要講解下里面參數的用處。
用戶掃碼登陸微信開發工具後,過了一段時間可能被登陸失效,這個時候再調用上傳和預覽是無效的,咱們要再次掃碼登陸。在mini-deploy
中須要登陸時會自動從新獲取登陸二維碼,login.format
和login.qr
就是指定二維碼的存儲方式和文件名,目前包含terminal
(命令行輸出), base64
, image
三類。
由於jenkins
中沒法實時獲取執行結果,咱們須要配置no-resume
阻止mini=deploy
自從續傳任務,獲取到登陸二維碼後直接完成任務。
另外,咱們配置二維碼的格式爲image
,而且輸出到項目工做區的login.png
中,接下來再配合其餘配置咱們就能夠在jenkins
中看到登陸二維碼。
# 上傳代碼
mini-deploy --mode=upload --ver=$upload_version --desc="$upload_desc" --login.format=image --login.qr='login.png' --no-resume
# 預覽
mini-deploy --mode=preview --login.format=image --login.qr='login.png' --no-resume
複製代碼
在"構建後操做"中點擊"增長構建後操做步驟",選擇Set build description
:
\[mini-deploy\] (.*)
\1
這裏配置是爲了把提醒信息顯示出來,這樣才能告知用戶須要登陸,以及顯示開發碼、上傳的成功信息。
// 日誌中包含這樣一條記錄
[mini-deploy] 進入Build詳情掃開發碼進入小程序' // 匹配成功後,`\1`就表明如下信息 進入Build詳情掃開發碼進入小程序 複製代碼
大功告成,最終咱們的運行結果以下:
本文同步發表於做者博客: 微信小程序和Jenkins不得不說的二三事