首页 > 解决方案 > 使用 Azure Devops 在 iOS 应用程序中自动增加版本号

问题描述

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

例如:版本从 0.0.1 -> 0.0.99 -> 0.1.0 -> 0.1.99 -> 0.2.0 ->............-> 0.99.99 -> 1.0 开始.0

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

标签: azure-devopsxamarin.iosazure-pipelinesversioning

解决方案


您可以通过script在构建应用程序之前实施一个步骤来实现这一点。
此脚本将使用该PlistBuddy工具来读取和增加版本号(假设您在 Azure DevOps 上使用macos计算机)。
我还假设您正在使用此处major.minor.patch描述的语义版本控制系统。 该脚本应该按照您的描述增加版本号,然后将其写入您的应用程序文件。如果您的项目中有不同的路径,请注意更改该文件的路径
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 ($1 == "" ? 0 : $1)}'`
    minorVersion=`echo $versionNumber | awk -F "." '{print ($2 == "" ? 0 : $2)}'`
    patchVersion=`echo $versionNumber | awk -F "." '{print ($3 == "" ? 0 : $3)}'`
    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"


推荐阅读