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

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 cleanxcodebuild 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.mzph.cn/news/655142.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【开源】SpringBoot框架开发天然气工程业务管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、使用角色3.1 施工人员3.2 管理员 四、数据库设计4.1 用户表4.2 分公司表4.3 角色表4.4 数据字典表4.5 工程项目表4.6 使用材料表4.7 使用材料领用表4.8 整体E-R图 五、系统展示六、核心代码6.1 查询工程项目6.2 工程物资…

[Grafana]ES数据源Alert告警发送

简单的记录一下使用es作为数据源,如何在发送告警是带上相关字段 目录 前言 一、邮件配置 二、配置 1.Query 2.Alerts 总结 前言 ES作为数据源,算是Grafana中比较常见的,Alerts告警是我近期刚接触,有一个需求是当表空间大于…

flutter实现:使用三方组件syncfusion_flutter_datagrid

Syncfusion Flutter DataGrid 是一个用于 Flutter 的数据网格组件,它提供了丰富的功能来显示和编辑数据。这个组件提供了灵活的配置选项,使得开发者能够根据需要定制数据的显示和编辑方式。 项目中有两个需求,一是在列表中要使用可变高度&am…

OpenCV 5 - 图像混合处理addWeighted()

图像混合 1 理论-线性混合操作 其中α的取值范围为0~1之间,表示图像的所占的权重 2 混合处理函数addWeighted() 3 代码示例 Mat src1, src2, dst;src1 imread("./1.png");src2 imread("./2.png");if (!src1.data && src2.empty()) //判断图片是…

云安全中的常见云漏洞和威胁,有哪些防范措施

随着企业在数字化时代的脚步中愈发倚重云托管服务,云安全问题成为不容忽视的焦点。云服务的便捷性为企业提供了强大的存储和计算能力,然而,与之伴随而来的攻击风险也日益显著。最新的研究数据揭示,云安全漏洞可能导致的数据泄露&a…

ETCD监控方法以及核心指标

文章目录 1. 监控指标采集1.1 监控指标采集1.2 配置promethues采集和大盘 2. 核心告警指标3. 参考文章 探讨etcd的监控数据采集方式以及需要关注的核心指标,便于日常生产进行监控和巡检。 1. 监控指标采集 etcd默认通过/metrics指标暴露相关指标,因此不…

opencv#37 形态学操作——腐蚀

图像腐蚀目的 去除图像中微小物体 分离较近的两个物体 我们对图像中所有米粒进行二值化处理,之后进行连通域分割以求去整个图像中共用多少米粒,处理结果在可以发现,在上图中有一小块区域上有个小点(非米粒)&#xff…

Kotlin快速入门系列7

Kotlin的数据类、密封类、枚举类 数据类 与Java等语言不同,kotlin创建只包含数据的类时,需要在类名前声明关键字:data。 data class KotlinBean (val brand : String) 在kotlin中,编译器会自动的从主构造函数中根据所有声明的…

RabbitMQ-如何保证消息不丢失

RabbitMQ常用于 异步发送,mysql,redis,es之间的数据同步 ,分布式事务,削峰填谷等..... 在微服务中,rabbitmq是我们经常用到的消息中间件。它能够异步的在各个业务之中进行消息的接受和发送,那么…

档案数字化转型面临问题

档案数字化转型面临以下问题: 1. 技术问题:档案数字化需要借助先进的技术手段和设备,包括扫描仪、存储设备和数据管理软件等。这些技术的成本高、操作复杂,需要专业的人员进行操作和维护。 2. 安全问题:档案数字化后的…

【Java程序设计】【C00176】基于SSM的图书管理系统(论文+PPT)

基于SSM的图书管理系统(论文PPT) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于ssm的图书管理系统 本系统分为前台系统、后台管理员以及后台学员3个功能模块。 前台系统:当游客打开系统的网址后,首先看到的就…

gmsh 01 对多个面,及体进行剖分

#include <set> #include <cmath> #include <gmsh.h>#include <iostream>int main(int argc, char** argv) {gmsh::initialize(argc, argv); // 初始化gmsh::model::add("t2"); // 创建 t2 modeldouble lc 0.05; gmsh::model::geo::add…

二手交易|校园二手交易小程序|基于微信小程序的闲置物品交易平台设计与实现(源码+数据库+文档)

校园二手交易小程序目录 目录 基于微信小程序的闲置物品交易平台设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户信息管理 2、商品信息管理 3、公告信息管理 4、论坛信息管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕…

斜率优化dp模型整理

300. 任务安排1&#xff08;300. 任务安排1 - AcWing题库&#xff09; 思路&#xff1a;很明显这些任务是按顺序排好的&#xff0c;我们能执行的操作只是对它们进行分批&#xff0c;我们可以发现每一批之前的开始时间s&#xff0c;影响的不仅仅是当前这一批的结束时间&#xff…

8.6跳跃游戏②(LC45-M)

算法&#xff1a; 与上一题一样&#xff0c;还是看最大覆盖范围 要从覆盖范围出发&#xff0c;不管怎么跳&#xff0c;覆盖范围内一定是可以跳到的&#xff0c;以最小的步数增加覆盖范围&#xff0c;覆盖范围一旦覆盖了终点&#xff0c;得到的就是最少步数&#xff01; 这里…

C++大学教程(第九版)7.30 打印array对象 7.31 逆序打印字符串(递归练习题)

文章目录 题目代码运行截图题目代码运行截图 题目 (打印array对象)编写一个递归函数printArray它以一个array对象一个开始下标和一个结束下标作为实参&#xff0c;不返回任何值并打印这个array对象。当开始下标和结束下标相等时&#xff0c;这个函数应该停止处理并返回。 代码…

跨镜网络解决方案:SD-WAN专线,实现企业全球互联

在全球化的背景下&#xff0c;越来越多的企业需要在海外社媒平台推广、研发访问海外平台、实现海外分部和国内互联互通等需求。然而&#xff0c;面对不同地区之间网络连接不稳定、高延迟、高成本等问题&#xff0c;如何实现企业的全球互联成为了一个亟待解决的难题。 幸运的是&…

laravel学习笔记

这两天公司活不多&#xff0c;学习了一下laravel框架。经过几天的学习&#xff0c;也对它有一些大概的了解。现在我就把我所学的到在这儿做下笔记吧。 一、laravel集合 其实&#xff0c;这里所说的集合&#xff0c;跟前端es6中的集合概念还是有那一点的不太一样。前端es6的集合…

C++ 数论相关题目:卡特兰数应用、快速幂求组合数。满足条件的01序列

给定 n 个 0 和 n 个 1 &#xff0c;它们将按照某种顺序排成长度为 2n 的序列&#xff0c;求它们能排列成的所有序列中&#xff0c;能够满足任意前缀序列中 0 的个数都不少于 1 的个数的序列有多少个。 输出的答案对 1097 取模。 输入格式 共一行&#xff0c;包含整数 n 。 …

Java 集合 02 综合练习+基本数据类型对应的包装类

练习1、 自己写的代码&#xff1a; import java.util.ArrayList; public class practice {public static void main(String[] args) {//定义一个集合ArrayList<String> list new ArrayList<>();list.add("aaa");list.add("bbb");list.add(…