Name and query docker tags
Project description
Motivation
When building complex docker ecosystems it’s important to uniquely tag each docker build before pushing it to the registry. This allows you to move back and forward in time by using different versions of the docker image, pin the production/QA/staging environments to different tags, etc.
Installation
$ pip install --upgrade docker-tag-naming
Commands
One of the most interesting features which comes with using docker-tag-naming is that it’s now possible to query which tag is the latest in a specific branch:
$ docker-tag-naming latest andresriancho/w3af develop v112-01460cd-develop
According to our convention 112 is the version number, 01460cd is the git commit ID and develop is the branch.
It’s possible to manually forge a new version tag to be used in any registry image:
$ docker-tag-naming forge --version 332 --commit-id cd14580 --branch master v332-cd14580-master
But the most interesting feature is to bump the version:
$ docker-tag-naming bump andresriancho/w3af develop --commit-id cd14580 v113-cd14580-develop
Please note that 113 was created by retrieving the latest version tag from the andresriancho/w3af repository and performing a +1.
Continuous delivery usage
These are just a couple of examples to show how to use docker-tag-naming with continuous delivery. First in the base image use bump to tag and push the version:
$ export NEXT_TAG=`docker-tag-naming bump username/base-image ${BRANCH} --commit-id ${COMMIT_ID}` $ docker tag username/base-image username/base-image:$NEXT_TAG $ docker push username/base-image:$NEXT_TAG
Then in the build where the base image is used, query the latest:
$ export LATEST_TAG=`docker-tag-naming latest username/base-image develop` $ render-compose --latest-base-image $LATEST_TAG $ docker-compose up
Using these steps will guarantee that the latest available image is always used in your builds.
Authentication and private images
In order to list tag names from private images docker-tag-naming requires credentials, these can be set using the environment variables REGISTRY_USER and REGISTRY_PASS:
$ export REGISTRY_USER=username $ export REGISTRY_PASS=password $ docker-tag-naming bump username/private develop --commit-id cd14580
Important disclaimer
The docker registry/hub (https://registry.hub.docker.com/) seems to have a delay between what’s shown through the web interface (your browser) and the REST API. Take this into account when using these commands in continuous integration scripts, since your recently pushed tags might not appear right away!
A command that might help as a workaround is docker-tag-naming refresh which will query the API until a new version is available or the timeout is reached:
$ docker-tag-naming refresh username/base-image develop Initial version is v113-cd14580-develop , waiting for new release... New version found: v114-5151bc0-develop $ docker-tag-naming latest andresriancho/w3af develop v114-5151bc0-develop
Reporting bugs
Report your issues and feature requests in docker-tag-naming’s issue tracker and we’ll be more than glad to fix them.
Pull requests are more than welcome!
Build status
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file docker-tag-naming-1.0.6.tar.gz
.
File metadata
- Download URL: docker-tag-naming-1.0.6.tar.gz
- Upload date:
- Size: 6.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b8eca05cb82ed7b60afbd23ec160ad8fde10d7f9f4b542c2ab5d279172041548 |
|
MD5 | 3a0d03cebb0a33f05a16adebb671f2bd |
|
BLAKE2b-256 | 0d92b152f398723bc103f980f7bdad5ce99fd9dffe542e59cba3ae19cddbd2a4 |