RSS

Add git commit to docker image tag in Azure pipeline

Add git commit to docker image tag in Azure pipeline

Problem

I have Azure devops pipeline to build docker image from source. I want the docker image have the source code revision info like git commit hash.

I tried to use Build.SourceVersion as a docker image tag,

Build.SourceVersion :

The latest version control change that is included in this build.

  • Git: The commit ID.
  • TFVC: the changeset.

This variable is agent-scoped, and can be used as an environment variable in a script and as a parameter in a build task, but not as part of the build number or as a version control tag.

I set my docker image tag in Docker task as:

$(Build.SourceBranch)-$(Build.BuildId)-$(Build.SourceVersion)

Then I trigger a build, I hope it can generate tag like this:

master-8219-59af41e

However it generate tag like this (missing commit):

master-8219-

When I trigger a build, I notice there is a Commit field. I didn’t input anything and it should be the latest commit. However it seems Azure pipeline didn’t pass the latest commit to Build.SourceVersion.

Solution

To solve this issue. I use Azure pipeline environment var to pass the commit hash to docker image tag. The trick is create a Bash Script task to set environment var.

The Bash Script content as following:

GIT_COMMIT=$(git rev-parse --short HEAD)

echo "GIT_COMMIT: ${GIT_COMMIT}"

#
# set env variable to allow next task to consume
#
echo "##vso[task.setvariable variable=GIT_COMMIT]${GIT_COMMIT}"

Now in next Azure pipeline task Push Docker Image, it use access var GIT_COMMIT through $(GIT_COMMIT).

Now trigger manual build you will get docker image tag with git commit. e.g.

master-8219-59af41e

Reference

OmniLock - Block / Hide App on iOS

Block distractive apps from appearing on the Home Screen and App Library, enhance your focus and reduce screen time.

DNS Firewall for iOS and Mac OS

Encrypted your DNS to protect your privacy and firewall to block phishing, malicious domains, block ads in all browsers and apps

Ad