参考这个链接: stack overflow 上的回答
由于在持续集成的时候总是希望让 archive 的时候 build 号进行自动增加, 这样不用人去干预. 自动将 build 号增加之后再自行提交, 这样每次构建的时候都是新的构建号.
在 Xcode 中可以通过 archive 的 pre-action 和 post-action 来达到目标.
具体过程
首先选择编辑 scheme, 如下图所示:
编辑 scheme
找到弹出界面中的 archive, 点击其左边三角, 出现如下的 Archive 设置图:
Archive 设置在里面的 Pre-actions 中点击加号, 然后选择添加新的脚本:
添加 Pre-actions 脚本脚本内容如下所示:
if [ $CONFIGURATION == Release ]; then
echo "Bumping build number..."
plist=${PROJECT_DIR}/${INFOPLIST_FILE}
# increment the build number (ie 115 to 116)
buildnum=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${plist}")
if [[ "${buildnum}" == "" ]]; then
echo "No build number in $plist"
exit 2
fi
buildnum=$(expr $buildnum + 1)
/usr/libexec/Plistbuddy -c "Set CFBundleVersion $buildnum" "${plist}"
echo "Bumped build number to $buildnum"
else
echo $CONFIGURATION " build - Not bumping build number."
fi
添加好后如下图所示:
image.png至此, 每次 Archive 的时候就会自动增加构建号了.
如果想要在持续集成过程中执行 Archive 时也自动增加构建号, 且构建号能够被提交到执行持续集成的分支上, 则可以再添加如下脚本实现(一般添加到 Post-actions 内, 添加方式同 Pre-action):
cd ${PROJECT_DIR} # 进入工程根目录
git add -A # stage 改动
git commit -a -m 'update build number.' # commit 改动
git push # 推送已提交的改动
上面的脚本作用是自动增加构建号后, 将代码再次提交到当前分支(这里执行持续集成的分支就是当前分支, 则之后继续开发的话, 只需要将持续集成分支中的改动合并到开发分支, 即可继续开发.)
最佳方式
在 git 里面有一个提交编号, 可以通过 git rev-list HEAD --first-parent --count
来获取. 故这里使用 git 里面的提交号就可以在统一的位置自动获取到构建号了.
在 target 对应的 build phases 里面添加一个 run script, 如下所示:
自动增加构建号其中的 shell 脚本主要功能就两行:
# 获取当前 git 的最新版本提交计数并赋值给 buildnum 变量
buildnum=$(git rev-list HEAD --first-parent --count)
# 使用 Plistbuddy 将获取的计数数值写入到 plist 文件的 CFBundleVersion 对应的值内.
/usr/libexec/Plistbuddy -c "Set CFBundleVersion $buildnum" "${plist}"
网友评论