微信小プログラム-win 10の下でJenkins+微信開発者ツールを構築する
背景
注:(以下の画像は私が他のサイトの自分の投稿から持ってきたもので、絶対オリジナルで、ああ51 cto私は0.0を封印されました)
WeChatウィジェットのテストリリースは、CI/CDなどの関連ツールがない場合、次のような問題があります.
このような問題を回避するために,微信ウィジェット集積Jenkinsのスキームを採用した.しかし、ネット上のすべてのドキュメントはMacOSに基づいて配置されていますが、実際には同じものです.唯一違うのはwin 10環境でバッチファイルを使用することであり、特定のソフトウェアをインストールする必要があります.
wget,node,gitbash(インストールしなくてもいい)、微信web開発者ツール、Jenkins
きそ
![画像アップロード中...]
実装案を紹介する前に、従来の微信ウィジェットのリリースプロセスを振り返ってみましょう.
上のフローチャートから分かるように、微信ウィジェットのプレビュー、アップロードはすべて微信開発者ツールで行う必要があります.次に、微信開発者ツールが提供するアップロード方法について説明します.
WeChat開発ツール
グラフィックス化インタフェースに加えて、微信開発者ツールは、ログイン、プレビュー、アップロードなどの操作を行うために、コマンドラインとHTTPサービスの2つのインタフェースを外部呼び出しに提供しています.
コマンドライン呼び出し
コマンドラインツールの場所:
macOS:/Contents/Resources/app.nw/bin/cli Windows:/cli.bat
MacOSオペレーティングシステムの例:
1、開発者ツールを開く:
/Applications/wechatwebdevtools.app/Contents/Resources/app.nw/bin/cli -o
ここで、
/Applications/wechatwebdevtools.app/
はインストールパスである.2、ログイン:
/Applications/wechatwebdevtools.app/Contents/Resources/app.nw/bin/cli -l
上のコマンドラインを入力すると、端末から登録QRコードが印刷され、マイクロスキャンコードで登録されます.ウィーチャット端末の操作が完了すると、
login success
が出力されます.下図のように.HTTPサービス
HTTPサービスはツール起動後に自動的にオープンし、毎回hostが127.0.0.1に固定され、ポート番号は固定されていない.ポート番号はユーザー・ディレクトリの下に記録されます.場所は次のとおりです.
macOS:~/Library/APplication Support/微信web開発者ツール/default/.ide Windows:~/AppData/LOcal/微信web開発者ツール/User Data/default/.ide
MacOSオペレーティングシステムの例:
まず開発者ツールを実行する必要があり,上述したコマンドラインメソッドを用いて微信開発者ツールを開くことができる.
/Applications/wechatwebdevtools.app/Contents/Resources/app.nw/bin/cli -o
port=$(cat "/Users/zyy/Library/Application Support/ web /Default/.ide")
echo " ${port} "
これにより、
/Users/zyy/
がユーザーディレクトリである微信開発者ツールが実行するポート番号が入手できます.1、開発者ツールを開く:
#
http://127.0.0.1: /open
# /
http://127.0.0.1: /open?projectpath=
2、ログイン:
# ,
http://127.0.0.1: /login
# , base64
http://127.0.0.1: /login?format=base64
# , base64 , /Users/username/logincode.txt
http://127.0.0.1: /login?format=base64&qroutput=%2FUsers%2Fusername%2Flogincode.txt
3、プレビュー:
# /Users/username/demo ,
http://127.0.0.1: /preview?projectpath=%2FUsers%2Fusername%2Fdemo
# /Users/username/demo , base64
http://127.0.0.1: /preview?projectpath=%2FUsers%2Fusername%2Fdemo&format=base64
# /Users/username/demo , base64 , /Users/username/logincode.txt
http://127.0.0.1: /preview?projectpath=%2FUsers%2Fusername%2Fdemo&format=base64&qroutput=%2FUsers%2Fusername%2Flogincode.txt
# /Users/username/demo , , /Users/username/info.json
http://127.0.0.1: /preview?projectpath=%2FUsers%2Fusername%2Fdemo&infooutput=%2Users%2username%2info.json
導入準備フェーズの開始
1.wget,node,Jenkins,gitbash,微信開発者ツールのインストール
Node,Jenkins去官网下载msiファイル可以安装便利wget下载后解凍到D盤根経路下可以(使用する必要があるものはすべて現在のユーザーが触れられないディレクトリに置かないほうがいい.そうしないと泣くのは惨めだ)
2.gitbashをインストールし、公開鍵をコードライブラリにアップロードする
3.Jenkinsサービス権限の構成と環境変数の変更(最も重要なステップ)
CMD->入力servicesを開く.msc
Jenkinsの右ボタンを見つける->プロパティ->ログイン
再起動有効
Jenkinsシステム管理のグローバルセキュリティ設定ページでは、タグフォーマットをドロップダウンリストからSafe HTMLに変更して保存します.この変更は、build履歴にQRコードピクチャを直接表示できるようにするためです.
JAVA_OPTS
-Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8
LANG
zh.CH.UTF-8
環境変数を設定すると再起動が有効になります(絶対パスを直接書く必要はありません)
Jenkinsプラグインのインストール
次のJenkinsプラグインをインストールして再起動します.
GIT plugin
Git Parameter: ,
SSH Credentials Plugin
Git Changelog: Git log
build-name-setter
description setter plugin: build
PostBuildScript Plugin:
NodeJS Plugin: , node
AnsiColor
description setter : set build description
Jenkinsプロジェクトの作成
フリースタイルのアイテムを作成
実行バッチ構築を追加し、次のテープを貼り付けます.
![QRコード${BUILD_ID}](http://192.168.120.191:8080/job/DEV-sk_platform_consumers_furniture-wechat/ws/${BUILD_ID}.png)[QRコード${BUILD_ID}](http://192.168.120.191:8080/job/DEV-sk_platform_consumers_furniture-wechat/ws/${BUILD_ID}.png);;;;;;;;;;;
chcp 65001 ::
set dir=D:\ingo\Jenkins\workspace\DEV-sk_platform_consumers_furniture-wechat
set project=D:\ingo\Jenkins\workspace\DEV-sk_platform_consumers_furniture-wechat\dist
::del /F /S /Q %dir%
::rd /S /Q %dir%
git clone [email protected]:cdp/sk_platform_consumers_furniture.git %dir%
git pull [email protected]:cdp_furn/sk_platform_consumers_furniture.git
"C:\Program Files\WinRAR\WinRAR.exe" x -ibck -y -o+ node_modules.rar %dir%
CALL C:\Users\xxxx\AppData\Roaming
pm\taro build --type weapp
CALL "D:\weixin\cli.bat" -o
::for /f "usebackq" %%a in (`type "C:\Windows\System32\config\systemprofile\AppData\Local\ web \User Data\Default\.ide"`) do @set port=%%a
::set /p port= < "C:\Windows\System32\config\systemprofile\AppData\Local\ web \User Data\Default\.ide"
FOR /F "usebackq delims==" %%i IN (`type "C:\Users\xxxx\AppData\Local\ web \User Data\Default\.ide"`) do (
echo :%%i
set port=%%i
)
echo %port%
echo %BUILD_ID%
echo %path%
D:\wget\wget.exe -O %BUILD_ID%.png http://127.0.0.1:%port%/preview?projectpath=%project%
最適化beta 2.0
chcp 65001
set dir=%WORKSPACE%\dist
set srcdir=C:\Users\skong\Desktop\tmp
set project=C:\Users\skong\Desktop\upload\%environment%-dist-%JOB_NAME%-%BUILD_ID%
set upload=C:\Users\skong\Desktop\upload
mkdir %project%
echo %JOB_NAME% > C:\Users\skong\Desktop\upload
ame.txt
echo "%JOB_NAME%" | D:\Git-bash\usr\bin\awk.exe -F '-' '{print $2}'
@echo off
for /f "tokens=2 delims=-" %%l in (C:\Users\skong\Desktop\upload
ame.txt) do (
echo %%l
set projectname=%%l
)
echo "projectname##%projectname%##"
echo "environment%environment%"
echo "branch##%branch%"
echo "describe##%describe%"
echo "version##%version%"
CALL robocopy %srcdir% %WORKSPACE% /purge
echo "test success"
git clone -b %branch% [email protected]:cdp_furn/%projectname%.git %WORKSPACE%
git pull [email protected]:cdp_furn/%projectname%.git
"C:\Program Files\WinRAR\WinRAR.exe" x -ibck -y -o+ node_modules.rar %WORKSPACE%
CALL node project-handle.js %environment%
CALL npm install [email protected]
CALL npm rebuild [email protected]
CALL sbtt git %environment%
CALL C:\Users\skong\AppData\Roaming
pm\taro build --type weapp
CALL robocopy %dir% %project% /S
CALL "D:\weixin\cli.bat" -o
FOR /F "usebackq delims==" %%i IN (`type "C:\Users\skong\AppData\Local\ web \User Data\Default\.ide"`) do (
echo :%%i
set port=%%i
)
echo %port%
echo %BUILD_ID%
echo %path%
CALL D:\wget\wget.exe -O %BUILD_ID%.png http://127.0.0.1:%port%/preview?projectpath=%project%
if %uploadif% == prod (
CALL "D:\weixin\cli.bat" -u %version%@%project% --upload-desc '%describe%'
echo " "
) ELSE (
echo " "
)
ウィーチャットウィジェットは2 Mサイズのファイルのアップロードを制限する
微信開発者ツールに問題がないと判断し、コードコンパイルに問題がないと判断した場合、「400のエラー」が発生します。
13:17:50 Initializing...
13:17:50 idePortFile: C:\Users\skong\AppData\Local\ web \User Data\Default\.ide
13:17:50 IDE server has started, listening on http://127.0.0.1:25085
13:17:50 initialization finished
13:17:50 open IDE success
13:17:50 :25085
13:17:50 25085
13:17:50 14
13:17:50 D:\ingo\Jenkins\tools\jenkins.plugins.nodejs.tools.NodeJSInstallation
ode11.10;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\dotnet\;C:\Program Files\TortoiseSVN\bin;C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin;C:\Program Files (x86)\Inno Setup 5;D:\Git-bash\cmd;C:\skongsoft
ode-v8.9.0-win-x64\;D:\wget;C:\Users\skong\AppData\Local\Microsoft\WindowsApps;C:\Users\skong\AppData\Roaming
pm
13:17:50 --2019-08-19 13:17:50-- http://127.0.0.1:25085/preview?projectpath=C:%5CUsers%5Cskong%5CDesktop%5Cupload%5Csit-dist-UAT-sk_platform_consumers_furniture-wechat-14
13:17:50 Connecting to 127.0.0.1:25085... connected.
13:17:50 HTTP request sent, awaiting response... 400 Bad Request
13:17:57 2019-08-19 13:17:57 ERROR 400: Bad Request.
13:17:57
13:17:57 " "
13:17:57 Build step ' Windows ' marked build as failure
13:17:57 [description-setter] Description set:
13:17:57 Finished: FAILURE
プロジェクトを構築するときは、まず微信開発者ツールにログインしてください.ログインしていない場合は、次のようにエラーが発生します.
メンバーの追加
コードのappidに問題があるかどうか注意してください.
Windows Linuxコマンドを使用して構築スクリプトを作成する
まず、微信開発者ツールを使用するには、macまたはwindowsを使用する必要がありますが、dosコマンドはすべての運営者が熟練して使用するわけではありませんので、windowsでLinuxコマンドパッケージをダウンロードすることができます.
上記図echo%path%にLinux for winコマンドのexeファイルを入れるとLinuxコマンドが使用できます
chcp 65001
set dir=%WORKSPACE%\dist
set srcdir=C:\Users\skong\Desktop\tmp
set project=C:\Users\skong\Desktop\upload\%environment%-dist-%JOB_NAME%-%BUILD_ID%
set upload=C:\Users\skong\Desktop\upload
mkdir %project%
echo %JOB_NAME% > C:\Users\skong\Desktop\upload
ame.txt
echo "%JOB_NAME%" | awk -F '-' '{print $2}'
@echo off
for /f "tokens=2 delims=-" %%l in (C:\Users\skong\Desktop\upload
ame.txt) do (
echo %%l
set projectname=%%l
)
echo "projectname##%projectname%##"
echo "environment%environment%"
echo "branch##%branch%"
echo "describe##%describe%"
echo "version##%version%"
git clone -b %branch% [email protected]:cdp_furn/%projectname%.git %WORKSPACE%
git pull [email protected]:cdp_furn/%projectname%.git
"C:\Program Files\WinRAR\WinRAR.exe" x -ibck -y -o+ node_modules.rar %WORKSPACE%
CALL node project-handle.js %environment%
CALL npm install [email protected]
CALL npm rebuild [email protected]
CALL sbtt git %environment%
CALL C:\Users\skong\AppData\Roaming
pm\taro build --type weapp
CALL cp -r %dir% %project%
CALL "D:\weixin\cli.bat" -o
FOR /F "usebackq delims==" %%i IN (`cat "C:\Users\skong\AppData\Local\ web \User Data\Default\.ide"`) do (
echo :%%i
set port=%%i
)
echo %port%
echo %BUILD_ID%
echo %path%
CALL wget -O %BUILD_ID%.png http://127.0.0.1:%port%/preview?projectpath=%project%
if %uploadif% == prod (
CALL "D:\weixin\cli.bat" -u %version%@%project% --upload-desc '%describe%'
echo " "
) ELSE (
echo " "
)