Getting CFBundleVersion from within Jenkins to use it as a variable, something like ${APP_VERSION}

2.2k views Asked by At

What I'd like to do is to be able to add a tag to commits which Jenkins is building from. Right now I tag commits with the Jenkins build number but I want to also add in the app version as listed in the Info.plist CFBundleVersion in front of that.

What I want to know is, how I can grab that value using Jenkins or otherwise and be able to use that as a parameter/variable within Jenkins?

I've seen references to using plistbuddy to set this value so I would assume there's a way to use that to get the same value. Though how and how to get that to where I can use it in Jenkins I don't know.


For further clarification I am using Git Publisher in Jenkins to create a tag and push it with this format

jenkinsbuild-$BUILD_NUMBER

This results in a tag on the commit in git like this - jenkinsbuild-303

What I want, assuming my app is currently at version 3.5 is a tag that reads - jenkinsbuild-3.5-303

1

There are 1 answers

0
Ryan Dias On

I managed to piece together a solution from the answer which @agy linked to. Here's what I did:

  1. In the Build section for the Jenkins configuration, I added the following two lines to an 'Execute Shell' step after the Xcode step:

    APP_VERSION=$(/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" "path to your plist")    
    echo APP_VERSION=$APP_VERSION > appversion.properties;
    
  2. After that, I added an 'Inject Environment Variables' step (I think this is part of the EnvInject plugin), to which I added "appversion.properties" to the Properties File Path field.

  3. After this is done, APP_VERSION is now available as an environment variable in subsequent shell command steps.