前两天苹果的 WWDC 2024结束,每次苹果召开 WWDC 都是苹果平台开发者的节日。听完 Keynote,大家往往就想最先下载测试版本的操作系统和 Xcode 来尝鲜。
但是这里也有一个矛盾,一般来说从测试版到正式版要1个多月的时间。而测试版的 Xcode-beta 是无法提交 App。也就是尝鲜的话,你就有一个多月没办法提交你的 App。
解决的方法,一般是如果自己有多台 mac,其中一台不升级,专门留着用来提交 App。还有一种就是安装多系统。
但是前几年,苹果推出了 Xcode cloud,我就想是不是可以利用 Xcode cloud来解决这个问题呢?果然解决了。
大概做法如下:
首先,打开 Xcode 打开你的代码工程文件。然后按键盘 ⌘+9 。这会打开侧边栏的 report 页面,如下图,选择 Cloud。即可看到常见 Xcode cloud的向导。
点击 Get Started... 按钮,然后按照向导一步步执行即可。
过程包括选择 product,授权 Xcode 访问你的 Github 代码库等步骤。
完成后,Cloud 页面如图:
主要显示的是,Build的历史记录,对勾和叉,代表了成功的构建和失败的构建,这很一目了然。
默认的设置是每次代码提交到 Github 就会自动 build 一次。熟悉其他 CI 系统的人应该很好上手。也可以在 Xcode 当前界面右侧的详情页,右上角点击 Start Build 手动 Build。
在 App Store Connect 网站的 App 页面也可以找到 Xcode cloud 的页面,也可以用页面右上角的 “启动构建版本” 按钮来手动构建。
-
这样直接设置的 Xcode cloud 工作流,直接 build 往往会失败。因为我们往往会用 CocoaPods 或者
Carthage 来管理我们依赖的第三方库。直接从 Github 拉出来的代码不包含这些库的代码,就无法正常编译。我自己用的是 CocoaPods 下面就介绍一下。
这需要自定义的 build 脚本,不过不用担心,非常简单,如果你熟悉其他的 CI 系统就更容易理解。
Xcode Cloud 的构建过程如下图:
-
创建临时环境
-
Clone 代码
-
执行 Post-Clone 脚本(自定义的在 Clone后做处理的脚本)
-
解决依赖关系
-
执行 Xcodebuild 之前的前置脚本
-
执行 xcodebuild 命令
-
执行
Xcodebuil
d
之前的后置脚
本
-
保存结果
图中蓝色部分,都是系统自动执行的。而3,5,6部分分别对应三个自定义脚本。
ci
_post
_clone
.sh 文件
处理 clone 代码后续的处理。
ci
_pre
_xcodebuild.sh 文件处理
执行 Xcodebuild 之前的前置工作。
c
i
_post
_xcodebuild
.sh 文件处理执行
Xcodebuild 之后的后续操作。
在你的代码目录下创建一个
ci
_scripts 目录,在里面创建这三个文件就可以。加入 CocoaPods 的第三方依赖处理代码,我觉得可以放在
ci
_
po
st
_clone
.
sh 里,也可以放在
ci
_pre
_xcodebuild.sh。区别不大,我做的时候,放在
ci
_pre
_xcodebuild.sh 里了。
我找到的一个建议
Cocoa
Pods 处理代码为:
#!/bin/sh
gem install cocoapods
pod install
经测试失败,因为 xcode build 环境是 gem 2.6 而且不可直接安装新的库。
我经过测试,自己写的处理代码为:
#!/bin/bash
\curl -sSL https://get.rvm.io | bash -s stable
source /Users/local/.rvm/scripts/rvm
rvm install 2.7.2
rvm use 2.7.2 --default
gem install cocoapods
pod install
经测试,完全没问题。
手动给脚本加上执行权限
chmod +x
ci
_pre
_xcodebuild.sh,然后提交到 Git 以后,就OK了。