mirror of
https://github.com/lukaszraczylo/semver-generator.git
synced 2026-06-18 01:41:19 +00:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
4451f4b9b5
|
|||
| 74b11f30c9 | |||
|
3a33815ea0
|
|||
|
5878e650f7
|
|||
|
559ed4ff59
|
|||
|
93ea4e6365
|
|||
|
960207e467
|
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: Bug report
|
||||||
|
about: Create a report to help us improve
|
||||||
|
title: ''
|
||||||
|
labels: bug, to be confirmed
|
||||||
|
assignees: lukaszraczylo
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Describe the bug**
|
||||||
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
|
**Output with debug**
|
||||||
|
[ paste output of the command with `-d` flag here ]
|
||||||
|
|
||||||
|
**Expected behavior**
|
||||||
|
A clear and concise description of what you expected to happen.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context about the problem here.
|
||||||
@@ -126,7 +126,11 @@ jobs:
|
|||||||
- name: Prepare for push
|
- name: Prepare for push
|
||||||
id: prep
|
id: prep
|
||||||
run: |
|
run: |
|
||||||
TAGS="${{ needs.prepare.outputs.DOCKER_IMAGE }}:${{ needs.prepare.outputs.GITHUB_SHA }},${{ needs.prepare.outputs.DOCKER_IMAGE }}:${{ needs.prepare.outputs.RELEASE_VERSION }},${{ needs.prepare.outputs.DOCKER_IMAGE }}:latest"
|
if [ -z "${{ needs.prepare.outputs.RELEASE_VERSION }}" ]; then
|
||||||
|
TAGS="${{ needs.prepare.outputs.DOCKER_IMAGE }}:${{ needs.prepare.outputs.GITHUB_SHA }},${{ needs.prepare.outputs.DOCKER_IMAGE }}:latest"
|
||||||
|
else
|
||||||
|
TAGS="${{ needs.prepare.outputs.DOCKER_IMAGE }}:${{ needs.prepare.outputs.GITHUB_SHA }},${{ needs.prepare.outputs.DOCKER_IMAGE }}:${{ needs.prepare.outputs.RELEASE_VERSION }},${{ needs.prepare.outputs.DOCKER_IMAGE }}:latest"
|
||||||
|
fi
|
||||||
echo ::set-output name=tags::${TAGS}
|
echo ::set-output name=tags::${TAGS}
|
||||||
BRANCH=$(echo ${GITHUB_REF##*/} | tr '[A-Z]' '[a-z]')
|
BRANCH=$(echo ${GITHUB_REF##*/} | tr '[A-Z]' '[a-z]')
|
||||||
LABELS="org.opencontainers.image.revision=${{ needs.prepare.outputs.GITHUB_SHA }}"
|
LABELS="org.opencontainers.image.revision=${{ needs.prepare.outputs.GITHUB_SHA }}"
|
||||||
@@ -197,14 +201,15 @@ jobs:
|
|||||||
# body_path: .release_notes
|
# body_path: .release_notes
|
||||||
# draft: false
|
# draft: false
|
||||||
prerelease: ${{ github.ref != 'refs/heads/master' && github.ref != 'refs/heads/main' }}
|
prerelease: ${{ github.ref != 'refs/heads/master' && github.ref != 'refs/heads/main' }}
|
||||||
# - name: Delete previous v1 release asset
|
- name: Delete previous v1 release asset
|
||||||
# uses: mknejp/delete-release-assets@v1
|
uses: mknejp/delete-release-assets@v1
|
||||||
# with:
|
if: ${{ github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main' }}
|
||||||
# token: ${{ github.token }}
|
with:
|
||||||
# fail-if-no-assets: false
|
token: ${{ github.token }}
|
||||||
# fail-if-no-release: false
|
fail-if-no-assets: false
|
||||||
# tag: v1
|
fail-if-no-release: false
|
||||||
# assets: 'semver-gen-*'
|
tag: v1
|
||||||
|
assets: 'semver-gen-*'
|
||||||
- name: Create Release V1
|
- name: Create Release V1
|
||||||
id: create_release_global
|
id: create_release_global
|
||||||
uses: marvinpinto/action-automatic-releases@latest
|
uses: marvinpinto/action-automatic-releases@latest
|
||||||
|
|||||||
@@ -1,15 +1,36 @@
|
|||||||
LOCAL_VERSION?=$(shell semver-gen generate -l -c config-release.yaml | sed -e 's|SEMVER ||g')
|
LOCAL_VERSION?=""
|
||||||
|
CI_RUN?=false
|
||||||
|
ADDITIONAL_BUILD_FLAGS=""
|
||||||
|
|
||||||
all: build
|
ifeq ($(CI_RUN), true)
|
||||||
|
ADDITIONAL_BUILD_FLAGS="-test.short"
|
||||||
|
endif
|
||||||
|
|
||||||
build:
|
ifneq ($(shell which semver-gen), "")
|
||||||
|
LOCAL_VERSION="0.0.0-dev"
|
||||||
|
else
|
||||||
|
LOCAL_VERSION=$(shell semver-gen generate -l -c config-release.yaml | sed -e 's|SEMVER ||g')
|
||||||
|
endif
|
||||||
|
|
||||||
|
.PHONY: help
|
||||||
|
help: ## display this help
|
||||||
|
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n\nTargets:\n"} /^[a-zA-Z0-9_-]+:.*?##/ { printf " \033[36m%-20s\033[0m %s\n", $$1, $$2 }' $(MAKEFILE_LIST)
|
||||||
|
|
||||||
|
.PHONY: all
|
||||||
|
all: build ## Build all targets
|
||||||
|
|
||||||
|
.PHONY: build
|
||||||
|
build: ## Build binary
|
||||||
go build -o semver-gen -ldflags="-s -w -X main.PKG_VERSION=${LOCAL_VERSION}" *.go
|
go build -o semver-gen -ldflags="-s -w -X main.PKG_VERSION=${LOCAL_VERSION}" *.go
|
||||||
|
|
||||||
run: build
|
# .PHONY: run
|
||||||
@./semver-gen
|
# run: build ## Build binary and execute it
|
||||||
|
# @./semver-gen
|
||||||
|
|
||||||
test:
|
.PHONY: test
|
||||||
@go test ./... -v -race -cover -coverprofile=coverage.out
|
test: ## Run whole test suite
|
||||||
|
@go test ./... $(ADDITIONAL_BUILD_FLAGS) -v -race -cover -coverprofile=coverage.out
|
||||||
|
|
||||||
update:
|
.PHONY: update
|
||||||
|
update: ## Update all dependencies and sub-packages
|
||||||
@go get -u ./...
|
@go get -u ./...
|
||||||
@@ -102,7 +102,6 @@ func checkLatestRelease() (string, bool) {
|
|||||||
fmt.Println("Query error >>", err)
|
fmt.Println("Query error >>", err)
|
||||||
return "", false
|
return "", false
|
||||||
}
|
}
|
||||||
fmt.Println(result)
|
|
||||||
result = gjson.Get(result, "repository.releases.nodes.0.tag.name").String()
|
result = gjson.Get(result, "repository.releases.nodes.0.tag.name").String()
|
||||||
if result == "v1" {
|
if result == "v1" {
|
||||||
result = gjson.Get(result, "repository.releases.nodes.1.tag.name").String()
|
result = gjson.Get(result, "repository.releases.nodes.1.tag.name").String()
|
||||||
|
|||||||
@@ -26,6 +26,9 @@ func Test_checkLatestRelease(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func Test_updatePackage(t *testing.T) {
|
func Test_updatePackage(t *testing.T) {
|
||||||
|
if testing.Short() {
|
||||||
|
t.Skip("Skipping test in short / CI mode")
|
||||||
|
}
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
want bool
|
want bool
|
||||||
|
|||||||
+11
-6
@@ -55,6 +55,7 @@ type Force struct {
|
|||||||
Major int
|
Major int
|
||||||
Commit string
|
Commit string
|
||||||
Existing bool
|
Existing bool
|
||||||
|
Strict bool
|
||||||
}
|
}
|
||||||
|
|
||||||
type SemVer struct {
|
type SemVer struct {
|
||||||
@@ -115,9 +116,14 @@ func debugPrint(content string) {
|
|||||||
|
|
||||||
var extractNumber = regexp.MustCompile("[0-9]+")
|
var extractNumber = regexp.MustCompile("[0-9]+")
|
||||||
|
|
||||||
func parseExistingSemver(tagName string) (semanticVersion SemVer) {
|
func parseExistingSemver(tagName string, currentSemver SemVer) (semanticVersion SemVer) {
|
||||||
|
debugPrint(fmt.Sprintln("Parsing existing semver:", tagName))
|
||||||
var tagNameParts []string
|
var tagNameParts []string
|
||||||
tagNameParts = strings.Split(tagName, ".")
|
tagNameParts = strings.Split(tagName, ".")
|
||||||
|
if len(tagNameParts) < 3 {
|
||||||
|
debugPrint("Unable to parse incompatible semver ( non x.y.z )")
|
||||||
|
return currentSemver
|
||||||
|
}
|
||||||
semanticVersion.Major, _ = strconv.Atoi(extractNumber.FindAllString(tagNameParts[0], -1)[0])
|
semanticVersion.Major, _ = strconv.Atoi(extractNumber.FindAllString(tagNameParts[0], -1)[0])
|
||||||
semanticVersion.Minor, _ = strconv.Atoi(extractNumber.FindAllString(tagNameParts[1], -1)[0])
|
semanticVersion.Minor, _ = strconv.Atoi(extractNumber.FindAllString(tagNameParts[1], -1)[0])
|
||||||
semanticVersion.Patch, _ = strconv.Atoi(extractNumber.FindAllString(tagNameParts[2], -1)[0])
|
semanticVersion.Patch, _ = strconv.Atoi(extractNumber.FindAllString(tagNameParts[2], -1)[0])
|
||||||
@@ -134,13 +140,13 @@ func (s *Setup) CalculateSemver() SemVer {
|
|||||||
for _, tagHash := range s.Tags {
|
for _, tagHash := range s.Tags {
|
||||||
if commit.Hash == tagHash.Hash {
|
if commit.Hash == tagHash.Hash {
|
||||||
debugPrint(fmt.Sprintln("Found existing tag:", tagHash.Name, "related to", commit.Message))
|
debugPrint(fmt.Sprintln("Found existing tag:", tagHash.Name, "related to", commit.Message))
|
||||||
s.Semver = parseExistingSemver(tagHash.Name)
|
s.Semver = parseExistingSemver(tagHash.Name, s.Semver)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if !params.varStrict {
|
if !params.varStrict && !s.Force.Strict {
|
||||||
s.Semver.Patch++
|
s.Semver.Patch++
|
||||||
debugPrint(fmt.Sprintln("Incrementing patch (DEFAULT) on ", strings.TrimSuffix(commit.Message, "\n"), "| Semver:", s.getSemver()))
|
debugPrint(fmt.Sprintln("Incrementing patch (DEFAULT) on ", strings.TrimSuffix(commit.Message, "\n"), "| Semver:", s.getSemver()))
|
||||||
}
|
}
|
||||||
@@ -321,8 +327,7 @@ func main() {
|
|||||||
if repo.Generate || params.varGenerateInTest {
|
if repo.Generate || params.varGenerateInTest {
|
||||||
err := repo.ReadConfig(repo.LocalConfigFile)
|
err := repo.ReadConfig(repo.LocalConfigFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("Unable to find config file", repo.LocalConfigFile)
|
fmt.Println("Unable to find config file semver.yaml. Using defaults and flags.", repo.LocalConfigFile)
|
||||||
os.Exit(1)
|
|
||||||
}
|
}
|
||||||
err = repo.Prepare()
|
err = repo.Prepare()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -330,7 +335,7 @@ func main() {
|
|||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
repo.ListCommits()
|
repo.ListCommits()
|
||||||
if params.varExisting {
|
if params.varExisting || repo.Force.Existing {
|
||||||
repo.ListExistingTags()
|
repo.ListExistingTags()
|
||||||
}
|
}
|
||||||
repo.ForcedVersioning()
|
repo.ForcedVersioning()
|
||||||
|
|||||||
+5
-1
@@ -569,7 +569,11 @@ func (suite *Tests) Test_parseExistingSemver() {
|
|||||||
}
|
}
|
||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
suite.T().Run(tt.name, func(t *testing.T) {
|
suite.T().Run(tt.name, func(t *testing.T) {
|
||||||
got := parseExistingSemver(tt.args.tagName)
|
got := parseExistingSemver(tt.args.tagName, SemVer{
|
||||||
|
Major: 1,
|
||||||
|
Minor: 1,
|
||||||
|
Patch: 1,
|
||||||
|
})
|
||||||
assert.Equal(tt.wantSemanticVersion.Major, got.Major, "Unexpected MAJOR semver result in "+tt.name)
|
assert.Equal(tt.wantSemanticVersion.Major, got.Major, "Unexpected MAJOR semver result in "+tt.name)
|
||||||
assert.Equal(tt.wantSemanticVersion.Minor, got.Minor, "Unexpected MINOR semver result in "+tt.name)
|
assert.Equal(tt.wantSemanticVersion.Minor, got.Minor, "Unexpected MINOR semver result in "+tt.name)
|
||||||
assert.Equal(tt.wantSemanticVersion.Patch, got.Patch, "Unexpected PATCH semver result in "+tt.name)
|
assert.Equal(tt.wantSemanticVersion.Patch, got.Patch, "Unexpected PATCH semver result in "+tt.name)
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ force:
|
|||||||
major: 1
|
major: 1
|
||||||
minor: 4
|
minor: 4
|
||||||
existing: true
|
existing: true
|
||||||
|
strict: false
|
||||||
|
commit: 960207e4677476ad31a9f389f74eaf9f33d49613
|
||||||
wording:
|
wording:
|
||||||
patch:
|
patch:
|
||||||
- update
|
- update
|
||||||
|
|||||||
+2
-1
@@ -1,7 +1,8 @@
|
|||||||
version: 1
|
version: 1
|
||||||
force:
|
force:
|
||||||
major: 1
|
major: 1
|
||||||
existing: true
|
existing: false
|
||||||
|
strict: false
|
||||||
wording:
|
wording:
|
||||||
patch:
|
patch:
|
||||||
- update
|
- update
|
||||||
|
|||||||
Reference in New Issue
Block a user