Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Turning a git branch name into a valid docker image tag

Tags:

git

docker

Part of our CI/CD workflow tags Docker images with the git branch's name. However, the set of valid characters for docker tags is smaller than the set of valid characters for a git branch name.

As a very simple example, the branch name bugfix/my_awesome_feature is not a valid tag:

docker build . -t image_name:$(git rev-parse --abbrev-ref HEAD)

Fails with the error that it is "not a valid repository/tag: invalid reference format".

Same with more complicated branch names: fix/bug#123, pr@123, etc....

What's the best way to turn a git branch name into a valid docker tag? Ignoring or replacing all invalid characters is fine.

like image 582
Felix Avatar asked Jul 15 '20 00:07

Felix


Video Answer


1 Answers

Docker tag does not allow most of the special character except -,_,..

A tag name must be valid ASCII and may contain lowercase and uppercase letters, digits, underscores, periods and dashes. A tag name may not start with a period or a dash and may contain a maximum of 128 characters.

docker valid image tags

So you can replace all special character with -. in your Branch name.

docker build . -t image_name:$(git rev-parse --abbrev-ref HEAD | sed 's/[^a-zA-Z0-9]/-/g') 

So the following branch will become

fix/bug#123 -> fix-bug-123  
pr@123 -> pr-123

You can replace - with underscores, periods and dashes

#to use `_`
sed 's/[^a-zA-Z0-9]/_/g'
like image 104
Adiii Avatar answered Sep 17 '22 13:09

Adiii