美文网首页
<iOS 实践经验>持续集成时指定构建号(Build

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

作者: 貘鸣 | 来源:发表于2017-10-31 14:02 被阅读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}"
    

    相关文章

      网友评论

          本文标题:<iOS 实践经验>持续集成时指定构建号(Build

          本文链接:https://www.haomeiwen.com/subject/ywkbpxtx.html