企业DevOps之路:iOS 项目构建
1. 安装证书管理插件Keychains and Provisioning Profiles Management
Keychains and Provisioning Profiles Management 是管本地的keychain和iOS证书的管理插件
Manage Jenkins -> Manage Plugins
安装完之后,需要重启一下 Tomcat 服务。否则插件不生效
2. 配置 Keychains and Provisioning Profiles Management
Manage Jenkins -> Uncategorized
获取 login.keychain 文件
cd ~/Library/Keychains
上传 keychain 文件,由于 macOS10.12 以及以后的系统里面没有 login.keychain 文件,只有 login.keychain-db文件,可以复制一份,然后把 -db 删除,也可以创建一个快捷方式名字叫做 login.keychain 即可。上传之后就会出现以下配置
-
Password 一栏就填写当前 macOS 用户的登录密码
-
Code Signing Identity 填写相关证书的标识符
目前电脑上配置了一个调试证书和一个 Ad Hoc 发布证书,当然后面还需要一个 App Store 发布证书,这个操作流程都是一样的,后面自己处理就好。去到 Keychain Access -> login,找到你的 iPhone Developer 和 iPhone Distribution 证书,选择其中一个,然后复制标识符,填写到此位置,保存即可。
这个操作步骤,可以理解为 Jenkins 有权以你这台电脑(login.keychain 文件)来获取调试和发布 iOS 应用的证书(证书标识符)。
然后拿到调试证书和 Ad Hoc 证书对应的 .mobileprovision 文件,建议去 Apple 开发者后台去下载,也可以去到 /Users/{username}/Library/MobileDevice/Provisioning Profiles 这个路径下去找;但是如果配置文件太多的话,很难分辨是哪个文件,而且这个地方的名称都是 UUID 值标记的。拿到对应的 .mobileprovision 文件,同样的位置点击上传,出现以下页面:
会自动识别出 .mobileprovision 文件的 UUID 值。对于 Provisioning Profiles Directory Path,根据 macOS 当前登录的用户名的不同
/Users/{username}/Library/MobileDevice/Provisioning Profiles
这个操作步骤,可以理解为 Jenkins 可以读取位于 /Users/{username}/Library/MobileDevice/Provisioning Profiles 目录下的配置文件,同时知道应该读取那个对应的配置文件(识别 UUID 值)。保存好了之后,整个 iOS 工程项目相关的证书和配置文件都配置好了。
3. 安装 xcode 构建插件 Xcode integration
Manage Jenkins -> Manage Plugins
安装完之后,需要重启一下 Tomcat 服务。否则插件不生效
4. 构建ipk
-
新建Item
-
配置代码仓库
-
添加 Xcode 构建
-
填写 Development Team ID
如何获取Team ID,登录苹果后台 https://developer.apple.com
-
点击 Setting
-
勾选 Clean before build,意思就是在构造之前先进行环境清理工作
-
勾选 Generate Archive
勾选后,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文件
然后填写以下内容
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 目录。
6. Code signing & OS X keychain options 配置
-
点击 Code signing setting…
-
选择 Read from Xcode Project 和勾选 Unlock Keychain
勾选 Unlock Keychain 后
Keychain path:填写 login.keychain 文件的路径。意思是找到 login.keychain(登陆钥匙串)。login.keychain文件的路径一般是
${HOME}/Library/Keychains/login.keychain
Keychain password:keychain密码
IPA签名的时候,需要 Mac 电脑当前登录的用户授予权限。建议选中,并在“Keychain password”中,输入 Mac 电脑当前用户登录的密码。
7. Advanced Xcode build options 配置
-
点击 Advanced build settings
然后填写以下内容
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 三个路径之间的关系可以查看官方文档。
8. 收集 ipk 成果物
构造的 ipk 包一般位于 build 目录下。例如
build/**/*.ipk