Wednesday, September 3, 2014

Glue together git, feature branches, Jenkins and Redmine

Feature branches or topic branches are useful thing to keep master stable and to introduce atomicity and isolation to what you are doing. But when you commit your work and set task to Resolved state it doesn't mean that this fix is ready to be tested by QA team. There is a time lag between the moment you resolve an issue in issue tracker and it is rolled out on test environment: your lead needs to review your changes, QA lead needs to make a build that will grab your change and put it to the testing env.
There is a simple solution to this issue though. First of all a custom field has been added to the tracker (issue/bug/feature/ticket) in Redmine namely Issue fixed build number (ok, it must have been called Issue fixed commit), when someone resolves a ticket it fills in the last commit in corresponding feature branch. If one sees this commit in some branch he can say with confidence that this branch contains changes for this feature (after you merge feature branch to the master you'll see there the same commit hash, it doesn't hold for rebase).
Secondly you'll need the proprietary JenkinsRedmine plugin, see Building a plugin. The plugin actually does two simple steps:
  1. Gets all commits in fetched by Jenkins brunch issuing git log command
  2. Gets all issues in Resolved state for given project from Redmine (see Redmine REST API for Issues), checks which Issue fixed build numbers are in git log
Then it just draws a table like below. It omits issues that are not found in git log. Thus QAs get the list of issues to check on test environment.

No comments:

Post a Comment