Software Logistics Environment
Swe03
Customer:
TraCE project
Contact:
Eelco Visser
Goal
The goal of this project is to create an integrated environment for the management of the logistics of multiple, related software development projects. The environment should provide support for at least the following:
- version management
- buildfarm
- release planning
- software release management
- software deployment
If time permits the basic set could be extended with
- bug tracking
- issue tracking
Technological Requirements
- The environment should have a web-based interface such that it can be used by users at different locations.
- Off-the-shelve software should be used as much as possible, but only open source software should be used.
- The server should at least work on Unix/Linux platforms.
Team
The team for this project consists of
- Richard Nieuwenhuis, Guno Heitman, Maarten Kolthoff, Roy van den Broek, Ingmar Brouns, Niels van der Velden, Edwin van Rijkom, Niels Reijngoud, Kang Ning
The team should be divided in two teams, one working on new buildfarm software, the other on release management.
Components
Version Management System
The basic component of the environment is a version management system.
This one is easy to achieve; you can use the existing subversion server in
the ST lab:
Buildfarm
A buildfarm is a collection of machines dedicated to running build tasks on various computing
platforms, i.e, combinations of hardware, operating system, and basic build tools.
The Stratego
buildfarm
is used to automatically build the StrategoXT package as well as a number of packages based
on StrategoXT. Although this component functions adequately, it does not scale well to
building of many components. Therefore, a new buildfarm based on Nix should be constructed.
Release Planning
The first item that is needed is a web-based interface for release planning.
This component keeps track of features (or issues) for future releases.
Each feature is described by a story.
The interface supports (re)scheduling of features in releases.
When a feature is completed it can be ticked off.
Software Release Management
Producing a release of a software package is always a hassle involving many tedious steps.
- Checking out the sources from repository
- Making a distribution (tarball)
- Making a binary package (rpm)
- Uploading the packages to a server
- Deciding to make a distribution
- Updating the NEWS file (what was changed)
- Announcing the distribution (maillinglist, website)
- Incrementing version number
The buildfarm automates the first four steps, but not the later ones.
Furthermore, addition of a new packages requires copying a number of buildfiles.
To smoothen the release of software packages you should build a web-based interface, which
supports release management and is coupled with version management system, buildfarm, and
release planning.
It supports
- creating new packages
- invoking a new release based on a certain revision
- automatically triggering releases
- if all features of a release have been completed and the build succeeded a release is created
- compilation of NEWS from release planning (rather than post hoc compilation)
- maintaining history information about previous releases