8000 feat(action/gitTag): advanced parameter prefix (#3301) · ovh/cds@a0db2f1 · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Commit a0db2f1

Browse files
yesnaultfsamin
authored andcommitted
feat(action/gitTag): advanced parameter prefix (#3301)
1 parent 4742ccb commit a0db2f1

File tree

6 files changed

+34
-4
lines changed

6 files changed

+34
-4
lines changed

docs/content/workflows/pipelines/actions/builtin/gittag.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ This action creates a tag. You can use a pgp key to sign it.
1818
* tagMessage - optional - Message for the tag
1919
* path - optional - path to your git repository
2020
* signKey - optional - pgp key to sign the tag
21+
* Advanced parameter: prefix - add a prefix in tag name created
2122

2223
## Example of usage
2324

engine/api/action/builtin.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,13 @@ Semver used if fully compatible with https://semver.org/
207207
Value: "{{.cds.workspace}}",
208208
Type: sdk.StringParameter,
209209
})
210+
gittag.Parameter(sdk.Parameter{
211+
Name: "prefix",
212+
Description: "Prefix for tag name",
213+
Value: "",
214+
Type: sdk.StringParameter,
215+
Advanced: true,
216+
})
210217
gittag.Requirement("git", sdk.BinaryRequirement, "git")
211218
gittag.Requirement("gpg", sdk.BinaryRequirement, "gpg")
212219

engine/sql/127_git_tag.sql

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
-- +migrate Up
2+
3+
INSERT into action_parameter (action_id, name, description, type, value, advanced) values((select id from action where name = 'GitTag' and type = 'Builtin'), 'prefix', 'Prefix for tag name', 'string', '', true);
4+
5+
-- +migrate Down
6+
7+
DELETE from action_parameter where name = 'prefix' and action_id = (select id from action where name = 'GitTag' and type = 'Builtin');
8+

engine/worker/builtin_gitclone.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ func extractInfo(w *currentWorker, dir string, params *[]sdk.Parameter, tag, bra
287287
}
288288
sendLog(fmt.Sprintf("git.describe: %s", info.GitDescribe))
289289

290-
smver, errT := semver.Make(info.GitDescribe)
290+
smver, errT := semver.ParseTolerant(info.GitDescribe)
291291
if errT != nil {
292292
sendLog(fmt.Sprintf("!! WARNING !! git describe %s is not semver compatible, we can't create cds.semver variable", info.GitDescribe))
293293
} else {
@@ -318,6 +318,12 @@ func extractInfo(w *currentWorker, dir string, params *[]sdk.Parameter, tag, bra
318318
cdsVersion.Value,
319319
)
320320
}
321+
322+
// if git.describe contains a prefix 'v', we keep it
323+
if strings.HasPrefix(info.GitDescribe, "v") {
324+
cdsSemver = fmt.Sprintf("v%s", cdsSemver)
325+
}
326+
321327
} else {
322328
// default value if there is no tag on repository
323329
cdsSemver = fmt.Sprintf("0.0.1+cds.%s", cdsVersion.Value)

engine/worker/builtin_gittag.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ func runGitTag(w *currentWorker) BuiltInAction {
2222
tagLevel := sdk.ParameterFind(&a.Parameters, "tagLevel")
2323
tagMessage := sdk.ParameterFind(&a.Parameters, "tagMessage")
2424
path := sdk.ParameterFind(&a.Parameters, "path")
25+
prefix := sdk.ParameterFind(&a.Parameters, "prefix")
2526

2627
tagLevelValid := true
2728
if tagLevel == nil || tagLevel.Value == "" {
@@ -64,7 +65,7 @@ func runGitTag(w *currentWorker) BuiltInAction {
6465
return res
6566
}
6667

67-
smver, errT := semver.Make(cdsSemver.Value)
68+
smver, errT := semver.ParseTolerant(cdsSemver.Value)
6869
if errT != nil {
6970
res := sdk.Result{
7071
Status: sdk.StatusFail.String(),
@@ -142,6 +143,10 @@ func runGitTag(w *currentWorker) BuiltInAction {
142143
Username: userTag,
143144
}
144145

146+
if prefix != nil && prefix.Value != "" {
147+
tagOpts.Name = fmt.Sprintf("%s%s", prefix.Value, tagOpts.Name)
148+
}
149+
145150
if auth.SignKey.ID != "" {
146151
tagOpts.SignKey = auth.SignKey.Private
147152
tagOpts.SignID = auth.SignKey.ID

sdk/exportentities/action.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,10 @@ func newSteps(a sdk.Action) []Step {
189189
if tagPrerelease != nil && tagPrerelease.Value != "" {
190190
gitTagArgs["tagPrerelease"] = tagPrerelease.Value
191191
}
192+
prefix := sdk.ParameterFind(&act.Parameters, "prefix")
193+
if prefix != nil && prefix.Value != "" {
194+
gitTagArgs["prefix"] = prefix.Value
195+
}
192196
s["gitTag"] = gitTagArgs
193197
case sdk.ReleaseAction:
194198
releaseArgs := map[string]string{}
@@ -635,9 +639,8 @@ func (s Step) Name() (string, error) {
635639
if stepAttr, ok := s["name"]; ok {
636640
if stepName, okName := stepAttr.(string); okName {
637641
return stepName, nil
638-
} else {
639-
return "", fmt.Errorf("Malformatted Step : name must be a string")
640642
}
643+
return "", fmt.Errorf("Malformatted Step : name must be a string")
641644
}
642645
return "", nil
643646
}

0 commit comments

Comments
 (0)
0