Compare commits

...

7 Commits

Author SHA1 Message Date
RoyUP9
ea678a4d8c Fixed acceptance test agent image (#764) 2022-02-07 08:38:29 +02:00
Igor Gov
5b53252033 CI: test share module (#763) 2022-02-07 07:16:28 +02:00
Igor Gov
bfa275d08d Upload codecov report for develop and main branches (#761) 2022-02-06 21:08:52 +02:00
Igor Gov
0af1bc021d Fixing warning during release workflow (#760)
* Fixing warning during release workflow

Co-authored-by: Igor Gov <igor.govorov1@gmail.com>
2022-02-06 20:52:15 +02:00
Igor Gov
bd253e1ff7 Fix cli build param ver (#758)
Co-authored-by: Igor Gov <igor.govorov1@gmail.com>
2022-02-06 20:35:41 +02:00
gadotroee
379885845b Update release.yml (#756) 2022-02-06 15:19:30 +02:00
Igor Gov
ad6fb844aa Moving from Semver to major.patch versioning (#755)
* Moving from Semver to major.patch versions

* version check should work with new version forma

Co-authored-by: Igor Gov <igor.govorov1@gmail.com>
2022-02-06 15:01:36 +02:00
23 changed files with 297 additions and 105 deletions

View File

@@ -32,14 +32,15 @@ jobs:
id: condval
with:
cond: ${{ github.ref == 'refs/heads/main' }}
if_true: "minor"
if_false: "patch"
if_true: "stable"
if_false: "dev"
- name: Auto increment SemVer action
uses: MCKanpolat/auto-semver-action@1.0.5
- name: Auto Increment Ver Action
uses: docker://igorgov/auto-inc-ver:v2.0.0
id: versioning
with:
releaseType: ${{ steps.condval.outputs.value }}
mode: ${{ steps.condval.outputs.value }}
suffix: 'dev'
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Get version parameters
@@ -77,7 +78,7 @@ jobs:
labels: ${{ steps.meta.outputs.labels }}
build-args: |
TARGETARCH=${{ matrix.target }}
SEM_VER=${{ steps.versioning.outputs.version }}
VER=${{ steps.versioning.outputs.version }}
BUILD_TIMESTAMP=${{ steps.version_parameters.outputs.build_timestamp }}
GIT_BRANCH=${{ steps.version_parameters.outputs.branch }}
COMMIT_HASH=${{ github.sha }}
@@ -98,25 +99,28 @@ jobs:
- name: Check out the repo
uses: actions/checkout@v2
- name: Set up Cloud SDK
uses: google-github-actions/setup-gcloud@master
- id: 'auth'
uses: 'google-github-actions/auth@v0'
with:
service_account_key: ${{ secrets.GCR_JSON_KEY }}
export_default_credentials: true
credentials_json: '${{ secrets.GCR_JSON_KEY }}'
- name: 'Set up Cloud SDK'
uses: 'google-github-actions/setup-gcloud@v0'
- name: Determine versioning strategy
uses: haya14busa/action-cond@v1
id: condval
with:
cond: ${{ github.ref == 'refs/heads/main' }}
if_true: "minor"
if_false: "patch"
if_true: "stable"
if_false: "dev"
- name: Auto increment SemVer action
uses: MCKanpolat/auto-semver-action@1.0.5
- name: Auto Increment Ver Action
uses: docker://igorgov/auto-inc-ver:v2.0.0
id: versioning
with:
releaseType: ${{ steps.condval.outputs.value }}
mode: ${{ steps.condval.outputs.value }}
suffix: 'dev'
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Get version parameters
@@ -160,7 +164,7 @@ jobs:
labels: ${{ steps.meta.outputs.labels }}
build-args: |
TARGETARCH=${{ matrix.target }}
SEM_VER=${{ steps.versioning.outputs.version }}
VER=${{ steps.versioning.outputs.version }}
BUILD_TIMESTAMP=${{ steps.version_parameters.outputs.build_timestamp }}
GIT_BRANCH=${{ steps.version_parameters.outputs.branch }}
COMMIT_HASH=${{ github.sha }}
@@ -175,14 +179,15 @@ jobs:
id: condval
with:
cond: ${{ github.ref == 'refs/heads/main' }}
if_true: "minor"
if_false: "patch"
if_true: "stable"
if_false: "dev"
- name: Auto increment SemVer action
uses: MCKanpolat/auto-semver-action@1.0.5
- name: Auto Increment Ver Action
uses: docker://igorgov/auto-inc-ver:v2.0.0
id: versioning
with:
releaseType: ${{ steps.condval.outputs.value }}
mode: ${{ steps.condval.outputs.value }}
suffix: 'dev'
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Get version parameters
@@ -232,24 +237,28 @@ jobs:
- name: Check out the repo
uses: actions/checkout@v2
- name: Set up Cloud SDK
uses: google-github-actions/setup-gcloud@master
- id: 'auth'
uses: 'google-github-actions/auth@v0'
with:
service_account_key: ${{ secrets.GCR_JSON_KEY }}
export_default_credentials: true
credentials_json: '${{ secrets.GCR_JSON_KEY }}'
- uses: haya14busa/action-cond@v1
- name: 'Set up Cloud SDK'
uses: 'google-github-actions/setup-gcloud@v0'
- name: Determine versioning strategy
uses: haya14busa/action-cond@v1
id: condval
with:
cond: ${{ github.ref == 'refs/heads/main' }}
if_true: "minor"
if_false: "patch"
if_true: "stable"
if_false: "dev"
- name: Auto Increment Semver Action
uses: MCKanpolat/auto-semver-action@1.0.5
- name: Auto Increment Ver Action
uses: docker://igorgov/auto-inc-ver:v2.0.0
id: versioning
with:
releaseType: ${{ steps.condval.outputs.value }}
mode: ${{ steps.condval.outputs.value }}
suffix: 'dev'
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Get version parameters
@@ -260,7 +269,7 @@ jobs:
id: version_parameters
- name: Build and Push CLI
run: make push-cli SEM_VER='${{ steps.versioning.outputs.version }}' BUILD_TIMESTAMP='${{ steps.version_parameters.outputs.build_timestamp }}'
run: make push-cli VER='${{ steps.versioning.outputs.version }}' BUILD_TIMESTAMP='${{ steps.version_parameters.outputs.build_timestamp }}'
- name: Log the version into a .txt file
shell: bash

View File

@@ -5,32 +5,18 @@ on:
branches:
- 'develop'
- 'main'
push: # needed to upload test coverage report to codecov
branches:
- 'develop'
- 'main'
concurrency:
group: mizu-tests-validation-${{ github.ref }}
cancel-in-progress: true
jobs:
run-tests-cli:
name: CLI Tests
runs-on: ubuntu-latest
steps:
- name: Set up Go 1.16
uses: actions/setup-go@v2
with:
go-version: '^1.16'
- name: Check out code into the Go module directory
uses: actions/checkout@v2
- name: Test
run: make test-cli
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v2
run-tests-agent:
name: Agent Tests
run-unit-tests:
name: Unit Tests
runs-on: ubuntu-latest
steps:
- name: Set up Go 1.16
@@ -45,8 +31,15 @@ jobs:
run: |
sudo apt-get install libpcap-dev
- name: Test
- name: CLI Test
run: make test-cli
- name: Agent Test
run: make test-agent
- name: Shared Test
run: make test-shared
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v2

View File

@@ -67,7 +67,7 @@ COPY agent .
ARG COMMIT_HASH
ARG GIT_BRANCH
ARG BUILD_TIMESTAMP
ARG SEM_VER=0.0.0
ARG VER=0.0
WORKDIR /app/agent-build
@@ -75,7 +75,7 @@ RUN go build -ldflags="-extldflags=-static -s -w \
-X 'github.com/up9inc/mizu/agent/pkg/version.GitCommitHash=${COMMIT_HASH}' \
-X 'github.com/up9inc/mizu/agent/pkg/version.Branch=${GIT_BRANCH}' \
-X 'github.com/up9inc/mizu/agent/pkg/version.BuildTimestamp=${BUILD_TIMESTAMP}' \
-X 'github.com/up9inc/mizu/agent/pkg/version.SemVer=${SEM_VER}'" -o mizuagent .
-X 'github.com/up9inc/mizu/agent/pkg/version.Ver=${VER}'" -o mizuagent .
# Download Basenine executable, verify the sha1sum
ADD https://github.com/up9inc/basenine/releases/download/v0.4.13/basenine_linux_${GOARCH} ./basenine_linux_${GOARCH}

View File

@@ -19,7 +19,7 @@ help: ## This help.
TS_SUFFIX="$(shell date '+%s')"
GIT_BRANCH="$(shell git branch | grep \* | cut -d ' ' -f2 | tr '[:upper:]' '[:lower:]' | tr '/' '_')"
BUCKET_PATH=static.up9.io/mizu/$(GIT_BRANCH)
export SEM_VER?=0.0.0
export VER?=0.0
ui: ## Build UI.
@(cd ui; npm i ; npm run build; )
@@ -89,5 +89,8 @@ test-cli:
test-agent:
@echo "running agent tests"; cd agent && $(MAKE) test
test-shared:
@echo "running shared tests"; cd shared && $(MAKE) test
acceptance-test:
@echo "running acceptance tests"; cd acceptanceTests && $(MAKE) test

View File

@@ -71,7 +71,7 @@ func getApiServerUrl(port uint16) string {
func getDefaultCommandArgs() []string {
setFlag := "--set"
telemetry := "telemetry=false"
agentImage := "agent-image=gcr.io/up9-docker-hub/mizu/ci:0.0.0"
agentImage := "agent-image=gcr.io/up9-docker-hub/mizu/ci:0.0"
imagePullPolicy := "image-pull-policy=IfNotPresent"
headless := "headless=true"

View File

@@ -7,9 +7,9 @@ SERVER_NAME=mizu-keto
GIT_BRANCH=$(git branch | grep \* | cut -d ' ' -f2 | tr '[:upper:]' '[:lower:]')
DOCKER_REPO=$REPOSITORY/$SERVER_NAME/$GIT_BRANCH
SEM_VER=${SEM_VER=0.0.0}
VER=${VER=0.0}
DOCKER_TAGGED_BUILDS=("$DOCKER_REPO:latest" "$DOCKER_REPO:$SEM_VER")
DOCKER_TAGGED_BUILDS=("$DOCKER_REPO:latest" "$DOCKER_REPO:$VER")
if [ "$GIT_BRANCH" = 'develop' -o "$GIT_BRANCH" = 'master' -o "$GIT_BRANCH" = 'main' ]
then
@@ -19,7 +19,7 @@ fi
echo "building ${DOCKER_TAGGED_BUILDS[@]}"
DOCKER_TAGS_ARGS=$(echo ${DOCKER_TAGGED_BUILDS[@]/#/-t }) # "-t FIRST_TAG -t SECOND_TAG ..."
docker build $DOCKER_TAGS_ARGS --build-arg SEM_VER=${SEM_VER} --build-arg BUILD_TIMESTAMP=${BUILD_TIMESTAMP} --build-arg GIT_BRANCH=${GIT_BRANCH} --build-arg COMMIT_HASH=${COMMIT_HASH} .
docker build $DOCKER_TAGS_ARGS --build-arg VER=${VER} --build-arg BUILD_TIMESTAMP=${BUILD_TIMESTAMP} --build-arg GIT_BRANCH=${GIT_BRANCH} --build-arg COMMIT_HASH=${COMMIT_HASH} .
for DOCKER_TAG in "${DOCKER_TAGGED_BUILDS[@]}"
do

View File

@@ -7,9 +7,9 @@ SERVER_NAME=mizu-kratos
GIT_BRANCH=$(git branch | grep \* | cut -d ' ' -f2 | tr '[:upper:]' '[:lower:]')
DOCKER_REPO=$REPOSITORY/$SERVER_NAME/$GIT_BRANCH
SEM_VER=${SEM_VER=0.0.0}
VER=${VER=0.0.0}
DOCKER_TAGGED_BUILDS=("$DOCKER_REPO:latest" "$DOCKER_REPO:$SEM_VER")
DOCKER_TAGGED_BUILDS=("$DOCKER_REPO:latest" "$DOCKER_REPO:$VER")
if [ "$GIT_BRANCH" = 'develop' -o "$GIT_BRANCH" = 'master' -o "$GIT_BRANCH" = 'main' ]
then
@@ -19,7 +19,7 @@ fi
echo "building ${DOCKER_TAGGED_BUILDS[@]}"
DOCKER_TAGS_ARGS=$(echo ${DOCKER_TAGGED_BUILDS[@]/#/-t }) # "-t FIRST_TAG -t SECOND_TAG ..."
docker build $DOCKER_TAGS_ARGS --build-arg SEM_VER=${SEM_VER} --build-arg BUILD_TIMESTAMP=${BUILD_TIMESTAMP} --build-arg GIT_BRANCH=${GIT_BRANCH} --build-arg COMMIT_HASH=${COMMIT_HASH} .
docker build $DOCKER_TAGS_ARGS --build-arg VER=${VER} --build-arg BUILD_TIMESTAMP=${BUILD_TIMESTAMP} --build-arg GIT_BRANCH=${GIT_BRANCH} --build-arg COMMIT_HASH=${COMMIT_HASH} .
for DOCKER_TAG in "${DOCKER_TAGGED_BUILDS[@]}"
do

View File

@@ -9,6 +9,6 @@ import (
)
func GetVersion(c *gin.Context) {
resp := shared.VersionResponse{SemVer: version.SemVer}
resp := shared.VersionResponse{Ver: version.Ver}
c.JSON(http.StatusOK, resp)
}

View File

@@ -1,7 +1,7 @@
package version
var (
SemVer = "0.0.1"
Ver = "0.0.1"
Branch = "develop"
GitCommitHash = "" // this var is overridden using ldflags in makefile when building
BuildTimestamp = "" // this var is overridden using ldflags in makefile when building

View File

@@ -3,7 +3,7 @@ COMMIT_HASH=$(shell git rev-parse HEAD)
GIT_BRANCH=$(shell git branch --show-current | tr '[:upper:]' '[:lower:]')
GIT_VERSION=$(shell git branch --show-current | tr '[:upper:]' '[:lower:]')
BUILD_TIMESTAMP=$(shell date +%s)
export SEM_VER?=0.0.0
export VER?=0.0
.PHONY: help
.DEFAULT_GOAL := help
@@ -23,13 +23,13 @@ build: ## Build mizu CLI binary (select platform via GOOS / GOARCH env variables
-X 'github.com/up9inc/mizu/cli/mizu.Branch=$(GIT_BRANCH)' \
-X 'github.com/up9inc/mizu/cli/mizu.BuildTimestamp=$(BUILD_TIMESTAMP)' \
-X 'github.com/up9inc/mizu/cli/mizu.Platform=$(SUFFIX)' \
-X 'github.com/up9inc/mizu/cli/mizu.SemVer=$(SEM_VER)'" \
-X 'github.com/up9inc/mizu/cli/mizu.Ver=$(VER)'" \
-o bin/mizu_$(SUFFIX) mizu.go
(cd bin && shasum -a 256 mizu_${SUFFIX} > mizu_${SUFFIX}.sha256)
build-all: ## Build for all supported platforms.
@echo "Compiling for every OS and Platform"
@mkdir -p bin && sed s/_SEM_VER_/$(SEM_VER)/g README.md.TEMPLATE > bin/README.md
@mkdir -p bin && sed s/_VER_/$(VER)/g README.md.TEMPLATE > bin/README.md
@$(MAKE) build GOOS=linux GOARCH=amd64
@$(MAKE) build GOOS=linux GOARCH=arm64
@$(MAKE) build GOOS=darwin GOARCH=amd64

View File

@@ -1,31 +1,31 @@
# Mizu release _SEM_VER_
# Mizu release _VER_
Full changelog for stable release see in [docs](https://github.com/up9inc/mizu/blob/main/docs/CHANGELOG.md)
## Download Mizu for your platform
**Mac** (x86-64/Intel)
```
curl -Lo mizu https://github.com/up9inc/mizu/releases/download/_SEM_VER_/mizu_darwin_amd64 && chmod 755 mizu
curl -Lo mizu https://github.com/up9inc/mizu/releases/download/_VER_/mizu_darwin_amd64 && chmod 755 mizu
```
**Mac** (AArch64/Apple M1 silicon)
```
curl -Lo mizu https://github.com/up9inc/mizu/releases/download/_SEM_VER_/mizu_darwin_arm64 && chmod 755 mizu
curl -Lo mizu https://github.com/up9inc/mizu/releases/download/_VER_/mizu_darwin_arm64 && chmod 755 mizu
```
**Linux** (x86-64)
```
curl -Lo mizu https://github.com/up9inc/mizu/releases/download/_SEM_VER_/mizu_linux_amd64 && chmod 755 mizu
curl -Lo mizu https://github.com/up9inc/mizu/releases/download/_VER_/mizu_linux_amd64 && chmod 755 mizu
```
**Linux** (AArch64)
```
curl -Lo mizu https://github.com/up9inc/mizu/releases/download/_SEM_VER_/mizu_linux_arm64 && chmod 755 mizu
curl -Lo mizu https://github.com/up9inc/mizu/releases/download/_VER_/mizu_linux_arm64 && chmod 755 mizu
```
**Windows** (x86-64)
```
curl -LO https://github.com/up9inc/mizu/releases/download/_SEM_VER_/mizu.exe
curl -LO https://github.com/up9inc/mizu/releases/download/_VER_/mizu.exe
```
### Checksums

View File

@@ -143,5 +143,5 @@ func (provider *Provider) GetVersion() (string, error) {
return "", err
}
return versionResponse.SemVer, nil
return versionResponse.Ver, nil
}

View File

@@ -22,11 +22,11 @@ var versionCmd = &cobra.Command{
if config.Config.Version.DebugInfo {
timeStampInt, _ := strconv.ParseInt(mizu.BuildTimestamp, 10, 0)
logger.Log.Infof("Version: %s \nBranch: %s (%s)", mizu.SemVer, mizu.Branch, mizu.GitCommitHash)
logger.Log.Infof("Version: %s \nBranch: %s (%s)", mizu.Ver, mizu.Branch, mizu.GitCommitHash)
logger.Log.Infof("Build Time: %s (%s)", mizu.BuildTimestamp, time.Unix(timeStampInt, 0))
} else {
logger.Log.Infof("Version: %s (%s)", mizu.SemVer, mizu.Branch)
logger.Log.Infof("Version: %s (%s)", mizu.Ver, mizu.Branch)
}
return nil
},

View File

@@ -54,7 +54,7 @@ func (config *ConfigStruct) validate() error {
func (config *ConfigStruct) SetDefaults() {
config.KratosImage = shared.KratosImageDefault
config.KetoImage = shared.KetoImageDefault
config.AgentImage = fmt.Sprintf("%s:%s", shared.MizuAgentImageRepo, mizu.SemVer)
config.AgentImage = fmt.Sprintf("%s:%s", shared.MizuAgentImageRepo, mizu.Ver)
config.ConfigFilePath = path.Join(mizu.GetMizuFolderPath(), "config.yaml")
}

View File

@@ -6,7 +6,7 @@ import (
)
var (
SemVer = "0.0.1"
Ver = "0.0"
Branch = "develop"
GitCommitHash = "" // this var is overridden using ldflags in makefile when building
BuildTimestamp = "" // this var is overridden using ldflags in makefile when building

View File

@@ -12,31 +12,28 @@ import (
"github.com/up9inc/mizu/cli/apiserver"
"github.com/up9inc/mizu/cli/mizu"
"github.com/up9inc/mizu/cli/pkg/version"
"github.com/up9inc/mizu/shared/logger"
"github.com/google/go-github/v37/github"
"github.com/up9inc/mizu/cli/uiUtils"
"github.com/up9inc/mizu/shared/semver"
)
func CheckVersionCompatibility(apiServerProvider *apiserver.Provider) (bool, error) {
apiSemVer, err := apiServerProvider.GetVersion()
apiVer, err := apiServerProvider.GetVersion()
if err != nil {
return false, err
}
if !semver.SemVersion(apiSemVer).IsValid() {
logger.Log.Errorf(uiUtils.Red, fmt.Sprintf("api version (%s) is not a valid SemVer", apiSemVer))
if equals, err := version.AreEquals(apiVer, mizu.Ver); err != nil {
return false, fmt.Errorf("Failed to check version equality between mizuVer: %s and apiVer: %s, error: %w", mizu.Ver, apiVer, err)
} else if !equals {
logger.Log.Errorf(uiUtils.Red, fmt.Sprintf("cli version (%s) is not compatible with api version (%s)", mizu.Ver, apiVer))
return false, nil
}
if semver.SemVersion(apiSemVer).Major() == semver.SemVersion(mizu.SemVer).Major() &&
semver.SemVersion(apiSemVer).Minor() == semver.SemVersion(mizu.SemVer).Minor() {
return true, nil
}
logger.Log.Errorf(uiUtils.Red, fmt.Sprintf("cli version (%s) is not compatible with api version (%s)", mizu.SemVer, apiSemVer))
return false, nil
logger.Log.Debug("cli version %s is compatible with api version %s", mizu.Ver, apiVer)
return true, nil
}
func CheckNewerVersion(versionChan chan string) {
@@ -84,24 +81,23 @@ func CheckNewerVersion(versionChan chan string) {
gitHubVersion := string(data)
gitHubVersion = gitHubVersion[:len(gitHubVersion)-1]
gitHubVersionSemVer := semver.SemVersion(gitHubVersion)
currentSemVer := semver.SemVersion(mizu.SemVer)
if !gitHubVersionSemVer.IsValid() || !currentSemVer.IsValid() {
logger.Log.Debugf("[ERROR] Semver version is not valid, github version %v, current version %v", gitHubVersion, currentSemVer)
greater, err := version.GreaterThen(gitHubVersion, mizu.Ver)
if err != nil {
logger.Log.Debugf("[ERROR] Ver version is not valid, github version %v, current version %v", gitHubVersion, mizu.Ver)
versionChan <- ""
return
}
logger.Log.Debugf("Finished version validation, github version %v, current version %v, took %v", gitHubVersion, currentSemVer, time.Since(start))
logger.Log.Debugf("Finished version validation, github version %v, current version %v, took %v", gitHubVersion, mizu.Ver, time.Since(start))
if gitHubVersionSemVer.GreaterThan(currentSemVer) {
if greater {
var downloadMessage string
if runtime.GOOS == "windows" {
downloadMessage = fmt.Sprintf("curl -LO %v/mizu.exe", strings.Replace(*latestRelease.HTMLURL, "tag", "download", 1))
} else {
downloadMessage = fmt.Sprintf("curl -Lo mizu %v/mizu_%s_%s && chmod 755 mizu", strings.Replace(*latestRelease.HTMLURL, "tag", "download", 1), runtime.GOOS, runtime.GOARCH)
}
versionChan <- fmt.Sprintf("Update available! %v -> %v (%s)", mizu.SemVer, gitHubVersion, downloadMessage)
versionChan <- fmt.Sprintf("Update available! %v -> %v (%s)", mizu.Ver, gitHubVersion, downloadMessage)
} else {
versionChan <- ""
}

View File

@@ -0,0 +1,85 @@
package version
import (
"fmt"
"regexp"
"strconv"
)
type Version struct {
Major int
Patch int
Incremental int
}
func Parse(ver string) (*Version, error) {
re := regexp.MustCompile(`^(\d+)\.(\d+)(?:-\w+(\d+))?$`)
match := re.FindStringSubmatch(ver)
if len(match) != 4 {
return nil, fmt.Errorf("invalid format expected <major>.<patch>(-<suffix><incremental>)? %s,", ver)
}
major, err := strconv.Atoi(match[1])
if err != nil {
return nil, fmt.Errorf("error parsing major int: %s, err %w", match[1], err)
}
patch, err := strconv.Atoi(match[2])
if err != nil {
return nil, fmt.Errorf("error parsing patch int: %s, err %w", match[2], err)
}
if match[3] == "" {
return &Version{Major: major, Patch: patch, Incremental: -1}, nil
}
inc, err := strconv.Atoi(match[3])
if err != nil {
return nil, fmt.Errorf("Error parsing incremental int: %s, err %w", match[3], err)
}
return &Version{Major: major, Patch: patch, Incremental: inc}, nil
}
func AreEquals(first string, second string) (bool, error) {
firstVer, err := Parse(first)
if err != nil {
return false, fmt.Errorf("Failed parsing fist version: %s, error: %w", first, err)
}
secondVer, err := Parse(second)
if err != nil {
return false, fmt.Errorf("Failed parsing second version: %s, error: %w", second, err)
}
return *firstVer == *secondVer, nil
}
func GreaterThen(first string, second string) (bool, error) {
firstVer, err := Parse(first)
if err != nil {
return false, fmt.Errorf("Failed parsing fist version: %s, error: %w", first, err)
}
secondVer, err := Parse(second)
if err != nil {
return false, fmt.Errorf("Failed parsing second version: %s, error: %w", second, err)
}
if firstVer.Major > secondVer.Major {
return true, nil
} else if firstVer.Major < secondVer.Major {
return false, nil
}
if firstVer.Patch > secondVer.Patch {
return true, nil
} else if firstVer.Patch < secondVer.Patch {
return false, nil
}
if firstVer.Incremental == -1 && secondVer.Incremental > -1 {
return true, nil
}
if firstVer.Incremental > secondVer.Incremental {
return true, nil
}
return false, nil
}

View File

@@ -0,0 +1,104 @@
package version
import (
"testing"
)
func TestEqualsEquality(t *testing.T) {
tests := []struct {
Name string
First string
Second string
}{
{Name: "major", First: "1.0", Second: "1.0"},
{Name: "patch", First: "1.1", Second: "1.1"},
{Name: "incremental", First: "1.0-dev0", Second: "1.0-dev0"},
}
for _, test := range tests {
t.Run(test.Name, func(t *testing.T) {
if equal, _ := AreEquals(test.First, test.Second); !equal {
t.Fatalf("Expected %s == %s", test.First, test.Second)
}
})
}
}
func TestEqualsInvalidVersion(t *testing.T) {
tests := []struct {
Name string
First string
Second string
}{
{Name: "first semver", First: "1.0.0", Second: "1.0"},
{Name: "second semver", First: "1.1", Second: "1.1.0"},
{Name: "incremental invalid", First: "1.0-dev0de", Second: "1.0-dev0"},
}
for _, test := range tests {
t.Run(test.Name, func(t *testing.T) {
if _, err := AreEquals(test.First, test.Second); err == nil {
t.Fatalf("Expected error")
}
})
}
}
func TestEqualsNoEquality(t *testing.T) {
tests := []struct {
Name string
First string
Second string
}{
{Name: "major", First: "1.0", Second: "2.0"},
{Name: "patch", First: "1.0", Second: "1.1"},
{Name: "incremental", First: "1.0-dev2", Second: "1.0-dev3"},
}
for _, test := range tests {
t.Run(test.Name, func(t *testing.T) {
if equal, _ := AreEquals(test.First, test.Second); equal {
t.Fatalf("Expected %s != %s", test.First, test.Second)
}
})
}
}
func TestGreaterThenGreater(t *testing.T) {
tests := []struct {
Name string
First string
Second string
}{
{Name: "major", First: "2.0", Second: "1.0"},
{Name: "patch", First: "1.1", Second: "1.0"},
{Name: "incremental", First: "1.0-dev1", Second: "1.0-dev0"},
{Name: "major vs incremental", First: "1.0", Second: "1.0-dev1"},
}
for _, test := range tests {
t.Run(test.Name, func(t *testing.T) {
if greater, _ := GreaterThen(test.First, test.Second); !greater {
t.Fatalf("Expected %s > %s", test.First, test.Second)
}
})
}
}
func TestGreaterThenLessThen(t *testing.T) {
tests := []struct {
Name string
First string
Second string
}{
{Name: "major", First: "1.0", Second: "2.0"},
{Name: "major equals", First: "1.0", Second: "1.0"},
{Name: "patch", First: "1.0", Second: "1.1"},
{Name: "patch equals", First: "1.1", Second: "1.1"},
{Name: "incremental", First: "1.0-dev0", Second: "1.0-dev1"},
{Name: "incremental equals", First: "1.0-dev0", Second: "1.0-dev0"},
}
for _, test := range tests {
t.Run(test.Name, func(t *testing.T) {
if greater, _ := GreaterThen(test.First, test.Second); greater {
t.Fatalf("Expected %s < %s", test.First, test.Second)
}
})
}
}

View File

@@ -83,7 +83,7 @@ func sendTelemetry(argsMap map[string]interface{}) error {
argsMap["component"] = "mizu_cli"
argsMap["buildTimestamp"] = mizu.BuildTimestamp
argsMap["branch"] = mizu.Branch
argsMap["version"] = mizu.SemVer
argsMap["version"] = mizu.Ver
argsMap["platform"] = mizu.Platform
if machineId, err := machineid.ProtectedID("mizu"); err == nil {

View File

@@ -7,9 +7,9 @@ SERVER_NAME=mizu
GIT_BRANCH=ci
DOCKER_REPO=$REPOSITORY/$SERVER_NAME/$GIT_BRANCH
SEM_VER=${SEM_VER=0.0.0}
VER=${VER=0.0}
DOCKER_TAGGED_BUILD="$DOCKER_REPO:$SEM_VER"
DOCKER_TAGGED_BUILD="$DOCKER_REPO:$VER"
echo "building $DOCKER_TAGGED_BUILD"
docker build -t ${DOCKER_TAGGED_BUILD} --build-arg SEM_VER=${SEM_VER} --build-arg BUILD_TIMESTAMP=${BUILD_TIMESTAMP} --build-arg GIT_BRANCH=${GIT_BRANCH} --build-arg COMMIT_HASH=${COMMIT_HASH} .
docker build -t ${DOCKER_TAGGED_BUILD} --build-arg VER=${VER} --build-arg BUILD_TIMESTAMP=${BUILD_TIMESTAMP} --build-arg GIT_BRANCH=${GIT_BRANCH} --build-arg COMMIT_HASH=${COMMIT_HASH} .

View File

@@ -7,9 +7,9 @@ SERVER_NAME=mizu
GIT_BRANCH=$(git branch | grep \* | cut -d ' ' -f2 | tr '[:upper:]' '[:lower:]')
DOCKER_REPO=$REPOSITORY/$SERVER_NAME/$GIT_BRANCH
SEM_VER=${SEM_VER=0.0.0}
VER=${VER=0.0}
DOCKER_TAGGED_BUILDS=("$DOCKER_REPO:latest" "$DOCKER_REPO:$SEM_VER")
DOCKER_TAGGED_BUILDS=("$DOCKER_REPO:latest" "$DOCKER_REPO:$VER")
if [ "$GIT_BRANCH" = 'develop' -o "$GIT_BRANCH" = 'master' -o "$GIT_BRANCH" = 'main' ]
then
@@ -19,7 +19,7 @@ fi
echo "building ${DOCKER_TAGGED_BUILDS[@]}"
DOCKER_TAGS_ARGS=$(echo ${DOCKER_TAGGED_BUILDS[@]/#/-t }) # "-t FIRST_TAG -t SECOND_TAG ..."
docker build $DOCKER_TAGS_ARGS --build-arg SEM_VER=${SEM_VER} --build-arg BUILD_TIMESTAMP=${BUILD_TIMESTAMP} --build-arg GIT_BRANCH=${GIT_BRANCH} --build-arg COMMIT_HASH=${COMMIT_HASH} .
docker build $DOCKER_TAGS_ARGS --build-arg VER=${VER} --build-arg BUILD_TIMESTAMP=${BUILD_TIMESTAMP} --build-arg GIT_BRANCH=${GIT_BRANCH} --build-arg COMMIT_HASH=${COMMIT_HASH} .
for DOCKER_TAG in "${DOCKER_TAGGED_BUILDS[@]}"
do

2
shared/Makefile Normal file
View File

@@ -0,0 +1,2 @@
test: ## Run shared tests.
@go test ./... -coverpkg=./... -race -coverprofile=coverage.out -covermode=atomic

View File

@@ -135,7 +135,7 @@ type HealthResponse struct {
}
type VersionResponse struct {
SemVer string `json:"semver"`
Ver string `json:"ver"`
}
type RulesPolicy struct {