使用 Azure Devops 在 iOS 应用程序中自动增加版本号

Auto Increment version number in iOS application using Azure Devops

我在 iOS 应用程序的构建过程中使用 Azure Devops yaml 管道。在运行时,我想在 info.plist 文件中每次构建后自动增加 CFBundle 版本号。

例如:版本从 0.0.1 -> 0.0.99 -> 0.1.0 -> 0.1.99 -> 0.2.0 ->................-> 0.99 .99 -> 1.0.0

关于如何在不使用任何第三方扩展的情况下实现此目的的任何建议? 谢谢!

您可以通过在构建应用程序之前实施 script 步骤来实现这一点。
此脚本将使用 PlistBuddy 工具读取和递增版本号(假设您在 Azure DevOps 上使用 macos 机器)。
我还假设您正在使用语义版本控制系统 major.minor.patch,如 here.
所述 该脚本应该按照您的描述增加版本号,然后将其写入应用程序的 Info.plist 文件。如果您的项目中有不同的路径,请注意更改该文件的路径

- script: |
    buildPlist="$(Build.SourcesDirectory)/Info.plist" # Enter the path to your plist file here
    maxSubversionNumber=99 # Set what will be the maximum number to increment each sub version to

    versionNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "$buildPlist")
    majorVersion=`echo $versionNumber | awk -F "." '{print ( == "" ? 0 : )}'`
    minorVersion=`echo $versionNumber | awk -F "." '{print ( == "" ? 0 : )}'`
    patchVersion=`echo $versionNumber | awk -F "." '{print ( == "" ? 0 : )}'`
    if [[ $patchVersion -ge $maxSubversionNumber ]]
    then
      patchVersion=0
      if [[ $minorVersion -ge $maxSubversionNumber ]]
      then
        minorVersion=0
        majorVersion=$(($majorVersion + 1))
      else
        minorVersion=$(($minorVersion + 1))
      fi
      else
        patchVersion=$(($patchVersion + 1))
    fi
    newVersionNumber=`echo $versionNumber | awk -F "." '{print '$majorVersion' "." '$minorVersion' ".'$patchVersion'" }'`
    /usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $newVersionNumber" "$buildPlist"

如果你想保留$(MARKETING_VERSION) 在 Info.plist 中用于 CFBundleShortVersionString 但 想要在成功存档或构建后增加版本 然后使用以下脚本 以下脚本将增加 1.0 到 2.0 但当然可以使用@Jobert 的解决方案等修改逻辑

Script to increase app version in Xcode >= 13