MAC 下Jenkins 自动打包 IOS 应用注意点

jenkins  打包应用流程不是很复杂,却有很多的坑,需要细心处理


jenkins 一般两种:1. mac 上下载.pkg 文件直接安装

                              2. windows 上安装,通过http访问,要打包IOS 应用需要新建 macOS 节点,也可理解为分布式构建

                            

 jenkins 的安装及插件安装很简单网上资料很多就不赘述,主要分享一下配置中遇到的问题:

注意点: 1 . 插件下载:线上直接安装,安装不成功可选择离线安装(自己用的离线)

                  离线插件下载地址: http://updates.jenkins-ci.org/download/plugins/  下载对应插件上传成功即可自动安装插件

             Keychains and Code Signing Identities  对应的为   kpp-management-plugin/

             2. 上传证书之后,没有pp 文件的添加入口,此时需要在上传 证书的地方继续上传 对应工程的 pp 文件 (这里没注意,之前总感觉跟网上别人的不一样,我的没有 pp 入口,上传pp 文件之后pp 对应的内容会自动填充)

   

            3. ssh 的配置:

           






   添加完 ssh 之后如果能连接上 git (没有出现红色的错误信息)说明连接成功,此时可以构建拉取代码试一下。


  4.  代码拉取:如果文件比较大网速又慢,则会clone 工程文件失败(jenkins 先会将工程文件压缩在接收拉取文件),默认时间为10分钟,若10 分钟没有完成则会失败(自己项目比较大,进行到 80% 就失败,我开始以为是自己的 ssh 没配置好,jenkins 与 git 之间有问题,实际是项目较大,网速较慢)。另一说是: git 插件不稳定,卸载git 插件再安装低版本的git 插件版本(我没试过,我的原因是因为项目较大)。   此时可更改源码管理 --> add -- > 设置 clone time(单位 分钟),再重新构建


 5 .  构建脚本: 

                 # 工程名
APP_NAME="Anyo"


# 证书
CODE_SIGN_DISTRIBUTION="xxxxxxx
# info.plist路径 路径根据自己工程路径修改


project_infoplist_path="./${APP_NAME}/Info.plist"


#取版本号
bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "${project_infoplist_path}")


#取build值
bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "${project_infoplist_path}")
DATE="$(date +%Y%m%d)"

#输出路径  注意输出路径要在 jenkins 穿建文件夹中,自己手动创建的文件夹可能会导出包失败
IPANAME="Library/${APP_NAME}_V${bundleShortVersion}_${DATE}.ipa"

echo "=================   构建中  ================="

echo "=================clean================="
xcodebuild -target "${APP_NAME}"  -configuration 'Release' clean
echo "+++++++++++++++++build+++++++++++++++++"
# 设置 team
sed -i "" s/'DEVELOPMENT_TEAM = "team 名称.";'/'DEVELOPMENT_TEAM = "team 名称";'/g 项目名称.xcodeproj/project.pbxproj
# xcodebuild 命令开始构建包
xcodebuild -target "${APP_NAME}" -sdk iphoneos -configuration 'Release' CODE_SIGN_IDENTITY="${CODE_SIGN_DISTRIBUTION}" SYMROOT='$(PWD)'
echo "+++++++++++++++++  正在打包完成  +++++++++++++++++"
echo "+++++++++++++++++  开始编译 .app -- .ipa 文件 +++++++++++++++++"
xcrun -sdk iphoneos PackageApplication "./Release-iphoneos/${APP_NAME}.app" -o ~/"${IPANAME}"

echo "+++++++++++++++++  编译 .app -- .ipa 文件完成 +++++++++++++++++" 


注意:在打包命令中会出现一些问题: 


     

Check dependencies
xxxx has conflicting provisioning settings. xxxx is automatically signed, but code signing identity iPhone Distribution: 证书文件 has been manually specified. Set the code signing identity value to "iPhone Developer" in the build settings editor, or switch to manual signing in the project editor.


关于证书打包的几点问题:


1.在macOS 10.10 以后不支持 xcode 插件打包(网上资料)

2.xcode 8 之后证书管理有xcode 会自动帮我们管理证书,但用jenkins 打包会产生问题。解决方法: 去掉 

manual signing 选项,改为手动选择证书。

3.安装jenkins 后,mac 会自动创建jenkins 用户,jenkins 的操作都是在 jenkins 用户下完成的,而关于证书的操作需要访问钥匙串,jenkins 用户是没有这个权限,shell 中也没有地方是可以让用户输入本机密码的,所以:1   先要将 本机用户下的 配置文件 全部拷贝到 jenkins 用户下   /User/用户名/资源库/MobileDevice/Provisioning Profiles ---->  /User/Shared/Jenkins/Library/MobileDevice/Provisioning Profiles    没有 MobileDevice/Provisioning Profiles 文件夹自己手动创建

4.访问jenkins keychain 文件需要本机密码:  User interaction is not allowed.

   

Signing Identity: "iPhone Distribution: ** Co., Ltd."
Provisioning Profile: "**"
(**----**)

/usr/bin/codesign --force --sign ** --entitlements /Users/Shared/Jenkins/Home/workspace//build/**.build/Release-iphoneos/*.build/*..--timestamp=none /Users/Shared/Jenkins/Home/workspace/**/build/Release-iphoneos/**.app

/Users/Shared/Jenkins/Home/workspace/*/build/Release-iphoneos/**.app: User interaction is not allowed.

解决方法: 在 sehll 脚本中加入下面脚本    pwd  为本机用户密码 

        /usr/bin/security unlock-keychain -p pwd ~/Library/Keychains/login.keychain

      执行一次之后可将这行脚本删除  


6. 构建成功之后可在目标输出文件夹中找到打包好的 .ipa 文件。


7.   构建 .ipa 文件注意点: 证书选择:  1. adHoc 文件,要进行内测,除了 jenkins 中要选择对应证书之外,xcode 中的证书也要选择 adHoc 证书,否则导出的 .ipa 文件上传蒲公英等第三方内测平台的话会出现下载完无法安装的情况。


8.首次构建遇到了不少问题,jenkins 部署不难但需要细心


9. 构建完成后 脚本上传 第三方测试平台 及 上传 appStore 后续会持续更新


 


注: 修改jenkins 端口: jenkins 端口号默认8080 ,但这个端口被占用其它服务可能无法使用,修改步骤:

     1. 首先停止 jenkins 服务。普通用户下执行 停止服务:sudo launchctl unload -w /Library/LaunchDaemons/org.jenkins-ci.plist

   2.修改端口:sudo defaults write /Library/Preferences/org.jenkins-ci httpPort 7070   // 比如为 7070

   3.重启:sudo launchctl load -w /Library/LaunchDaemons/org.jenkins-ci.plist   到此,可以访问了:http://localhost:7070

     修改的前提是是要先 停止 服务












  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jenkins集成IOS自动打包可以使用Jenkins Pipeline来实现。下面是一些基本步骤: 1. 安装JenkinsiOS插件:确保您的Jenkins服务器已经安装并配置好Jenkins,并且已经安装了相关的iOS插件。 2. 创建Pipeline:在Jenkins中创建一个新的Pipeline,用于自动IOS打包过程。 3. 配置环境:在Pipeline中配置所需的构建环境,包括iOS开发环境、模拟器等。 4. 编写脚本:使用Jenkins Pipeline的Groovy语言编写脚本,实现IOS自动打包的过程。可以使用Xcode命令行工具来执行打包操作,例如使用`xcodebuild`命令。 以下是一个简单的示例脚本,用于自动IOS打包过程: ```groovy stage('Build') { steps { sh 'xcodebuild -project YourProject.xcodeproj -scheme YourScheme -configuration Release clean build' } } stage('Archive') { steps { archiveFile(file: 'YourApp.ipa', pattern: '**/*.ipa') { sh 'xcodebuild -exportArchive -archivePath build/Release-iphoneos/YourScheme.ipa -exportOptionsPlist export.plist -allowProvisioningUpdates' } } } ``` 这个脚本会在构建阶段使用`xcodebuild`命令清理并构建项目,并在归档阶段使用`xcodebuild`命令导出ipa文件。您可以根据需要修改脚本中的命令和参数,以适应您的项目配置。 5. 触发Pipeline:在Jenkins中配置相应的触发器,例如触发器时添加iOS项目目录作为输入源,然后在Jenkins Pipeline中自动执行打包操作。 以上是一些基本步骤,您可以根据您的实际需求进行调整和扩展。请注意自动打包过程可能需要一些额外的配置和步骤,具体取决于您的项目和开发环境。另外,为了确保自动打包过程的可靠性,您可能需要测试和验证脚本,以确保它在不同的环境中都能够正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值