ios - 从 Jenkins 中获取 CFBundleVersion 以将其用作变量,例如 ${APP_VERSION}

标签 ios xcode jenkins continuous-integration plist

我想做的是能够为 Jenkins 正在构建的提交添加一个标签。现在我用 Jenkins 内部版本号标记提交,但我还想添加在前面的 Info.plist CFBundleVersion 中列出的应用程序版本。

我想知道的是,我如何使用 Jenkins 或其他方式获取该值并能够将其用作 Jenkins 中的参数/变量?

我看到过使用 plistbuddy 来设置这个值的引用资料,所以我假设有一种方法可以使用它来获得相同的值。虽然我不知道如何以及如何将它带到我可以在 Jenkins 中使用它的地方。


为了进一步说明,我在 Jenkins 中使用 Git Publisher 创建标签并使用这种格式推送它

jenkinsbuild-$BUILD_NUMBER

这会在 git 中的提交上产生这样的标记 - jenkinsbuild-303

假设我的应用程序当前版本为 3.5,我想要的是一个读取 - jenkinsbuild-3.5-303 的标签

最佳答案

我设法从@agy 链接到的答案中拼凑出一个解决方案。这是我所做的:

  1. 在 Jenkins 配置的构建部分,我将以下两行添加到 Xcode 步骤之后的“Execute Shell”步骤:

    APP_VERSION=$(/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" "path to your plist")    
    echo APP_VERSION=$APP_VERSION > appversion.properties;
    
  2. 之后,我添加了“注入(inject)环境变量”步骤(我认为这是 EnvInject 插件的一部分),我将“appversion.properties”添加到属性文件路径 字段。

  3. 完成此操作后,APP_VERSION 现在可用作后续 shell 命令步骤中的环境变量。

关于ios - 从 Jenkins 中获取 CFBundleVersion 以将其用作变量,例如 ${APP_VERSION},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30846017/

相关文章:

ios - 调用框架中的方法

java - Firefox 在 Jenkins Selenium 上出现错误 : "Error: cannot open display"

jenkins - Jenkins 在 devops 管道中的位置如何?

iphone - 选择器方法从未在 NSNotificationCenter 中调用

java - 通过 headless 安装4J自动化

cocoa-touch - 如何从 UITableView 中取消选择一个对象?

ios - 测量在 Xcode 中渲染 UIView 的 CPU 使用率

ios - 如何使用 IOS 8 XCode 6 beta 从 Popover 中的按钮关闭 UIPopover

swift - SpriteKit 中的 Admob Interstitials - Swift 3

ios - 如何找出我的 iOS 应用程序的大小?它是否大于蜂窝下载限制?