热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

win10下搭建Jenkins+微信开发者工具

背景微信小程序的测试发布在没有CICD等相关工具的情况下,存在着如下的问题:小程序开发助手中,同一个开发者只能显示一个开发版本测试同事找开

背景

微信小程序的测试发布在没有 CI/CD 等相关工具的情况下,存在着如下的问题:

  • 小程序开发助手中,同一个开发者只能显示一个开发版本
  • 测试同事找开发要二维码,效率较低
  • 本地生成的二维码会出现携带本地代码、未及时拉取分支其他改动等问题

为了避免如上问题的发生,采用微信小程序集成 Jenkins 的方案。
但是网上所有文档都是基于MacOS部署的,但是实际都是一样的东西。唯一不一样的就是在win10环境中使用批处理文件,还需要安装一些特定的软件:
win10下搭建Jenkins+微信开发者工具

wget,node,gitbash(可以不安装),微信web开发者工具,Jenkins

基础

在介绍实现方案之前,先来回顾一下常规的微信小程序发布流程。
win10下搭建Jenkins+微信开发者工具

从上面的流程图可以看出,微信小程序预览、上传都是需要在微信开发者工具中进行的,接下来了解一下微信开发者工具提供的上传方式。

微信开发者工具

除了图形化界面,微信开发者工具还提供了命令行与 HTTP 服务两种接口供外部调用,来进行登录、预览、上传等操作。

命令行调用

命令行工具所在位置:

macOS: <安装路径>/Contents/Resources/app.nw/bin/cli
Windows: <安装路径>/cli.bat

以 macOS 操作系统示例&#xff1a;

1、打开开发者工具&#xff1a;

/Applications/wechatwebdevtools.app/Contents/Resources/app.nw/bin/cli -o

其中&#xff0c;/Applications/wechatwebdevtools.app/为安装路径。
win10下搭建Jenkins&#43;微信开发者工具
2、登录&#xff1a;

/Applications/wechatwebdevtools.app/Contents/Resources/app.nw/bin/cli -l

输入上面的命令行后&#xff0c;终端中打印出登录二维码&#xff0c;使用微信扫码登录。在微信端完成操作之后&#xff0c;会输出 login success&#xff0c;如下图所示&#xff1a;
win10下搭建Jenkins&#43;微信开发者工具

HTTP 服务

HTTP 服务在工具启动后自动开启&#xff0c;每次开启 host 固定为 127.0.0.1&#xff0c;端口号并不固定。端口号在用户目录下记录&#xff0c;位置如下&#xff1a;

macOS : ~/Library/Application Support/微信web开发者工具/Default/.ide
Windows : ~/AppData/Local/微信web开发者工具/User Data/Default/.ide

以 macOS 操作系统示例&#xff1a;

首先需要运行开发者工具&#xff0c;可以利用上面介绍的命令行方法打开微信开发者工具。

/Applications/wechatwebdevtools.app/Contents/Resources/app.nw/bin/cli -o
port&#61;$(cat "/Users/zyy/Library/Application Support/微信web开发者工具/Default/.ide")
echo "微信开发者工具运行在${port}端口"

这样就可以拿到微信开发者工具运行的端口号了&#xff0c;其中&#xff0c;/Users/zyy/ 为用户目录。

1、打开开发者工具&#xff1a;

# 打开工具
http://127.0.0.1:端口号/open
# 打开/刷新项目
http://127.0.0.1:端口号/open?projectpath&#61;项目全路径

2、登录&#xff1a;

# 登录&#xff0c;返回图片格式的二维码
http://127.0.0.1:端口号/login
# 登录&#xff0c;取 base64 格式二维码
http://127.0.0.1:端口号/login?format&#61;base64
# 登录&#xff0c;取 base64 格式二维码&#xff0c;并写入 /Users/username/logincode.txt
http://127.0.0.1:端口号/login?format&#61;base64&qroutput&#61;%2FUsers%2Fusername%2Flogincode.txt

3、预览&#xff1a;

# 预览路径为 /Users/username/demo 的项目&#xff0c;返回图片格式的二维码
http://127.0.0.1:端口号/preview?projectpath&#61;%2FUsers%2Fusername%2Fdemo# 预览路径为 /Users/username/demo 的项目&#xff0c;返回 base64 格式的二维码
http://127.0.0.1:端口号/preview?projectpath&#61;%2FUsers%2Fusername%2Fdemo&format&#61;base64# 预览路径为 /Users/username/demo 的项目&#xff0c;返回 base64 格式的二维码&#xff0c;并写入 /Users/username/logincode.txt
http://127.0.0.1:端口号/preview?projectpath&#61;%2FUsers%2Fusername%2Fdemo&format&#61;base64&qroutput&#61;%2FUsers%2Fusername%2Flogincode.txt# 预览路径为 /Users/username/demo 的项目&#xff0c;返回图片格式的二维码&#xff0c;并将预览信息输出至 /Users/username/info.json
http://127.0.0.1:端口号/preview?projectpath&#61;%2FUsers%2Fusername%2Fdemo&infooutput&#61;%2Users%2username%2info.json

win10下搭建Jenkins&#43;微信开发者工具

开始部署准备阶段

1.安装wget&#xff0c;node&#xff0c;Jenkins&#xff0c;gitbash&#xff0c;微信开发者工具

node&#xff0c;Jenkins去官网下载msi文件即可安装便利
wget下载后解压到D盘根路径下即可
&#xff08;所有需要使用到的东西最好不要放到当前用户触碰不到的目录&#xff0c;否则你会哭的很惨&#xff09;

2.安装gitbash并且上传公钥到代码库
#
#
win10下搭建Jenkins&#43;微信开发者工具

3.配置Jenkins服务权限和更改环境变量&#xff08;最重要的一步&#xff09;

打开CMD->输入services.msc
#
#
win10下搭建Jenkins&#43;微信开发者工具
找到Jenkins 右键->属性 ->登陆
#
#

win10下搭建Jenkins&#43;微信开发者工具
#
重启生效
#

win10下搭建Jenkins&#43;微信开发者工具
#
#
在Jenkins系统管理——全局安全配置页面&#xff0c;将标记格式器在下拉列表中修改为Safe HTML然后保存&#xff0c;这个修改是为了在build历史记录中能够直接显示二维码图片
win10下搭建Jenkins&#43;微信开发者工具

JAVA_OPTS
-Dsun.jnu.encoding&#61;UTF-8 -Dfile.encoding&#61;UTF-8LANG
zh.CH.UTF-8

设置环境变量后重启生效&#xff08;也可以不配直接写绝对路径&#xff09;

Jenkins插件安装

安装下列Jenkins插件后重启&#xff1a;

GIT plugin
Git Parameter:获取所有分支名&#xff0c;作为参数列表
SSH Credentials Plugin
Git Changelog&#xff1a;获取Git提交log
build-name-setter
description setter plugin&#xff1a;在build历史记录描述信息中增加二维码显示
PostBuildScript Plugin&#xff1a;编译完成后执行脚本
NodeJS Plugin:小程序构建需要&#xff0c;在更改提交状态时使用node技术
AnsiColor
description setter &#xff1a;添加set build description获取图片

win10下搭建Jenkins&#43;微信开发者工具

win10下搭建Jenkins&#43;微信开发者工具

Jenkins项目创建

win10下搭建Jenkins&#43;微信开发者工具
#
创建一个自由风格的项目
#
win10下搭建Jenkins&#43;微信开发者工具
#
添加执行批处理构建&#xff0c;并且把如下带粘贴进去
#
win10下搭建Jenkins&#43;微信开发者工具

#
win10下搭建Jenkins&#43;微信开发者工具

win10下搭建Jenkins&#43;微信开发者工具

#
二维码${BUILD_ID};;;;;;;;;;;
#

chcp 65001 ::更改字符集
set dir&#61;D:\ingo\Jenkins\workspace\DEV-sk_platform_consumers_furniture-wechat
set project&#61;D:\ingo\Jenkins\workspace\DEV-sk_platform_consumers_furniture-wechat\dist
::del /F /S /Q %dir%
::rd /S /Q %dir%
git clone git&#64;gitlab.xxxx.com:cdp/sk_platform_consumers_furniture.git %dir%
git pull git&#64;gitlab.xxxx.com:cdp_furn/sk_platform_consumers_furniture.git
"C:\Program Files\WinRAR\WinRAR.exe" x -ibck -y -o&#43; node_modules.rar %dir%
CALL C:\Users\xxxx\AppData\Roaming\npm\taro build --type weapp
CALL "D:\weixin\cli.bat" -o
::for /f "usebackq" %%a in (&#96;type "C:\Windows\System32\config\systemprofile\AppData\Local\微信web开发者工具\User Data\Default\.ide"&#96;) do &#64;set port&#61;%%a
::set /p port&#61; <"C:\Windows\System32\config\systemprofile\AppData\Local\微信web开发者工具\User Data\Default\.ide"
FOR /F "usebackq delims&#61;&#61;" %%i IN (&#96;type "C:\Users\xxxx\AppData\Local\微信web开发者工具\User Data\Default\.ide"&#96;) do (echo 当前使用端口:%%iset port&#61;%%i
)
echo %port%
echo %BUILD_ID%
echo %path%D:\wget\wget.exe -O %BUILD_ID%.png http://127.0.0.1:%port%/preview?projectpath&#61;%project%

win10下搭建Jenkins&#43;微信开发者工具

优化beta2.0


chcp 65001set dir&#61;D:\ingo\Jenkins\workspace\DEV-sk_xxx_app-wechat\dist
set srcdir&#61;C:\Users\xxx\Desktop\tmp ::做清空使用&#xff0c;必须为空目录
set project&#61;C:\Users\xxx\Desktop\upload-sk_xxx_app\dist-sk_xxx_app%BUILD_ID% ::将要上传的目录放到非workspace的目录外&#xff0c;如果放到workspace里回提示程序有占用&#xff0c;影响代码更新。
set upload&#61;C:\Users\xxx\Desktop\upload-sk_xxx_app
mkdir %project%echo %environment%
echo %branch%
echo %describe%
echo %version%CALL robocopy %srcdir% %WORKSPACE% /purge
echo "test success"
git clone -b %branch% git&#64;gitlab.xxx.com:cdp_furn/sk_xxx_app.git %WORKSPACE%
git pull git&#64;gitlab.xxx.com:cdp_furn/sk_xxx_app.git"C:\Program Files\WinRAR\WinRAR.exe" x -ibck -y -o&#43; node_modules.rar %WORKSPACE%
CALL node project-handle.js %environment%
CALL npm install node-sass&#64;4.11.0
CALL npm rebuild node-sass&#64;4.11.0
CALL C:\Users\xxxx\AppData\Roaming\npm\taro build --type weappCALL robocopy %dir% %project% /S
CALL "D:\weixin\cli.bat" -o
FOR /F "usebackq delims&#61;&#61;" %%i IN (&#96;type "C:\Users\xxx\AppData\Local\微信web开发者工具\User Data\Default\.ide"&#96;) do (echo 当前使用端口:%%iset port&#61;%%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&#61;%project%if %environment% &#61;&#61; pro (
CALL "D:\weixin\cli.bat" -u %version%&#64;%project% --upload-desc &#39;%describe%&#39;
echo "生产环境预览并上传微信小程序平台"
) ELSE (
echo "测试环境仅预览并不上传微信小程序平台"
)

win10下搭建Jenkins&#43;微信开发者工具

win10下搭建Jenkins&#43;微信开发者工具

win10下搭建Jenkins&#43;微信开发者工具

优化beta3.0

beta3.0调整了变量使用&#xff0c;实现了可移植&#xff0c;复制的通用性。


chcp 65001set dir&#61;%WORKSPACE%\dist
set srcdir&#61;C:\Users\xxxx\Desktop\tmp
set project&#61;C:\Users\xxxx\Desktop\upload\%environment%-dist-%JOB_NAME%-%BUILD_ID%
set upload&#61;C:\Users\xxxx\Desktop\upload
mkdir %project%echo %JOB_NAME% > C:\Users\xxxx\Desktop\upload\name.txt
echo "%JOB_NAME%" | D:\Git-bash\usr\bin\awk.exe -F &#39;-&#39; &#39;{print $2}&#39;
&#64;echo off
for /f "tokens&#61;2 delims&#61;-" %%l in (C:\Users\xxxx\Desktop\upload\name.txt) do (
echo %%l
set projectname&#61;%%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% git&#64;gitlab.dddd.com:cdp_furn/%projectname%.git %WORKSPACE%
git pull git&#64;gitlab.xxxx.com:cdp_furn/%projectname%.git"C:\Program Files\WinRAR\WinRAR.exe" x -ibck -y -o&#43; node_modules.rar %WORKSPACE%
CALL node project-handle.js %environment%
CALL npm install node-sass&#64;4.11.0
CALL npm rebuild node-sass&#64;4.11.0
CALL sbtt git %environment%
CALL C:\Users\xxxx\AppData\Roaming\npm\taro build --type weappCALL robocopy %dir% %project% /S
CALL "D:\weixin\cli.bat" -o
FOR /F "usebackq delims&#61;&#61;" %%i IN (&#96;type "C:\Users\xxxx\AppData\Local\微信web开发者工具\User Data\Default\.ide"&#96;) do (echo 当前使用端口:%%iset port&#61;%%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&#61;%project%if %uploadif% &#61;&#61; prod (
CALL "D:\weixin\cli.bat" -u %version%&#64;%project% --upload-desc &#39;%describe%&#39;
echo "生产环境预览并上传微信小程序平台"
) ELSE (
echo "测试环境仅预览并不上传微信小程序平台"
)

#
构建项目时记得先登陆微信开发者工具&#xff0c;如果没登陆报错如下&#xff1a;
#
win10下搭建Jenkins&#43;微信开发者工具
#
win10下搭建Jenkins&#43;微信开发者工具
#
添加成员
#
注意代码里的appid是否有问题
#
#

win10下搭建Jenkins&#43;微信开发者工具
#
#win10下搭建Jenkins&#43;微信开发者工具

#
win10下搭建Jenkins&#43;微信开发者工具

#
楼镇图

转:https://blog.51cto.com/13386520/2355545



推荐阅读
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • ZABBIX 3.0 配置监控NGINX性能【OK】
    1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ... [详细]
  • 图片添加二维码水印教程
    本博客介绍一下用jdkawt实现图片加文字水印和图片水印的方法一、图片文字水印原来图片加上文字水印后图片二、图片加图片水印原来图片:水印图片:添加水印后的图片: ... [详细]
  • systemd-nspawn可以创建最轻量级的容器(ns的意思就是namespace),本文的实验平台是Ubuntu16.04,x86_64机器。本文的目的是:在Ubuntu中用syst ... [详细]
  • 开发笔记:图像识别基于主成分分析算法实现人脸二维码识别
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了图像识别基于主成分分析算法实现人脸二维码识别相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
我跟孔子一个姓
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有