iOS 自动打包如何配置配置打包证书和profile provision文件【脚本方式配置】

news/2024/7/20 23:13:15 标签: ios

iOS 最新Jenkins自动化打包总结

本文主要内容:

1.Xcode和Jenkins的相关设置,以及环境切换
2.通过shell脚本将证书和描述文件拷贝到自动化打包的机器,并archive导出ipa包
3.上传到蒲公英
4.解决Swift不支持use_frameworks!的问题

开搞!

1.Xcode和Jenkins的相关设置,以及环境切换。开始之前需要先到处p12证书,将p12证书和描述文件拷贝进工程里,很重要

以下内容都是release版本的企业包,环境切换我选择了,通过shell脚本修改json文件,判断。如果你只需要在两个环境之间切换,可以通过release、debug包的方式切换。
先在Xcode添加一个json文件

img

image

img

image

生成ExportOptions.plist文件,这个包的主要功能是shell脚本打包导出ipa的时候,获取证书和描述文件的相关信息。这个文件可以手动创建,配置起来麻烦,这里选用从导出包的方式获取。先手动打一个企业包,并导出到桌面,然后拷贝到工程目录同级

img

image

在jenkins上配置环境变量的参数:
a.分支参数

img

image

b.环境参数,以实际情况为准,可以配置多个

img

image

配置git地址:

img

image

2.通过shell脚本将证书和描述文件拷贝到自动化打包的机器,并archive导出ipa包

选用shell脚本构建,可配置型较强。插件不是很好用!

img

image

本文重点,shell脚本!

这里主要完成了证书和描述文件的拷贝,打包等过程,内容非常重要,里面的相关配置,路径仔细核对!

#bin/bsah - l
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
#先更新pod
cd $WORKSPACE
/usr/local/bin/pod install --verbose --no-repo-update
#设置配置文件,environmentType即在上面配置的参数信息
cd $WORKSPACE
echo "{\"environmentType\":\"$environmentType\"}" > jenkinsCofig.json
#注意:参数请仔细核对,path不清楚可拖到终端查看,报错请仔细核对path
#工程名
ProjectName=""
#identifier
BundleIdentifier=""
#ExportOptions.plist路径
ExportOptionsPlistPath="${WORKSPACE}/ExportOptions.plist"
#打包服务器管理员名称
JenkinsServeName="admin"
#打包服务器管理员密码
JenkinsServePass="admin1234"
#在钥匙串里查看复制证书的名字如:iPhone Distribution:InvestmentManagement Co., Ltd.
SigningCertificateName=""
#工程中p12证书的名字,起个狗名字再引入工程
CertificateName="cer_dis"
#P12证书密码
CertificatePassword="666666"
#工程中P12证书的路径
CertificatePath="${WORKSPACE}/${ProjectName}/${CertificateName}.p12"
#描述文件的udid,前往~/Library/MobileDevice/Provisioning Profiles查看,拷贝进工程
ProfileUdid="01282b59-3a9c-4939-bd3c-fb673886043e"
#描述文件的全名
ProfileName="${ProfileUdid}.mobileprovision"
#描述文件在工程的目录,以实际目录为准
ProfilePath="${WORKSPACE}/${ProjectName}/${ProfileName}"
#build目录
BuildPath=${WORKSPACE}/build
#配置环境Release
Configuration="Release"
#删除历史bulid
if [ -d ${BuildPath} ];then
rm -rf ${BuildPath}
echo clean build_path success.
fi
#将证书拷贝到服务器的钥匙串
security unlock-keychain -p ${JenkinsServePass} /Users/${JenkinsServeName}/Library/Keychains/login.keychain
security list-keychains -s /Users/${JenkinsServeName}/Library/Keychains/login.keychain
security import ${CertificatePath} -k /Users/${JenkinsServeName}/Library/Keychains/login.keychain -P ${CertificatePassword} -T /usr/bin/codesign
security find-identity -p codesigning /Users/${JenkinsServeName}/Library/Keychains/login.keychain
#将描述文件copy到服务器的目录,~/Library/MobileDevice/Provisioning Profile
cp ${ProfilePath} "/Users/${JenkinsServeName}/Library/MobileDevice/Provisioning Profiles/${ProfileUdid}.mobileprovision"

#打包导出ipa
xcodebuild -workspace ${ProjectName}.xcworkspace -scheme ${ProjectName} -configuration ${Configuration} -archivePath ${BuildPath}/${ProjectName}-inhouse.xcarchive clean

xcodebuild archive -workspace ${ProjectName}.xcworkspace -scheme ${ProjectName} -configuration ${Configuration} -archivePath ${BuildPath}/${ProjectName}-inhouse.xcarchive CODE_SIGN_IDENTITY="${SigningCertificateName}" PROVISIONING_PROFILE="${ProfileName}" PRODUCT_BUNDLE_IDENTIFIER="${BundleIdentifier}"

xcodebuild -exportArchive -archivePath ${BuildPath}/${ProjectName}-inhouse.xcarchive -exportPath ${BuildPath} -exportOptionsPlist ${ExportOptionsPlistPath}

3.上传到蒲公英,很简单,不做说明

img

image.png

4.解决Swift不支持use_frameworks!的问题

参考:iOS Jenkins打包遇到的坑

其它相关参考资料:
iOS打包脚本思路
jenkins iOS打包


http://www.niftyadmin.cn/n/5354105.html

相关文章

将图片批量导入PPT

1.代码 这部分使用到了“python-pptx”这个库,首先设置储存图片的文件夹路径,输入新建PPT的名字,然后自动将文件夹下的JPG图片按编号顺序写入PPT文件,最后保存: import os import pptx from pptx.util import Inches …

【计算机网络】——TCP协议

📑前言 本文主要是【计算机网络】——传输层TCP协议的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 🌄每日一句…

解密人工智能与低代码开发:探索机器学习奥秘

随着人工智能(AI)技术的不断发展,低代码开发也成为一个热门话题。本文将探索人工智能与低代码开发之间的关系,揭示机器学习的奥秘,并展望未来发展的趋势。 人工智能正引领着技术革新的浪潮,而低代码开发作为…

龙芯+RT-Thread+LVGL实战笔记(32)——计算器运算处理

【写在前面】期末收尾工作结束,笔者正式开启了寒假生活。寒假期间当然会不遗余力的继续更新本系列教程,希望得到更多朋友的关注和订阅,同时也简要声明几点: 有些硬件模块笔者并没有,如LED点阵、压力传感模块、RFID模块等,因此这些模块的相关任务暂时无法给出经过验证的代…

leetcode hot100跳跃游戏Ⅱ

本题和上一题还是有不一样的地方,这个题中,我们需要记录我们跳跃的步数并尽可能的满足最小的跳跃步数到达终点。 那么我们还是采用覆盖范围的概念,但是我们需要两个,一个是在当前位置的覆盖范围,另一个是下一步的覆盖…

idea项目如何上传gitee

1.先创建仓库 2.从gitee上面clone下来 3.配置一下git 4.在idea里面安装Gitee插件(安装完插件重启一下) 5.将项目提交到远程仓库 git->add->✔ 完后点击↗ 在码云如何获取token? 注:没有解决,有时间在继续研究

推荐一款Linux、数据库、Redis、MongoDB统一管理平台!

官方演示 状态查看 ssh 终端 文件操作 数据库操作 sql 编辑器 在线增删改查数据 Redis 操作 Mongo 操作 系统管理 账号管理 角色管理 资源管理 一.安装 1.下载安装包 cd /opt wget https://gitee.com/dromara/mayfly-go/releases/download/v1.7.1/mayfly-go-linux-amd64.zi…

spring-bus消息总线的使用

文章目录 依赖bus应用接口用到的封装参数类 接收的应用监听器定义的事件类 使用bus定义bus远程调用A应用数据更新后通过bus数据同步给B应用 依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp…