You've already forked go-semantic-release
Merge pull request #19 from Nightapes/fix_release_version_calculation
Fix release version calculation
This commit is contained in:
1
.github/workflows/main.yml
vendored
1
.github/workflows/main.yml
vendored
@@ -30,6 +30,7 @@ jobs:
|
|||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
run: |
|
run: |
|
||||||
go build -o build/go-semantic-release-temp ./cmd/go-semantic-release/
|
go build -o build/go-semantic-release-temp ./cmd/go-semantic-release/
|
||||||
|
./build/go-semantic-release-temp next --no-cache --loglevel trace
|
||||||
go build -o build/go-semantic-release -ldflags "-w -s --X main.version=`./build/go-semantic-release-temp next`" ./cmd/go-semantic-release/
|
go build -o build/go-semantic-release -ldflags "-w -s --X main.version=`./build/go-semantic-release-temp next`" ./cmd/go-semantic-release/
|
||||||
GOOS=windows GOARCH=386 go build -o build/go-semantic-release.exe -ldflags "-w -s -X main.version=`./build/go-semantic-release-temp next`" ./cmd/go-semantic-release/
|
GOOS=windows GOARCH=386 go build -o build/go-semantic-release.exe -ldflags "-w -s -X main.version=`./build/go-semantic-release-temp next`" ./cmd/go-semantic-release/
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ const ANGULAR = "angular"
|
|||||||
|
|
||||||
func newAngular() *angular {
|
func newAngular() *angular {
|
||||||
return &angular{
|
return &angular{
|
||||||
regex: `^(TAG)(?:\((.*)\))?: (.*)$`,
|
regex: `^(TAG)(?:\((.*)\))?: (.*)`,
|
||||||
log: log.WithField("analyzer", ANGULAR),
|
log: log.WithField("analyzer", ANGULAR),
|
||||||
rules: []Rule{
|
rules: []Rule{
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -49,6 +49,11 @@ func (c *Calculator) CalculateNewVersion(commits map[shared.Release][]shared.Ana
|
|||||||
}
|
}
|
||||||
case "release":
|
case "release":
|
||||||
if !firstRelease {
|
if !firstRelease {
|
||||||
|
if lastVersion.Prerelease() != "" {
|
||||||
|
newVersion, _ := lastVersion.SetPrerelease("")
|
||||||
|
return newVersion
|
||||||
|
}
|
||||||
|
|
||||||
if len(commits["major"]) > 0 {
|
if len(commits["major"]) > 0 {
|
||||||
return lastVersion.IncMajor()
|
return lastVersion.IncMajor()
|
||||||
} else if len(commits["minor"]) > 0 {
|
} else if len(commits["minor"]) > 0 {
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ func GetCIProvider(gitUtil *gitutil.GitUtil, envs map[string]string) (*ProviderC
|
|||||||
config, err := service.detect(envs)
|
config, err := service.detect(envs)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
log.Infof("Found CI: %s", config.Name)
|
log.Infof("Found CI: %s", config.Name)
|
||||||
|
log.Tracef("Found CI config: %+v", config)
|
||||||
return config, nil
|
return config, nil
|
||||||
}
|
}
|
||||||
log.Debugf("%s", err.Error())
|
log.Debugf("%s", err.Error())
|
||||||
|
|||||||
@@ -6,11 +6,11 @@ import (
|
|||||||
"sort"
|
"sort"
|
||||||
|
|
||||||
"github.com/Masterminds/semver"
|
"github.com/Masterminds/semver"
|
||||||
|
"github.com/Nightapes/go-semantic-release/internal/shared"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
"gopkg.in/src-d/go-git.v4"
|
"gopkg.in/src-d/go-git.v4"
|
||||||
"gopkg.in/src-d/go-git.v4/plumbing"
|
"gopkg.in/src-d/go-git.v4/plumbing"
|
||||||
"gopkg.in/src-d/go-git.v4/plumbing/object"
|
"gopkg.in/src-d/go-git.v4/plumbing/object"
|
||||||
"github.com/Nightapes/go-semantic-release/internal/shared"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// GitUtil struct
|
// GitUtil struct
|
||||||
@@ -87,7 +87,7 @@ func (g *GitUtil) GetLastVersion() (*semver.Version, string, error) {
|
|||||||
|
|
||||||
err = gitTags.ForEach(func(p *plumbing.Reference) error {
|
err = gitTags.ForEach(func(p *plumbing.Reference) error {
|
||||||
v, err := semver.NewVersion(p.Name().Short())
|
v, err := semver.NewVersion(p.Name().Short())
|
||||||
log.Tracef("%+v with hash: %s", p.Target(), p.Hash())
|
log.Tracef("Tag %+v with hash: %s", p.Target(), p.Hash())
|
||||||
|
|
||||||
if err == nil {
|
if err == nil {
|
||||||
tags = append(tags, v)
|
tags = append(tags, v)
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package semanticrelease
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"strings"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/Masterminds/semver"
|
"github.com/Masterminds/semver"
|
||||||
@@ -98,14 +97,21 @@ func (s *SemanticRelease) GetNextVersion(provider *ci.ProviderConfig, force bool
|
|||||||
analyzedCommits := s.analyzer.Analyze(commits)
|
analyzedCommits := s.analyzer.Analyze(commits)
|
||||||
|
|
||||||
var newVersion semver.Version
|
var newVersion semver.Version
|
||||||
|
foundBranchConfig := false
|
||||||
for branch, releaseType := range s.config.Branch {
|
for branch, releaseType := range s.config.Branch {
|
||||||
if provider.Branch == branch || strings.HasPrefix(provider.Branch, branch) {
|
if provider.Branch == branch {
|
||||||
log.Debugf("Found branch config for branch %s with release type %s", provider.Branch, releaseType)
|
log.Debugf("Found branch config for branch %s with release type %s", provider.Branch, releaseType)
|
||||||
newVersion = s.calculator.CalculateNewVersion(analyzedCommits, lastVersion, releaseType, firstRelease)
|
newVersion = s.calculator.CalculateNewVersion(analyzedCommits, lastVersion, releaseType, firstRelease)
|
||||||
|
foundBranchConfig = true
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !foundBranchConfig {
|
||||||
|
log.Warnf("No branch config found for branch %s, will return last known version", provider.Branch)
|
||||||
|
newVersion = *lastVersion
|
||||||
|
}
|
||||||
|
|
||||||
releaseVersion := shared.ReleaseVersion{
|
releaseVersion := shared.ReleaseVersion{
|
||||||
Next: shared.ReleaseVersionEntry{
|
Next: shared.ReleaseVersionEntry{
|
||||||
Commit: provider.Commit,
|
Commit: provider.Commit,
|
||||||
|
|||||||
Reference in New Issue
Block a user