feat: add main apps version as a semver build metadata when releasing
continuous-integration/drone/pr Build is passing Details

This commit is contained in:
knoflook 2021-09-24 10:48:09 +02:00
parent 9faefd2592
commit e700e44363
Signed by: knoflook
GPG Key ID: D6A1D0E8FC4FEF1C
1 changed files with 29 additions and 10 deletions

View File

@ -73,6 +73,11 @@ var recipeReleaseCommand = &cli.Command{
directory := path.Join(config.APPS_DIR, recipe.Name)
tagstring := c.Args().Get(1)
imagesTmp := getImageVersions(recipe)
mainApp := getMainApp(recipe)
mainAppVersion := imagesTmp[mainApp]
if mainAppVersion == "" {
logrus.Fatal("Main app's version is empty.")
}
repo, err := git.PlainOpen(directory)
if err != nil {
@ -83,7 +88,20 @@ var recipeReleaseCommand = &cli.Command{
logrus.Fatal(err)
}
// bumpType is used to decide what part of the tag should be incremented
bumpType := btoi(Major)*4 + btoi(Minor)*2 + btoi(Patch)
if bumpType != 0 {
// a bitwise check if the number is a power of 2
if (bumpType & (bumpType - 1)) != 0 {
logrus.Fatal("you can only use one of: --major, --minor, --patch.")
}
}
if tagstring != "" {
if bumpType > 0 {
logrus.Warn("User specified a version number and --major/--minor/--patch at the same time! Using version number.")
}
tagstring = fmt.Sprintf("%s+%s", tagstring, mainAppVersion)
if Dry {
logrus.Info(fmt.Sprintf("Dry run only. NOT creating tag %s at %s", tagstring, head.Hash()))
return nil
@ -103,15 +121,6 @@ var recipeReleaseCommand = &cli.Command{
return nil
}
// bumpType is used to decide what part of the tag should be incremented
bumpType := btoi(Major)*4 + btoi(Minor)*2 + btoi(Patch)
if bumpType != 0 {
// a bitwise check if the number is a power of 2
if (bumpType & (bumpType - 1)) != 0 {
logrus.Fatal("you can only use one of: --major, --minor, --patch.")
}
}
// get the latest tag with its hash, name etc
var lastGitTag *object.Tag
iter, err := repo.Tags()
@ -129,7 +138,6 @@ var recipeReleaseCommand = &cli.Command{
}); err != nil {
logrus.Fatal(err)
}
newTag, err := tagcmp.Parse(lastGitTag.Name)
if err != nil {
logrus.Fatal(err)
@ -169,6 +177,7 @@ var recipeReleaseCommand = &cli.Command{
}
}
newTagString = fmt.Sprintf("%s+%s", newTagString, mainAppVersion)
if Dry {
logrus.Info(fmt.Sprintf("Dry run only. NOT creating tag %s at %s", newTagString, head.Hash()))
return nil
@ -201,6 +210,16 @@ func getImageVersions(recipe recipe.Recipe) map[string]string {
return services
}
func getMainApp(recipe recipe.Recipe) string {
for _, service := range recipe.Config.Services {
name := service.Name
if name == "app" {
return strings.Split(service.Image, ":")[0]
}
}
return ""
}
func btoi(b bool) int {
if b {
return 1