jenkins+gitlab实现iOS自动打包的坎坷之路(本文包含CI\CD过程中的一些坑点以及一些理解及建议)

本文须知:本文成功案例是配置jekins所在服务器配置打包环境,并非在jenkins中配置打包环境。关于为何不采用在jenkins中配置打包环境将会在文中具体讲解。最后因为是基于jekins所在服务器配置的打包环境,按照本文所诉,实现ios自动打包将更易成功。

一.背景(重生之开局准备)

1.既然是ios项目实现自动打包,那么就必须对ios原来的打包方式及过程要有大概的了解,不同的ios项目其打包方式以及打包的一些参数都可能不相同(具体的可向开发人员询问清楚)。

以本人为例的话:2、4、5点是重点

1).找iOS开发人员要证书和描述文件(打包需要这些。至于证书和描述文件是啥你可以有个大概的了解就行,比如证书的作用就是验证身份、应用程序签名等)

2).简单了解一下钥匙串(知道钥匙串是啥,作用,以及在钥匙串中如何导入导出证书)

3)iOS开发人员使用的开发工具是啥。我的是Xcode。

4)找ios开发人员打包一个ipa的包给你,里面的ExportOptions.plist将对你有大用。(如果条件允许的话问问他们是否有使用过命令或者脚本打包过,如果能要到将减少你的工作量。努力做个资源咖)

5)找iOS开发人员观摩一下他们打包的过程,有些选项不同也会导致你的命令或脚本不同。

例如:For Me

如果勾选了对应的编译命令和导出ipa命令就应为(这只是命令,还要有正确配置好证书和描述文件,后面会阐述)

如果没有勾选的话 

至于其他涉及到的选项只要你找开发人员要到ExportOptions.plist文件就不用单独去设置了而是像上面一样通过-exportOptionsPlist一样直接设置好了。

二.基本软件安装 

软件安装网上有大量教程这里不再赘述。

1.gitlab    

2.jenkins

3.Xcode(你需要xcode打包看看是否能打包,然后使用命令打包,然后使用脚本,最后才是jenkins打包,这样才能更容易定位问题,从最简单的开始,一步步来)

4.本地git安装

三.jekins实现ios自动打包的两种方式

1.插件安装

你需要安装的插件主要有:git、 gitlab、Xcode integration、keychains and Provisioning ,这里就不详细举例了,上述列出的必不可少。 

方式二:问题分析下载keychains and Provisioning后,无法上传login.keychains-db文件,重命名为login.keychains后仍然无法上传,方式一就诞生了,即采用命令的方式授权访问login.keychains钥匙串。(方式二具体实现待补充)

 方式一:在jekins所在服务器上配置ios的打包环境(推荐:方式二可能在新版jekins中存在钥匙串login.keychains无法上传的问题)

1.双击你从开发人员那里拿到的证书,然后证书就会被添加到钥匙串里。如果出现证书不受信任,可查看

iOS推送证书显示“此证书不受信任”_苹果手机邮箱证书显示不信任-CSDN博客

2.把描述文件添加到正确位置。

2.1 首先需要对描述文件重命名为  描述文件的UUID.mobileprovisiion

对于如何获取UUID可以参考

Xcode中描述文件的真实目录及查看描述文件的UUID_ios13.6 描述文件安装后存储路径-CSDN博客

2.2  将重命名后的文件拷贝到  /Users/用户名称/Library/MobileDevice/Provisioning Profiles

3.使用命令检查能否打包成功

建议:先使用Xcode打包一遍看看是否能否打包,然后再使用命令打包

双击xcodeproj文件就能使用xcode打开项目。可能你的项目根目录下是xcworkspace的类型文件,也没有关系

执行下面命令,你需要cd 到项目根目录

#ios编译前清理工程
xcodebuild clean -project iFoxESOP.xcodeproj \  #根目录下的xcodeproj文件
                 -scheme iFoxESOP \    
                 -configuration Release

#如果你的根目录是 xcworkspace类型文件  也没关系 -project 变为  -workspace
xcodebuild clean -workspace iFoxESOP.xcworkspace \  #根目录下的xcworkspace文件
                 -scheme iFoxESOP \    
                 -configuration Release

执行编译和导出ipa文件命令,具体如下图。(下图是根目录是xcodeproj文件的情况的时候的命令,如果是xcworkspace类型文件的话,把-project 变为 -workspace就好)

下面两张图开头已在开头详细说明了 

4.如果命令可以打包成功了就可以配置Jenkins了。

1.新建任务以及从gitlab拉取到工作空间

具体可以参考我的另外一篇文章,在这里面有提及到如何实现,以及拉取代码的坑

jenkins+gitlab实现Android自动打包填坑之旅-CSDN博客

2.点击配置

3.在build shell->选择执行shell

4.esop.sh

5.最后就可以点击立即构建了(自动打包就完成了)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/352584.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java后端开发:学籍系统核心逻辑

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

SQL语句创建一个简单的银行数据库

目录 一、银行业务E-R图 二、数据库模型图 转换关系模型后: 三、创建数据库 3.1 创建银行业务数据库 四、创建表 4.1 创建客户信息表 4.2 创建银行卡信息表 4.3 创建交易信息表 4.4 创建存款类型表 结果如下: ​编辑 五、插入适量数据 5.1…

【Python】字符串

🚩 WRITE IN FRONT 🚩 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评…

android开发者模式@adb无线调试

文章目录 adb调试功能介绍有线调试无线调试 配置无线adb调试手机端开发者选项配置电脑端配置步骤初次使用进行配对链接设备小结 检查链接是否成功 技巧快速打开无线调试 refs adb调试 功能介绍 ADB(Android Debug Bridge)是一种强大的命令行工具&#…

Linux初始相关配置

前言 在学完了Linux的相关基础命令后,在正式使用Linux系统之前,我觉得配置一些东西是很有意义的。 文章目录 前言1.权限配置,普通用户无法sudo提权2.vim配置3.vim其他操作4.动静态库5.gcc/g6.程序翻译的过程7.make/makefile8.cmake/CMakeLis…

docker拉取镜像时指定其OS及CPU指令集类型

前言 之前在香橙派5上安装的时候碰到过一次指定镜像的OS及cpu指令集类型的问题,但是当时没有记录,现在用到 了又想不起来,干脆就自己记录一下。预防后面忘掉。docker报错截图 上次时在arm的cpu中运行x86镜像,这次时在x86中运行arm…

仰暮计划|“星星之火可以燎原,平凡人的一生同样值得称赞

传递助老之情,践行为老初心。为学习和发扬助老为老精神,我参与了康乐忆享实践队开展的以“仰暮计划”为主题的实践活动,在实践过程中了解老人的人生经历,传播尊老爱老思想。我与老人谭爷爷在谈论家常时,他拿出年轻时的…

Blender教程-物体的移动、旋转与缩放-04

一、新建一个立方体 ShiftA新建一个立方体用来演示。 二、物体的移动 xyz轴移动 点击下图图左侧的移动选项后,选中要移动的物体,会出现三个箭头的方向,这分别代表沿着x、y、z轴移动。xyz平面移动 这个小正方体代表沿着某一个面移动&#…

基于JAVA的陕西非物质文化遗产网站 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 设计目标2.2 研究内容2.3 研究方法与过程2.3.1 系统设计2.3.2 查阅文献2.3.3 网站分析2.3.4 网站设计2.3.5 网站实现2.3.6 系统测试与效果分析 三、系统展示四、核心代码4.1 查询民间文学4.2 查询传统音乐4.3 增改传统舞…

程序员的平均结婚年龄

关于程序员的平均结婚年龄,根据之前的信息: 一项对全球10000名在职程序员的调查数据显示,程序员第一次结婚的平均年龄是39.43周岁。而在中国的部分地区,如北京等地,程序员群体中普遍反映的结婚年龄是在30岁左右。 程序…

hive面试题

0. 思维导图 1. 简述Hive♥♥ 我理解的,hive就是一款构建数据仓库的工具,它可以就结构化的数据映射为一张表,并且可以通过SQL语句进行查询分析。本质上是将SQL转换为MapReduce或者spark来进行计算,数据是存储在hdfs上,…

带延迟的随机逼近方案(Stochastic approximation schemes):在网络和机器学习中的应用

1. 并行队列系统中的动态定价Dynamic pricing 1.1 系统的表述 一个含有并行队列的动态定价系统,该系统中对于每个队列有一个入口收费(entry charge) ,且系统运行的目标是保持队列长度接近于某个理想的配置。 这里是这个系统的几个关键假设:…

ASUS华硕无畏Pro15笔记本电脑(M6500QB,M6500QH)工厂模式原厂OEM预装Windows11.22H2系统 含Recovery恢复

原装出厂Windows11系统适用于华硕无畏15笔记本电脑型号:M6500QB和M6500QH 链接:https://pan.baidu.com/s/1AVGLN6-ILIRogOMj48Mk1w?pwdmi7d 提取码:mi7d 带有ASUS RECOVERY恢复功能、自带所有驱动、出厂主题专用壁纸、系统属性联机支持…

keil使用教程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据 总结 前言 例如:随着人工智能的不断发展,机器学习这门技术也越来越重…

Apipost数据库连接使用

Apipost提供了数据库连接功能,在接口调试时可以使用数据库获取入参或进行断言校验。目前的Apipost支持:Mysql、SQL Sever、Oracle、Clickhouse、达梦数据库、PostgreSQL、Redis、MongoDB 8种数据库的连接操作 新建数据库连接: 在「项目设置…

face_recognition和图像处理中left、top、right、bottom解释

face_recognition.face_locations 介绍 加载图像文件后直接调用face_recognition.face_locations(image),能定位所有图像中识别出的人脸位置信息,返回值是列表形式,列表中每一行是一张人脸的位置信息,包括[top, right, bottom, l…

[Python] 如何在Windows下安装图形可视化工具graphviz

什么是graphviz? Graphviz是一款开源的图形可视化工具,用于生成各种结构化数据的图形表示。它支持多种图形排列算法,可以将复杂的数据关系用图形的方式直观地展示出来。Graphviz广泛应用于软件工程、数据可视化、计算机网络以及其他领域的可视化分析中…

Java二分查找-图文

一、二分查找概念 二分查找也叫折半查找,是在一组有序(升序/降序)的数据中查找一个元素,它是一种效率较高的查找方。 二、二分查找原理 1.二分查找的数组必须是有序数值型数组。 2.将想要查找的目标元素与查找范围内的中间元素进行比较,如果…

python在线聊天室(带聊天保存)

python Socket在线聊天室(带聊天保存) 需求功能 1.聊天信息保存功能(服务端会把信息保存到一个txt里面) 2.使用pyqt5框架作为一个可视化界面 3.具备一个服务端和多个客户端的功能 4.具备离线加入黑名单(离线踢出) 5.具备在线加入黑名单(在线加入黑名单被踢出) 6.具备群聊功能…

任正非最新讲话:没有退路就是胜利之路!

内容来源:本文来自心声社区 组织管理 9月4日,华为心声社区发布了华为创始人任正非在华为高端技术人才使用工作组对标会上的讲话。 任正非表示,先有专才,才有全才,要实现跨界交流、融合创新,让领袖自然成长…