If you are going to publish your app to App Store Connect or Google Play, each uploaded binary must have a new version. There are several approaches you can use for build versioning on Codemagic. One of the easiest ways to increment app version with every build is by using the environment variables that Codemagic exports during the build. There are two environment variables that count the number of builds:
BUILD_NUMBER. Holds the total count of builds (including the ongoing build) for a specific workflow in Codemagic. In other words, if you have triggered 10 builds for some workflow in Codemagic, the next time you build it,
BUILD_NUMBERwill be exported as
PROJECT_BUILD_NUMBER. Holds the total count of builds (including the ongoing build) for a project in Codemagic. In contrast with
PROJECT_BUILD_NUMBERwill increase every time you build any of the workflows of the app.
Incrementing app version using environment variables
Here are some examples how you can increment the app version using Codemagic’s read-only environment variables in build arguments:
--build-name=2.0.$BUILD_NUMBER --build-number=$(($BUILD_NUMBER + 100)) --build-name=1.0.0 --build-number=$BUILD_NUMBER
Fetching build number from pubsec.yaml
Add a pre-build script that installs yq, a lightweight and portable command-line YAML processor:
#!/usr/bin/env sh HOMEBREW_NO_AUTO_UPDATE=1 brew install yq
Then add the following build arguments:
--build-number=$(cat ./pubspec.yaml | yq r - version)
Set Xcode project build number via command line
Calling agvtool is another way of forcing Xcode to set the build version for your next build.
#!/bin/sh set -e set -x cd $FCI_BUILD_DIR/ios agvtool new-version -all $(($BUILD_NUMBER + 1))