Jenkins-React Native for Windows-发布配置

本文档详细介绍了如何使用Jenkins在Windows环境下配置React Native应用的打包发布,包括环境配置、Jenkins项目设置、打包命令及可能出现的问题排查。主要步骤包括安装Jenkins、Visual Studio、设置PowerShell脚本进行打包、签名、上传至阿里云OSS等。在打包过程中,提到了签名错误的解决方案以及如何处理PowerShell执行yarn命令的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、打包环境前置工作

1、搭建Windows版的Jenkins

2、Jenkins安装PowerShell插件

3、node版本 v14.11.0 yarn版本 v1.22.10 npm版本 6.14.8

4、安装Visual Studio 2019编译工具,并选择如下图片勾选的安装包在这里插入图片描述

5、windows 10 SDK版本选择10.0.18362.0
此部分,在安装完成Visual Studio时,回弹出一个编辑的窗口。安装完重新执行exe也会提示。按如下图片操作
在这里插入图片描述
在这里插入图片描述

6、因为我们是传到阿里云的OSS上,需要安装下上传至OSS的工具。
参照:https://helpcdn.aliyun.com/document_detail/120075.html?spm=a2c4g.11186623.6.838.43a17a74BW0deN

二、Jenkins配置

1、新建一个Freestyle project项目
在这里插入图片描述

2、配置Git参数构造 --此处需要安装插件 Git Parameter
在这里插入图片描述

3、配置Git工程的AppName和GroupName
在这里插入图片描述

4、配置拉取git的信息
在这里插入图片描述

5、最后就是下面的PowerShell脚本了
在这里插入图片描述

三、开始打包命令

Jenkins配置拉取代码这块我就不讲了

echo "********初始化react-native-windows********"
npx react-native-windows-init --overwrite
 
 
echo "********生成打包文件********"
yarn install
yarn windows --release --logging
 
 
echo "将Assets 和 Bundle文件copy到需打包的目录中  --默认上面打包完之后没有这些文件"
xcopy C:\workspaces\retail-shop-client\windows\shopclient\Assets C:\workspaces\retail-shop-client\windows\Release\shopclient\Assets\ /e /i /y
xcopy C:\workspaces\retail-shop-client\windows\shopclient\Bundle C:\workspaces\retail-shop-client\windows\Release\shopclient\Bundle\ /e /i /y
 
echo "使用命令打包msix文件"
cd "C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64"
.\makeappx.exe pack /h SHA256 /d "C:\workspaces\retail-shop-client\windows\Release\shopclient" /p "C:\workspaces\retail-shop-client\windows\Release\shopClient.msix"
 
echo "创建签名  -- 不用每次都生成,除非CN=Administrator有变动(此内容在需要打包目录的AppxManifest.xml文件中也会有一个CN=,参照这个即可   --建议这个操作手动操作,不用写到脚本中因为后面的导出签名操作,我还没解决怎么获取到创建的签名值"
#New-SelfSignedCertificate -Type Custom -Subject "CN=Administrator" -KeyUsage DigitalSignature -FriendlyName "xiniu" -CertStoreLocation "Cert:\CurrentUser\My" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}")
 
 
echo "导出签名  -- 签名不变,也不需要重复操作   --建议手动操作"
#定义密码:
#$password = ConvertTo-SecureString -String xiniu -Force -AsPlainText
 
#导出签名文件    --建议手动操作:
#Export-PfxCertificate -cert "Cert:\CurrentUser\My\DC1CB1D548C8C339F7C1C16BCAFC4CBE7CE7FB5B" -FilePath C:\workspaces\retail-shop-client\windows\shopClient.pfx -Password $password
 
echo "对msix包进行签名  --将上面手动操作导出的签名文件pfx路径指定下即可"
#.\signtool.exe sign /fd SHA256 /a /f C:\workspaces\retail-shop-client\windows\shopClient.pfx /p xiniu C:\workspaces\retail-shop-client\windows\shopClient.msix
 
 
echo "将签名打包好的运行文件和证书上传至OSS --先安装OSS工具"
 
#下载网页的OSS buncket路径(根据实际需要调整)
echo "********下载网页的OSS buncket路径(根据实际需要调整)********"
SET oss_bucket_url="https://xn-static.oss-cn-hangzhou.aliyuncs.com"
 
 
#阿里云OSS的EndPoint,用于上传(根据实际需要调整)
echo "********阿里云OSS的EndPoint,用于上传********"
SET oss_end_point="https://oss-cn-hangzhou.aliyuncs.com"
 
#阿里云OSS的accessKey(根据实际需要调整)
echo "********阿里云OSS的accessKey(根据实际需要调整)********"
SET oss_access_key="根据自己的填写"
 
#阿里云OSS上传buncket的oss相对路径(根据实际需要调整)
echo "********阿里云OSS上传buncket的oss相对路径(根据实际需要调整)********"
SET oss_bucket_dir="oss://根据自己的填写"
 
#阿里云OSS的accessKeySecret(根据实际需要调整)
echo "阿里云OSS的accessKeySecret(根据实际需要调整)********"
SET oss_access_key_secret="根据自己的填写"
 
#Json文件在OSS buncket下的存储路径(根据实际需要调整)
echo "********文件在OSS buncket下的存储路径(根据实际需要调整)********"
SET upload_oss_folder=%AppName%
   
#用于OSS上传的本地安装的ossutil命令文件(在不同机器上需要调整)
echo "********用于OSS上传的本地安装的ossutil命令文件(在不同机器上需要调整)********"
SET oss_util_batch="C:\software\ossutil64\ossutil64.exe"
 
#SS URL
SET oss_upload_upload_dir=%oss_bucket_dir%%upload_oss_folder%
   
#appurl
SET app_update_file="C:\workspaces\retail-shop-client\windows\app"
 
   
 
#配置ossutile连接
echo "********配置ossutile连接********"
C:\software\ossutil64\ossutil64.exe config -e oss-cn-hangzhou.aliyuncs.com -i 根据自己的填写 -k 根据自己的填写
 
 
#上传OSS
echo "********上传********"
C:\software\ossutil64\ossutil64.exe cp C:\workspaces\retail-shop-client\windows\app  -rf oss://根据自己的填写/shop-client/
 
echo "********所有操作执行成功********"

四、搭建的一些问题排查

1、官网文档:https://docs.microsoft.com/zh-cn/windows/msix/package/manual-packaging-root

2、最后签名.\signtool.exe命令执行的时候提示,An unexpected internal error has occurred
官网文档解释:https://docs.microsoft.com/zh-cn/windows/msix/package/signing-known-issues
官方提供的排查文档:https://docs.microsoft.com/zh-cn/windows/msix/desktop/desktop-to-uwp-known-issues
最终的解决方法:
appxmanifest.xml文档中,Publisher="CN=xiniu"只填这一项
签名时,New-SelfSignedCertificate -Type Custom -Subject “CN=xiniu” -KeyUsage DigitalSignature -FriendlyName “xiniunet” -CertStoreLocation “Cert:\CurrentUser\My” -TextExtension @(“2.5.29.37={text}1.3.6.1.5.5.7.3.3”, “2.5.29.19={text}”)

3、解决PowerShell无法执行yarn命令 --应该要重启下
参照文档:https://blog.csdn.net/qq_45062261/article/details/100132489

4、虚拟机磁盘扩容 for windows --实际是因为这个打包很费空间给了50G不够依赖都有5G以上建议100G以上,所以后来扩容了
参照:https://www.diskgenius.cn/download.php

5、Jenkins默认工作目录更改 --这个问题是,实际当时手动执行打包命令提示找不到路径,因为默认安装windows版的Jenkins是有一个.jenkins的目录,可能无法识别,后来更改了目录到c:\workspaces中
参照:https://www.freesion.com/article/55011185461/

6、PowerShell报错,继续执行 --这点很重要,因为我们在执行yarn windows --release --logging的时候,第一次是会自动安装我们运行 的程序,第二次的时候会提示错误,因为其实我们jenkins打包不需安装的,所以需要跳过检测到的报错
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值