This document describes how to release a new Docker image for Zipkin. The image is built automatically on quay.io and mirrored to Docker Hub.
Each release is tagged with a semantic version number like 1.4.1
. The Docker
tags 1.4
and 1
point to the latest tag under them, to let users choose the
level of version pinning they prefer.
-
Create, push a tag
1.4.1
This triggers a Travis job on openzipkin/docker-zipkin-java that just takes care of everything, except for:
-
Test the new images
Locally change
docker-compose.yml
to use the newly built version in the containerserver
(the tag will be something like1.4.1
), executedocker-compose up
, and verify that all is well with the world. -
Commit, push
docker-compose.yml
-
There is no step four
Congratulations, the intersection of the sets (openzipkin/zipkin users) and (Docker users) can now enjoy the latest and greatest Zipkin Java release!
Assume we're releasing 1.4.1
, so you've just pushed the tag 1.4.1
.
- A build of the image
openzipkin/zipkin
is triggered on Quay.io, which will build the image and tag it with1.4.1
. The build is configured to trigger when tags matching^[0-9]+\.[0-9]+\.[0-9]+$
are pushed. - A build of the GitHub repository
openzipkin/docker-zipkin-java
is triggered on Travis CI. The build startsrelease.sh
, which- Waits for the Quay.io build to start using the Quay.io API to poll for it (timing out after 5 minutes), and then waits for it to finish (never timing out). The heuristic used to identify the build we want: it's the latest build started for the tag we're building.
- Syncs the tags
1
,1.4
, andlatest
to the tag1.4.1
on Quay.io. - Syncs the tags
1
,1.4
,1.4.1
forzipkin
to Docker Hub by pulling them from quay.io using thedocker
CLI and pushing them to Docker Hub. - A friendly message is printed to remind the release manager (HAH! Such words.) about manually testing the release
and updating the tags in
docker-compose.yml
. This last part could definitely use more automation.