Enhance versionning on build packages (#165)
It was too challenging to only use "tags" without a prefix to trigger builds. So, the new rule is to prefix releases tags by "releases/" Reviewed-on: #165
This commit is contained in:
@@ -15,6 +15,7 @@ env:
|
||||
LICENSE: MIT
|
||||
DESCRIPTION: "Effortless conversion from compose files (docker, podman) to Helm Charts"
|
||||
URL: "https://katenary.io"
|
||||
VERSION: ${{ gitea.ref_name }}
|
||||
|
||||
jobs:
|
||||
build-packages:
|
||||
@@ -35,7 +36,8 @@ jobs:
|
||||
steps:
|
||||
- name: Extract version
|
||||
run: |
|
||||
VERSION="${GITEA_REFNAME#releases/}
|
||||
VERSION="${VERSION#releases/}"
|
||||
echo "Exporting variable VERSION=$VERSION"
|
||||
echo "VERSION=$VERSION" >> $GITEA_OUTPUT
|
||||
echo "VERSION=$VERSION" >> $GITEA_ENV
|
||||
|
||||
@@ -61,6 +63,7 @@ jobs:
|
||||
- name: Compile binary
|
||||
if: matrix.goos == 'linux' || matrix.goos == 'freebsd' || matrix.goos == 'darwin'
|
||||
run: |-
|
||||
echo "Building binary version $VERSION"
|
||||
mkdir -p dist
|
||||
GOARCH=${{ matrix.goarch }} GOOS=${{ matrix.goos }}\
|
||||
go build -ldflags="-X 'repo.katenary.io/katenary/katenary/internal/generator.Version=$VERSION'" \
|
||||
|
@@ -9,6 +9,7 @@ env:
|
||||
REGISTRY: repo.katenary.io
|
||||
IMAGE_NAME: ${{ gitea.repository }}
|
||||
STORAGE_DRIVER: vfs
|
||||
VERSION: ${{ gitea.ref_name }}
|
||||
|
||||
jobs:
|
||||
build:
|
||||
@@ -19,7 +20,8 @@ jobs:
|
||||
steps:
|
||||
- name: Extract version
|
||||
run: |
|
||||
VERSION="${GITEA_REFNAME#releases/}
|
||||
VERSION="${VERSION#releases/}"
|
||||
echo "Exporting variable VERSION=$VERSION"
|
||||
echo "VERSION=$VERSION" >> $GITEA_OUTPUT
|
||||
echo "VERSION=$VERSION" >> $GITEA_ENV
|
||||
|
||||
@@ -42,6 +44,7 @@ jobs:
|
||||
|
||||
- name: Build and tag
|
||||
run: |-
|
||||
echo "Building image $REGISTRY/${IMAGE_NAME,,}:$VERSION / latest"
|
||||
buildah build --isolation=chroot --build-arg VERSION=$VERSION -t katenary -f ./oci/katenary/Containerfile .
|
||||
buildah tag katenary $REGISTRY/${IMAGE_NAME,,}:$VERSION
|
||||
buildah tag katenary $REGISTRY/${IMAGE_NAME,,}:latest
|
||||
|
@@ -3,6 +3,7 @@ package generator
|
||||
import (
|
||||
"regexp"
|
||||
"runtime/debug"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// Version is the version of katenary. It is set at compile time.
|
||||
@@ -14,8 +15,15 @@ var Version = "master" // changed at compile time
|
||||
func GetVersion() string {
|
||||
// try to get the semantic version from the Version variable (theorically set at compile time)
|
||||
if reg := regexp.MustCompile(`^v?\d+.\d+.\d+.*|^release-.*`); reg.MatchString(Version) {
|
||||
Version = strings.Replace(Version, "release-", "v", 1)
|
||||
if Version[0] != 'v' {
|
||||
Version = "v" + Version
|
||||
}
|
||||
return Version
|
||||
}
|
||||
if reg := regexp.MustCompile(`^releases/.*`); reg.MatchString(Version) {
|
||||
return strings.Replace(Version, "releases/", "v", 1)
|
||||
}
|
||||
|
||||
// OK... let's try to get the version from the build info
|
||||
// get the version from the build info (when installed with go install)
|
||||
|
@@ -6,29 +6,53 @@ import (
|
||||
)
|
||||
|
||||
func TestVersion(t *testing.T) {
|
||||
expected := "v1.0.0"
|
||||
|
||||
errorMessage := func(value, expected any) string {
|
||||
return "Expected version to be " + expected.(string) + ", got " + value.(string)
|
||||
}
|
||||
|
||||
// first, let's test the default behavior
|
||||
// when we compile from source, without setting the Version variable,
|
||||
|
||||
// by default, when we are developing, the Version variable is set to "master"
|
||||
// we build on "devel" branch
|
||||
v := GetVersion()
|
||||
// by default, the version comes from build info and it's a development version
|
||||
if !strings.Contains(v, "(devel)") {
|
||||
t.Errorf("Expected version to be set, got %s", v)
|
||||
errorMessage(v, "(devel)")
|
||||
}
|
||||
|
||||
// now, imagine we are on a release branch
|
||||
Version = "1.0.0"
|
||||
v = GetVersion()
|
||||
if !strings.Contains(v, "1.0.0") {
|
||||
t.Errorf("Expected version to be set, got %s", v)
|
||||
if !strings.Contains(v, expected) {
|
||||
errorMessage(v, expected)
|
||||
}
|
||||
// now, imagine we are on v1.0.0
|
||||
Version = "v1.0.0"
|
||||
v = GetVersion()
|
||||
if !strings.Contains(v, "v1.0.0") {
|
||||
t.Errorf("Expected version to be set, got %s", v)
|
||||
if !strings.Contains(v, expected) {
|
||||
errorMessage(v, expected)
|
||||
}
|
||||
// we can also compile a release branch
|
||||
Version = "release-1.0.0"
|
||||
v = GetVersion()
|
||||
if !strings.Contains(v, "release-1.0.0") {
|
||||
t.Errorf("Expected version to be set, got %s", v)
|
||||
if !strings.Contains(v, expected) {
|
||||
errorMessage(v, expected)
|
||||
}
|
||||
|
||||
// for releases-* tags
|
||||
Version = "release-1.0.0"
|
||||
v = GetVersion()
|
||||
if !strings.Contains(v, expected) {
|
||||
errorMessage(v, expected)
|
||||
}
|
||||
|
||||
// and for releases/* tags
|
||||
Version = "releases/1.0.0"
|
||||
v = GetVersion()
|
||||
if !strings.Contains(v, expected) {
|
||||
errorMessage(v, expected)
|
||||
}
|
||||
}
|
||||
|
@@ -1,5 +1,5 @@
|
||||
## BUILD
|
||||
GO_BUILD=go build -ldflags="-X 'repo.katenary.io/katenary/katenary/internal/generator.Version=$(VERSION)'" -trimpath -o $(OUTPUT) ./cmd/katenary
|
||||
GO_BUILD=go build -ldflags="-X 'katenary.io/internal/generator.Version=$(VERSION)'" -trimpath -o $(OUTPUT) ./cmd/katenary
|
||||
|
||||
# Simply build the binary for the current OS and architecture
|
||||
build: pull katenary
|
||||
|
@@ -45,8 +45,10 @@ builder-oci-image:
|
||||
@$(CTN) build -t go-builder:$(GOVERSION) ./oci/builder \
|
||||
--build-arg GOVERSION=$(GOVERSION) 1>/dev/null
|
||||
katenary-oci:
|
||||
$(CTN) build -f oci/katenary/Containerfile -t katenary:$(VERSION) \
|
||||
VERSION=$(VERSION) \
|
||||
VERSION=$${VERSION#releases/}; \
|
||||
$(CTN) build -f oci/katenary/Containerfile -t katenary:$$VERSION \
|
||||
--build-arg GOVERSION=$(GOVERSION) \
|
||||
--build-arg VERSION=$(VERSION) \
|
||||
./
|
||||
$(CTN) tag katenary:$(VERSION) katenary:latest
|
||||
$(CTN) tag katenary:$$VERSION katenary:latest
|
||||
|
@@ -13,7 +13,8 @@ COPY internal /go/src/repo.katenary.io/katenary/katenary/internal
|
||||
WORKDIR /go/src/repo.katenary.io/katenary/katenary
|
||||
ENV CGO_ENABLED=0
|
||||
RUN set -xe; \
|
||||
go build -ldflags="-X 'repo.katenary.io/katenary/katenary/internal/generator.Version=v${VERSION}'" -trimpath -o katenary ./cmd/katenary
|
||||
export VERSION=${VERSION#releases/}; \
|
||||
go build -ldflags="-X 'katenary.io/internal/generator.Version=v${VERSION}'" -trimpath -o katenary ./cmd/katenary
|
||||
|
||||
|
||||
FROM scratch
|
||||
|
Reference in New Issue
Block a user