You're on your way to the next level! Join the Kudos program to earn points and save your progress.
Level 1: Seed
25 / 150 points
1 badge earned
Challenges come and go, but your rewards stay with you. Do more to earn more!
What goes around comes around! Share the love by gifting kudos to your peers.
Keep earning points to reach the top of the leaderboard. It resets every quarter so you always have a chance!
Join now to unlock these features and more
We have three projects and one shared library that together form a release.
We use gitflow, so from develop we branch a release branch, test this branch and move it to master. Our tooling consists of Jira, Bamboo, Bitbucket, Sourcetree and Atollic Truestudio.
All (4) projects should share the same version number. This version number must be known in the plan that builds the artifacts so it can be incorporated into the artifacts.
We're looking for a way to automatically generate this version number for the release or master branches (testing the version in master instead of the release branch is an option).
We have only one concurrent release, so we don't have to worry about multiple release branches.
What I've found so far:
- Generating a version number in a deployment project (when the artifacts are already created, so that's not a solution)
- using a git tag to deduce the version (e.g. using git-describe) which is error-prone as adding the tag is a manual action.
- Creating a version using Jira, again a manual action and one that closely ties Jira bookkeeping to our release versioning (which is less desirable).
Our ideal workflow would be to use develop and feature branches until develop contains all features we need, then branching off towards master to create a traceable, identically version numbered release of all projects simultaneously. This version number should be used in the build steps that create the artifacts. This can be done in either the release or in the master branch.
Can you help us to determine what is achievable using the Atlassian tools?
For anyone stumbling on this post, we ended up writing our own python scripts to achieve the items set out above.
- one script to generate a version file based on branch type and existing tags in master
- one script to create release branches in the project's repositories
- one script to merge release branches into master and tag master with the release version
This works reasonably well.
One of the remaining issues is that when Bamboo creates a plan branch, the correct branch for only one of the repositories is used (e.g. repos A and B both get feature branch X. For A's plan branch A is set to X, B remains at develop). We're looking into also solving this with custom scripting.