Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
edeliver provides a way to automatically increment the current version for the current build and/or to append the git commit count and/or revision as version metadata.
Using a different versions for each release is essential especially if you build hot code upgrades, but also makes sense to see which version is running, e.g. when using
mix edeliver version [staging|production].
Notice: This feature cannot be used in conjunction with the
--skip-mix-clean command line option or the
SKIP_MIX_CLEAN=true config respectively*.
Append git commit count and/or revision to the release version
mix release.version show 1.0.0 mix edeliver build release --auto-version=commit-count # creates version 1.0.0+3027 mix edeliver build upgrade --auto-version=git-revision # creates version 1.0.0+82a5834 mix edeliver build upgrade --auto-version=commit-count+git-revision # creates version 1.0.0+3027-82a5834 mix edeliver build upgrade --auto-version=git-revision+commit-count # creates version 1.0.0+82a5834-3027
Append other metadata: git branch, build date or mix env
mix release.version show 1.0.0 mix edeliver build release --auto-version=git-branch # creates version 1.0.0+master mix edeliver build release --auto-version=git-revision+git-branch-unless-master # creates version 1.0.0+82a5834 mix edeliver build upgrade --auto-version=build-date # creates version 1.0.0+20160414 mix edeliver build upgrade --auto-version=build-date+time # creates version 1.0.0+20160414-210143 mix edeliver build upgrade --auto-version=git-revision+build-date # creates version 1.0.0+82a5834-20160414 MIX_ENV=staging mix edeliver build release --auto-version=mix-env+git-revision # creates version 1.0.0+staging-82a5834
Append metadata to version permanentely
To append metadata permanentely you can set the
AUTO_VERSION configuration variable in your
.deliver/config file. This can be overridden by the
--auto-version= command line argument.
# ./deliver/config AUTO_VERSION=commit-count+git-revision+branch-unless-master
Available metadata which can be appended to the release version
[git-]revisionAppends sha1 git revision of current HEAD.
[git-]branchAppends the current branch that is built.
[git-]branch-unless-masterAppends the current branch that is built but only unless it is the master branch.
[build-]dateAppends the build date as YYYYMMDD.
[build-]timeAppends the build time as HHMMSS.
[git-]commit-count[-all[-branches]Appends the number of commits across all branches. Allows edeliver to detect which version is newer if it is appended as first metadata to the release version.
[git-]commit-count-branchAppends the number of commits from the current branch. This makes more sense, if the branch name is also appended as metadata to avoid conflicts from different branches.
Using commit count accross all branches (
commit-count[-all[-branches]) or using the build date (
[build-]date) as first metadata to append, enables edeliver to consider that values when sorting versions. Using
[git-]revision or commit count for the current branch in conjunction with the branch name (
commit-count-branch+branch) enables you to uniquely identify the built/deployed version. If the revision is used, edeliver can display the commit message for that version (and the 5 previous commit messages) if
edeliver version [staging|production] is used. To achieve both (sorting and identifying versions) and to see whether a feature branch is built/deployed, the following permanent auto-versioning option is recommended:
For more information also try
mix edeliver help upgrade,
mix edeliver help release or
mix help release.version.
Example Output for
edeliver version task if
git-revision is used for auto-versioning:
$ mix edeliver version production EDELIVER YOUR_APP WITH VERSION COMMAND -----> getting release versions from production servers production node: 0 user : production host : host-01.domain.net path : /your/deploy/path response: 1.2.3+4915-e834c67 branch : master revision: e834c67 date : 2016-04-19 17:10:13 (git commit) commits : Use autoversion for edeliver Update release version to 1.2.3 Revert something Add something ... production node: 1 user : production host : host-12.domain.net path : /your/deploy/path response: 1.2.3+4931-4805b65 branch : feature revision: 4805b65 date : 2016-04-21 16:41:01 (git commit) commits : Add another feature Add new feature Use autoversion for edeliver Update release version to 1.2.3 Revert something Add something ... VERSION DONE!
Then number of commits can be adjusted by the
VERSION_INFO_LAST_COMMITS env / config.
Increment / Set Version for the current release / upgrade
mix release.version show 1.2.3 mix edeliver build release --increment-version=patch # creates version 1.2.4 mix edeliver build release --increment-version=minor # creates version 1.3.0 mix edeliver build release --increment-version=major # creates version 2.0.0 mix edeliver build release --set-version=1.3.0-beta.1 # creates version 1.3.0-beta.1
--set-version= can be used in conjunction with the
--auto-version= option. The
AUTO_VERSION default is also used unless the
--auto-version= overrides it.
Use the Auto-Versioning / Increment-Version mix task locally
You can also use the auto versioning mix task provided by edeliver locally on your development machine, e.g. when testing your release / upgrade. The argument names to append metadata differ slightly and contain an (optional)
append- prefix. If version modifiers are combined, they can be separated by a space (or by the
+ character as for the edeliver option).
It is required to clean the build output before* and to run the
release mix tasks together using the
mix do task while running the
release.version task before the
mix release.version show 1.2.3 mix do clean, release.version increase major revision branch --dry-run Would update version from 1.2.3 to 2.0.0+82a5834-test # prints only the info above. You can always ommit the 'append-git-' part. mix do clean, release.version append-git-revision, release # creates version 1.2.3+82a5834 mix do clean, release.version append-commit-count append-git-revision append-git-branch, release # creates version 1.2.3+3027-82a5834-master mix do clean, release.version increase major, release AUTO_VERSION="append-git-revision" mix do clean, release.version set 1.3.0-beta.1, release # creates version 1.3.0-beta.1+82a5834
(*) The build files must be removed to ensure that the
your_app.app file will be (re-)generated with the new version.