Representing status by repository location is a poor substitute for metadata
In many organisations a Production release cannot occur until a series of QA criteria have been met (e.g. successful acceptance tests, signed off exploratory testing), and a Continuous Delivery pipeline modelling such a value stream should implement corresponding safeguards.
One potential strategy is to move a binary within the binary repository according to current status. When a binary successfully completes a stage, its repository location is updated so that it becomes accessible to later stages and inaccessible to earlier stages. If the binary repository of a pipeline is implemented by a feature-rich repository manager such as Artifactory or Nexus, this can be implemented by moving a binary between artifact repositories within the repository manager.
In the above binary repository, a binary is initially committed to a QA-facing location for Acceptance and UAT stages. When a binary is signed-off by QA, it is moved to a production-facing location and becomes available for a Production release.
This solution can prove successful, but it can also introduce a number of issues:
- Opaque implementation. Code clarity may be impaired by binary location rules necessarily being shared between stages.
- Inflexible architecture. Value stream changes can be costly – for example, adding a new sign-off process might require the creation of yet another artifact repository if a repository manager is in use.
- No ubiquitous language. A Release Manager is likely to speak of “releasing a tested application version” rather than “releasing from the Production Candidates pool of binaries”.
- Lack of metrics. Pipeline activity data is limited to location modification timestamp, meaning the only available metric is Production sign-off date.
- Reduced feedback. An unknown binary will be reported as “not found”, yet the suppressed root cause could be an invalid version, a binary still traversing an earlier stage, or a binary that has failed an earlier stage.
An improved solution would be to establish binary status as a first-class concept in the pipeline and introduce per-binary metadata support.
In this repository each binary is stored in an immutable location, with its associated metadata updated as it progresses through the pipeline. This simplifies the pipeline architecture and dramatically improves the quality of feedback.




