From 7e286efcd3deb9ea3dec428abfc5f74591096d39 Mon Sep 17 00:00:00 2001
From: CrazyMax <crazy-max@users.noreply.github.com>
Date: Mon, 26 Dec 2022 18:46:26 +0100
Subject: [PATCH] ci: use GITHUB_REF and GITHUB_SHA to set version and commit

Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
(cherry picked from commit 27ba1766e79c0ac7ae3f43ba7dc8d622ca6cdf42)
---
 docker-bake.hcl | 16 ++++++++++++++--
 hack/make.sh    |  8 ++++++++
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/docker-bake.hcl b/docker-bake.hcl
index d0c7cf29d4..46b110e45f 100644
--- a/docker-bake.hcl
+++ b/docker-bake.hcl
@@ -47,6 +47,18 @@ variable "PACKAGER_NAME" {
   default = ""
 }
 
+# GITHUB_REF is the actual ref that triggers the workflow and used as version
+# when tag is pushed: https://docs.github.com/en/actions/learn-github-actions/environment-variables#default-environment-variables
+variable "GITHUB_REF" {
+  default = ""
+}
+
+# GITHUB_SHA is the commit SHA that triggered the workflow and used as commit.
+# https://docs.github.com/en/actions/learn-github-actions/environment-variables#default-environment-variables
+variable "GITHUB_SHA" {
+  default = ""
+}
+
 # Defines the output folder
 variable "DESTDIR" {
   default = ""
@@ -64,8 +76,8 @@ target "_common" {
     DOCKER_STATIC = DOCKER_STATIC
     DOCKER_LDFLAGS = DOCKER_LDFLAGS
     DOCKER_BUILDTAGS = DOCKER_BUILDTAGS
-    DOCKER_GITCOMMIT = DOCKER_GITCOMMIT
-    VERSION = VERSION
+    DOCKER_GITCOMMIT = DOCKER_GITCOMMIT != "" ? DOCKER_GITCOMMIT : GITHUB_SHA
+    VERSION = VERSION != "" ? VERSION : GITHUB_REF
     PLATFORM = PLATFORM
     PRODUCT = PRODUCT
     DEFAULT_PRODUCT_LICENSE = DEFAULT_PRODUCT_LICENSE
diff --git a/hack/make.sh b/hack/make.sh
index 4a000a65d5..b30f3d6e44 100755
--- a/hack/make.sh
+++ b/hack/make.sh
@@ -39,6 +39,14 @@ DEFAULT_BUNDLES=(
 )
 
 VERSION=${VERSION:-dev}
+if [[ $VERSION == refs/tags/* ]]; then
+	VERSION=${VERSION#refs/tags/}
+elif [[ $VERSION == refs/heads/* ]]; then
+	VERSION=$(sed <<< "${VERSION#refs/heads/}" -r 's#/+#-#g')
+elif [[ $VERSION == refs/pull/* ]]; then
+	VERSION=pr-$(grep <<< "$VERSION" -o '[0-9]\+')
+fi
+
 ! BUILDTIME=$(date -u -d "@${SOURCE_DATE_EPOCH:-$(date +%s)}" --rfc-3339 ns 2> /dev/null | sed -e 's/ /T/')
 if [ "$DOCKER_GITCOMMIT" ]; then
 	GITCOMMIT="$DOCKER_GITCOMMIT"