Search code examples
gitsvnrelease-management

Release management in SVN and Git


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.


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.