Question

We use a in house release management system integrated with SVN that does following:

Developer gives title, repository, change set, selects code reviewer's name, QA's name and changeset in svn repo and submits for approval

QA and Code reviewer approves release and it's made available for download in zip format. Files in zip archive are tracked via svn changeset.

Now the QUESTION is: Is there any open source implementation of better tested release management system that can do above tasks for us? We also plan to migrate our SVN repositories to GIT, so it would be a huge plus if releaser supports both systems.

P.S. I read about Jenkins and Maven but not sure if they would do all what we want.

Was it helpful?

Solution

"Developer gives title, repository, change set, selects code reviewer's name, QA's name and changeset in svn repo and submits for approval"

Since you mention you're looking at moving to Git, you could consider Gerrit. Gerrit can host your Git repositories, and also manage the submit/review/merge workflow.

There's a video by Alex Blewitt showing how Gerrit can be used together with Jenkins. I recommend the video, but it goes at quite a pace.

The workflow we use is this:

  • Developer submits changes to Gerrit for review.
  • Jenkins builds the changes, and indicates on the review item whether it builds.
  • The reviewer gets the built artifacts from Jenkins and tests them out.
  • The reviewer also does code review, and marks up the changes on Gerrit with anything they want to see fixed.
  • The developer updates the change as per review comments.
  • Repeat above as necessary.
  • The reviewer approves the change, and they are merged into the master branch.

Gerrit is used for some large projects, including the Android project. You can see it in use here.

Edit: You'll need a Jenkins plugin that provides integration between Gerrit and Jenkins. There are at least two Gerrit-related plugins for Jenkins. The above refers to the Gerrit Trigger plugin.

See also: Gerrit Documentation.

OTHER TIPS

Well, you basically want to automate following steps and you need a CI for that.

"Developer gives title, repository, change set, selects code reviewer's name, QA's name and changeset in svn repo and submits for approval"

Ask your developers to properly tag and add all required information before committing the code

If you already read about Hudson/Jenkins then

  • You can setup a Hudson job (CI) to fetch above information from the SVN/GIT commit history and the tester/reviewer should get informed about that. There are many plugins to achieve this, see release mange plugin, email-ext should be enough to achieve this.

"QA and Code reviewer approves release and it's made available for download in zip format. Files in zip archive are tracked via svn changeset"

For this you need automatic review/testing. First, figure out how the review is done and then you can add a build-step in Hudson/Jenkins to run the script that performs the task. If the script fails it will again trigger emails to the one who committed the code (see email-ext plugin). Finally you can zip the build and send archive it. May be you even don't need to write a script for review just google for "hudson code review" or "Jenkins code review".

Believe me for all of this there are plugin available. You just need a little more reading and go through Jenkins/Hudson.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top