企业DevOps之路:iOS 项目构建

简介: 本篇内容记录了鱼贯iOS 项目构建的基本操作。

1. 安装证书管理插件Keychains and Provisioning Profiles Management


Keychains and Provisioning Profiles Management 是管本地的keychain和iOS证书的管理插件


Manage Jenkins -> Manage Plugins


微信图片_20220503132030.png


安装完之后,需要重启一下 Tomcat 服务。否则插件不生效


2. 配置 Keychains and Provisioning Profiles Management


Manage Jenkins -> Uncategorized


微信图片_20220503132035.png


获取 login.keychain 文件


cd ~/Library/Keychains


微信图片_20220503132038.png


上传 keychain 文件,由于 macOS10.12 以及以后的系统里面没有 login.keychain 文件,只有 login.keychain-db文件,可以复制一份,然后把 -db 删除,也可以创建一个快捷方式名字叫做 login.keychain 即可。上传之后就会出现以下配置


微信图片_20220503132042.png


  • Password 一栏就填写当前 macOS 用户的登录密码
  • Code Signing Identity 填写相关证书的标识符


目前电脑上配置了一个调试证书和一个 Ad Hoc 发布证书,当然后面还需要一个 App Store 发布证书,这个操作流程都是一样的,后面自己处理就好。去到 Keychain Access -> login,找到你的 iPhone Developer 和 iPhone Distribution 证书,选择其中一个,然后复制标识符,填写到此位置,保存即可。


这个操作步骤,可以理解为 Jenkins 有权以你这台电脑(login.keychain 文件)来获取调试和发布 iOS 应用的证书(证书标识符)。


微信图片_20220503132047.png


然后拿到调试证书和 Ad Hoc 证书对应的 .mobileprovision 文件,建议去 Apple 开发者后台去下载,也可以去到 /Users/{username}/Library/MobileDevice/Provisioning Profiles 这个路径下去找;但是如果配置文件太多的话,很难分辨是哪个文件,而且这个地方的名称都是 UUID 值标记的。拿到对应的 .mobileprovision 文件,同样的位置点击上传,出现以下页面:


微信图片_20220503132050.png


会自动识别出 .mobileprovision 文件的 UUID 值。对于 Provisioning Profiles Directory Path,根据 macOS 当前登录的用户名的不同


/Users/{username}/Library/MobileDevice/Provisioning Profiles


这个操作步骤,可以理解为 Jenkins 可以读取位于

/Users/{username}/Library/MobileDevice/Provisioning Profiles 目录下的配置文件,同时知道应该读取那个对应的配置文件(识别 UUID 值)。保存好了之后,整个 iOS 工程项目相关的证书和配置文件都配置好了。


微信图片_20220503132054.png


3. 安装 xcode 构建插件 Xcode integration


Manage Jenkins -> Manage Plugins


微信图片_20220503132059.png


安装完之后,需要重启一下 Tomcat 服务。否则插件不生效


4. 构建ipk


  • 新建Item


微信图片_20220503132103.png


  • 配置代码仓库


微信图片_20220503132107.png


  • 添加 Xcode 构建


微信图片_20220503132112.png


  • 填写 Development Team ID


微信图片_20220503132115.png


如何获取Team ID,登录苹果后台 https://developer.apple.com


微信图片_20220503132119.png


  • 点击 Setting


微信图片_20220503132123.png


  • 勾选 Clean before build,意思就是在构造之前先进行环境清理工作


微信图片_20220503132127.png


  • 勾选 Generate Archive


微信图片_20220503132131.png


勾选后,Xcode Schema File 输入域会提示 When outputting archive or IPA, you need to specify a scheme。如果使用 workspace;而不是project此项必填。与target类似,填写需要构建的schema。


  • 勾选 Pack application, build and sign .ipa,表示需要生成ipa文件


微信图片_20220503132137.png


然后填写以下内容


微信图片_20220503132140.png


Export method:打包方式,包括development、ad-hoc、enterprise 和 app-store 四种方式


ipa filename pattern:ipa文件的命名规则,如果不填写默认规则是target-version-build,例如xxx-1.0.0-2.ipa。可以使用 ${VERSION} 、${BUILD_DATE} (yyyy.MM.dd)等系统内置变量值来组合最终的名称,也可以写一个固定的名称。注意不需要填写 .ipa 后缀,Jenkins会自动帮加上。


Output directory:建议不清楚的不要填写,它表示 ipa 输出目录,是一个相对路径,相对于CONFIGURATION_BUILD_DIR 这个默认的 Build 目录或者修改之后的 Build 目录。


5. Code signing & OS X keychain options 配置


  • 点击 Code signing setting...


微信图片_20220503132145.png


  • 选择 Read from Xcode Project 和勾选 Unlock Keychain


微信图片_20220503132149.png


勾选 Unlock Keychain


微信图片_20220503132152.png


Keychain path:填写 login.keychain 文件的路径。意思是找到 login.keychain(登陆钥匙串)。login.keychain文件的路径一般是


${HOME}/Library/Keychains/login.keychain
Keychain password:keychain密码

IPA签名的时候,需要 Mac 电脑当前登录的用户授予权限。建议选中,并在“Keychain password”中,输入 Mac 电脑当前用户登录的密码。


6. Advanced Xcode build options 配置


  • 点击 Advanced build settings


微信图片_20220503132157.png


然后填写以下内容


微信图片_20220503132201.png


Xcode Project Directory:该目录是指明了包含 xcodeproj 文件的目录


Xcode Project File:如果需要构建一个 project;而不是一个 workspace 的话则指定文件的名称(后缀名为 xcodeproj 的文件)


Build output directory:该参数只是指明了最终需要产生的动态包。ipa、app 等文件默认路径为所编译的xcodeproj 所在目录,如主项目和 POD 项目整合后,则会在主项目的和 POD 项目的 XCODEPROJ 所在目录(编译产生的相关文件所在目录,默认为 CONFIGURATION)


有一个参数也非常常用的就是OBJROOT,该参数是产生 .a 和 .hmap文件的目录,默认路径为所编译的 xcodeproj 所在目录,如主项目和 POD 项目整合后,则会在主项目的和 POD 项目的 XCODEPROJ 所在目录,关于 OBJROOT、CONFIGURATION_BUILD_DIR 以及 SYMROOT 三个路径之间的关系可以查看官方文档。


7. 收集 ipk 成果物


微信图片_20220503132205.png


构造的 ipk 包一般位于 build 目录下。例如


build/**/*.ipk
相关文章
|
3月前
|
安全 Android开发 iOS开发
Android vs. iOS:构建生态差异与技术较量的深度剖析###
本文深入探讨了Android与iOS两大移动操作系统在构建生态系统上的差异,揭示了它们各自的技术优势及面临的挑战。通过对比分析两者的开放性、用户体验、安全性及市场策略,本文旨在揭示这些差异如何塑造了当今智能手机市场的竞争格局,为开发者和用户提供决策参考。 ###
|
3月前
|
Java Android开发 Swift
安卓与iOS开发对比:平台选择对项目成功的影响
【10月更文挑战第4天】在移动应用开发的世界中,选择合适的平台是至关重要的。本文将深入探讨安卓和iOS两大主流平台的开发环境、用户基础、市场份额和开发成本等方面的差异,并分析这些差异如何影响项目的最终成果。通过比较这两个平台的优势与挑战,开发者可以更好地决定哪个平台更适合他们的项目需求。
125 1
|
4月前
|
IDE Android开发 iOS开发
探索Android与iOS开发的差异:平台选择对项目成功的影响
【9月更文挑战第27天】在移动应用开发的世界中,Android和iOS是两个主要的操作系统平台。每个系统都有其独特的开发环境、工具和用户群体。本文将深入探讨这两个平台的关键差异点,并分析这些差异如何影响应用的性能、用户体验和最终的市场表现。通过对比分析,我们将揭示选择正确的开发平台对于确保项目成功的重要作用。
|
2月前
|
运维 监控 Devops
DevOps文化:持续交付与持续反馈的文化构建与实践
【10月更文挑战第26天】DevOps作为一种将开发与运维紧密结合的文化和实践,通过促进团队协作与自动化流程,实现快速、稳定且高质量的软件交付。本文重点探讨持续交付与持续反馈两大支柱,通过实际案例和示例代码,展示其构建与实践过程。例如,使用Jenkins构建CI/CD流水线,通过Grafana和Prometheus实现实时监控,确保软件质量和快速响应。
49 1
|
3月前
|
开发工具 Android开发 iOS开发
Android vs iOS:构建移动应用时的关键考量####
本文深入探讨了Android与iOS两大移动平台在开发环境、性能优化、用户体验设计及市场策略方面的差异性,旨在为开发者提供决策依据。通过对比分析,揭示两个平台各自的优势与挑战,帮助开发者根据项目需求做出更明智的选择。 ####
|
2月前
|
运维 Devops jenkins
DevOps文化:持续交付与持续反馈的文化构建与实践
【10月更文挑战第27天】DevOps文化强调开发和运维的紧密合作,以实现快速、高质量的软件交付。核心在于持续交付和持续反馈。本文探讨了如何通过改变组织结构、构建跨功能团队、使用自动化工具(如Jenkins)和积极收集用户反馈,来构建和实践DevOps文化。
57 0
|
3月前
|
安全 Android开发 数据安全/隐私保护
探索安卓与iOS的安全性对比:哪个更适合企业环境?
在数字化时代,移动设备已成为企业日常运营不可或缺的一部分。选择合适的操作系统对于保障企业数据安全至关重要。本文深入分析了Android和iOS两大主流操作系统的安全性,从系统架构、安全功能、应用生态及更新频率四个维度进行全面比较,旨在为企业提供一个清晰的决策依据,帮助企业在Android的开放性与iOS的封闭性之间找到最适合自身需求的平衡点。
68 6
|
4月前
|
IDE 开发工具 Android开发
安卓与iOS开发对比:平台选择对项目成功的影响
【9月更文挑战第10天】在移动应用开发的世界中,选择正确的平台是至关重要的。本文将深入探讨安卓和iOS这两大主要移动操作系统的开发环境,通过比较它们的市场份额、开发工具、编程语言和用户群体等方面,为开发者提供一个清晰的指南。我们将分析这两个平台的优势和劣势,并讨论如何根据项目需求和目标受众来做出最佳选择。无论你是初学者还是有经验的开发者,这篇文章都将帮助你更好地理解每个平台的特性,并指导你做出明智的决策。
|
4月前
|
Devops jenkins 持续交付
DevOps实践:构建和部署一个Docker化的应用
【9月更文挑战第14天】在当今快节奏的软件开发领域,DevOps已经成为提升效率、加速交付的关键。本文将引导你理解DevOps的核心概念,并通过一个实际的示例—构建和部署一个Docker化的应用—来深入探讨其实践方法。我们将从简单的应用出发,逐步实现Docker容器化,并最终通过CI/CD流水线自动化部署过程。这不仅是对DevOps流程的一次实操演练,也是对现代软件开发理念的一次深刻体验。
|
4月前
|
开发框架 Android开发 iOS开发
探索安卓与iOS开发的差异:构建未来应用的指南
在移动应用开发的广阔天地中,安卓与iOS两大平台各占半壁江山。本文将深入浅出地对比这两大操作系统的开发环境、工具和用户体验设计,揭示它们在编程语言、开发工具以及市场定位上的根本差异。我们将从开发者的视角出发,逐步剖析如何根据项目需求和目标受众选择适合的平台,同时探讨跨平台开发框架的利与弊,为那些立志于打造下一个热门应用的开发者提供一份实用的指南。
73 5