微信小程序和Jenkins不得不說的二三事

微信開發工具是咱們開發微信小程序的重要工具,提供了預覽、上傳代碼的功能,可是裏面的上傳代碼在協做過程當中是很痛苦的,同時只能有一個預覽版,這個預覽版仍是跟某個開發者綁定的。想象下,5個開發者,裏面可能要麻煩1我的專職負責發佈。node

除此以外,小程序的發佈嚴重依賴於開發者以及Ta的電腦,一旦有緊急狀況可能就面臨無人可發的問題。git

在咱們的團隊中就遇到這樣那樣的問題,咱們都知道jenkins用來作自動化構建,在不少項目中都會用它,因此最終開發了mimi-deploy腳本插件來配合jenkins使用。github

固然mini-deploy不只限於此,也能夠在任何node.js的環境中執行並和您的程序配套使用,想象力有多大,效率就有多大。shell

原本以在jenkins中使用的角度來介紹mini-deploy的使用,讓咱們開始吧。express

1. 準備要求

要求以下:npm

  • 運行在windowsMac系統的電腦
  • jenkins運行在該電腦
  • 微信開發工具安裝在該電腦
  • 一個微信號

2. 如何配置

2.1 建立任務

假設咱們已經運行jenkins,點擊"新建任務"開始填寫任務信息,輸入任務名稱並選擇"構建一個自由風格的軟件項目"。小程序

若是須要建立多個任務,能夠最後的"複製"功能。windows

2.2 配置任務

2.2.1 源碼管理

"源碼管理"中配置項目代碼,以Git爲例,須要配置兩個參數:微信小程序

  • Repositories 倉庫地址和認證方式
  • Branches to build 分支,咱們填入$branch,指定爲自定義構建參數

2.2.2 參數化構建過程

在"General"中勾選"參數化構建過程",而後點擊"添加參數",在候選列表中選擇Git Parameter,配置如下兩項:sass

  • Name: 可訪問到的變量名稱,如配置爲branch後能夠經過$branch拿到值
  • Parameter Type:選擇Branch,也能夠根據狀況配置其餘選項

這樣在前面"源碼管理"中配置的$branch就能夠訪問到倉庫的全部分支。

另外還須要添加兩個文本參數:upload_versionupload_desc(用於發佈小程序時的版本號和描述)。

以及一個選項參數:build_type(指定打包小程序的目標環境)。候選數據一行一條記錄輸入便可。

2.2.3 添加構建執行Shell

在"構建"中點擊"增長構建步驟"按鈕,在候選列表中選擇"執行 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.formatlogin.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
複製代碼

2.2.4 二維碼結果展現

在"構建後操做"中點擊"增長構建後操做步驟",選擇Set build description

  • Regular expression : \[mini-deploy\] (.*)
  • Description : \1

這裏配置是爲了把提醒信息顯示出來,這樣才能告知用戶須要登陸,以及顯示開發碼、上傳的成功信息。

// 日誌中包含這樣一條記錄
[mini-deploy] 進入Build詳情掃開發碼進入小程序' // 匹配成功後,`\1`就表明如下信息 進入Build詳情掃開發碼進入小程序 複製代碼

3. 運行結果

大功告成,最終咱們的運行結果以下:

  • 開發預覽版能夠再構建歷史掃描二維碼進入
  • 須要登陸時就顯示登陸二維碼
  • 上傳代碼成功則只提示信息

本文同步發表於做者博客: 微信小程序和Jenkins不得不說的二三事

相關文章
相關標籤/搜索