Releasing for lazy people

Filed under: Development,Tech — Chris on February 16, 2010 @ 21:03 — Permalink

In preparation for DMDirc 0.6.3, we’ve just finished enhancing our release procedures considerably. Previously, a typical set of steps needed to release a version of DMDirc would be:

  1. Create a new tag in a local Git repository
  2. Push the new tag
  3. Run the relevant ant task to create an installer
  4. Upload the installers and jar file to the correct place
  5. Go through each plugin and upload each one (one at a time) to the addons site
  6. Find or clone a copy of the main website repository
  7. Update a PHP file to contain details of each supported OS and each download and its size, etc
  8. Commit the website changes
  9. Push the website changes

Obviously, this process was distinctly not enjoyable. A lot of it now lends itself quite well to being automated, but we hadn’t tried this in the past for various reasons (such as our use of SVN prior to Git, and the huge length of time between releases prior to the introduction of our fixed-length release cycle). Now we have the tools and the motivation (we don’t want to be doing that process every four months for each alpha, beta, release candidate and stable version!), we set about automating the entire procedure.

We already had a set of scripts which monitored our Git repositories for new commits, and did various useful things such as announcing the commits to IRC and updating our bug tracker. Some extra code was introduced for commits to the client repository that checks if the commit looks like a release, determines which updater channel it’s for (alpha, beta and rcs are unstable, plain versions are stable), and then builds the relevant installers. Once the installer’s built, it copies or uploads the files as appropriate, automatically updates the website as needed and commits and pushes the changes, and then automatically submits every plugin to the addons site. This means our release process is now:

  1. Create a new tag in a local Git repository
  2. Push the new tag

Which I’m sure you’ll agree is decidedly simpler. Of course, we still have to announce the release to the world. Anyone wanting to develop an artificial intelligence to automatically create changelogs, release notes, blog posts, news stories and tweets for each release should get in touch!

SVN Deprecation

Filed under: Development — Shane on January 3, 2010 @ 05:33 — Permalink

Despite using Git for all of our DMDirc development work for over a year, we have continued to maintain a copy of the entire codebase in an SVN repository. This was primarily to facilitate some of our automated scripts, which we’ve finally finished migrating to use Git. This means that we no longer have any need to keep the SVN Repository up to date, and will stop doing so after the release of 0.6.3 in early March.

Anyone who is still using an SVN checkout should read http://www.dmdirc.com/git and switch to using Git, which brings numerous advantages and makes contributing back to DMDirc easier thanks to Gerrit.

If you have any questions about DMDirc development, feel free to join us in #DMDirc on Quakenet.

Introducing Gerrit

Filed under: Development,QA — Shane on November 26, 2009 @ 03:33 — Permalink

For the past year, the ever-growing DMDirc code base has been managed using the Git version control system. We still mirror our code to an SVN repository, and a couple of our automated tools still use the SVN version of things, but we’re slowly and surely modifying, upgrading or scrapping these in favour of Git-based solutions.

Recently we began a trial of using Gerrit to manage commits made to the main DMDirc repositories for the client and the parser. Gerrit is a code review tool, which developers submit their changes to (instead of pushing them directly to the Git repositories); other developers can then review the changes, test them, and leave feedback, before ultimately approving or rejecting the change. Only once a change has been approved is it allowed to go into the repository.

This has helped us greatly improve the quality of the code that makes it into the client. Another advantage to using Gerrit is that it now allows us to open up the repositories a bit more and allow third-party contributions with much more ease than before: it is now possible for anybody to sign up to Gerrit and begin committing to DMDirc right away! We even have a guide on our Git wiki page detailing how to do just that.

If you would like to contribute to DMDirc, either by committing (via Gerrit!) or in other ways, we suggest paying a visit to #DMDirc on either Quakenet, Freenode, OTFC, Coldfront or Chatspike! (Don’t worry: we have a system in place to link all the channels together!)

Powered by WordPress