微信小プログラム-win 10の下でJenkins+微信開発者ツールを構築する


背景


注:(以下の画像は私が他のサイトの自分の投稿から持ってきたもので、絶対オリジナルで、ああ51 cto私は0.0を封印されました)
WeChatウィジェットのテストリリースは、CI/CDなどの関連ツールがない場合、次のような問題があります.
  • ウィジェット開発アシスタントでは、同じ開発者が1つの開発バージョン
  • しか表示できません.
  • 同僚をテストしてQRコードを開発して、効率は低い
  • ローカルに生成されたQRコードは、ローカルコードを携帯し、ブランチをタイムリーに引き出していないなどの問題が発生する
  • .
    このような問題を回避するために,微信ウィジェット集積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 " " )