<iOS 实践经验>持续集成时指定构建号(Build

2017-10-31  本文已影响67人  貘鸣

参考这个链接: 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}"
上一篇 下一篇

猜你喜欢

热点阅读