Release management

Posted on May 20, 2022

Version control

  • Protects code as delivery nears
  • Mitigates human and technical errors
  • Generally maintain 3 releasable environments: dev, feature and master

System building

The codebase is only properly linked together towards the end of development. We use various tools to help us.

  • Build script generation
  • Version control system integration, to get correct component versions
  • Minimal recompilation: Only recompile changed modules
  • Executable system creation: Easy setup/installer
  • Test automation at build time
  • Reporting (on build progress/success/failure)
  • Documentation generation

Integrating environments

  • Merging dev systems, since each developer will have a slightly different version
  • Build server should maintain the definitive development build
  • Building for target environment, including databases and apps not available in the development target

Larger projects take longer to build, so may need less frequent builds with more changes each build.

Dummy and production data

When building for production, you need to switch from dummy data sources to real (production) data. To do so, you should check:

  • Availability of data sources
  • Overhead of data processing
  • Long term storage costs
  • Data sharing and access constraints

Releasing

  • Releasing is expensive - consider configuration, installation, documentation, marketing, etc.
  • May need installation support if targeted for a variety of devices
  • Updates should consider updating with missed updates, and package possible extra changes (eg. going from v1.0 -> v3.0 should also package v2.0 changes)
  • Release checklist:
    • Explicit dependencies
    • Distributed release, via many channels
    • Minimal effort for customers to install
    • Keep control of release scope (who can install)
    • Keep a release log and descriptive update information
    • Prevent unnessecary retrievals for updates

Post-release updates

Consider:

  • Cost of making a change
  • benefits of making a change
  • Drawbacks of not making a change
  • Affected users
  • Product release cycle- agile methodologies nessecitate updates as part of the release cycle

All topics ⟶