diff --git a/cmd/drone-docker/main.go b/cmd/drone-docker/main.go index b51cb8a..a142cc4 100644 --- a/cmd/drone-docker/main.go +++ b/cmd/drone-docker/main.go @@ -193,13 +193,7 @@ func main() { EnvVar: "PLUGIN_EMAIL,DOCKER_EMAIL", }, cli.StringFlag{ - Name: "commit.branch", - Value: "master", - Usage: "git commit branch", - EnvVar: "DRONE_COMMIT_BRANCH", - }, - cli.StringFlag{ - Name: "default.branch", + Name: "repo.branch", Usage: "repository default branch", EnvVar: "DRONE_REPO_BRANCH", }, @@ -222,8 +216,7 @@ func run(c *cli.Context) error { Build: docker.Build{ Remote: c.String("remote.url"), Name: c.String("commit.sha"), - Branch: c.String("commit.branch"), - DefaultBranch: c.String("default.branch"), + DefaultBranch: c.String("repo.branch"), Dockerfile: c.String("dockerfile"), Context: c.String("context"), Tags: c.StringSlice("tags"), @@ -256,8 +249,7 @@ func run(c *cli.Context) error { plugin.Build.Tags = docker.DefaultTagSuffix( c.String("commit.ref"), c.String("tags.suffix"), - c.String("commit.branch"), - c.String("default.branch"), + c.String("repo.branch"), ) } diff --git a/tags.go b/tags.go index f6b7606..d83821a 100644 --- a/tags.go +++ b/tags.go @@ -9,8 +9,8 @@ import ( // DefaultTagSuffix returns a set of default suggested tags // based on the commit ref with an attached suffix. -func DefaultTagSuffix(ref, suffix, commitBranch, defaultBranch string) []string { - tags := DefaultTags(ref, commitBranch, defaultBranch) +func DefaultTagSuffix(ref, suffix, defaultBranch string) []string { + tags := DefaultTags(ref, defaultBranch) if len(suffix) == 0 { return tags } @@ -26,10 +26,12 @@ func DefaultTagSuffix(ref, suffix, commitBranch, defaultBranch string) []string // DefaultTags returns a set of default suggested tags based on // the commit ref. -func DefaultTags(ref, commitBranch, defaultBranch string) []string { +func DefaultTags(ref, defaultBranch string) []string { - if defaultBranch != "" && commitBranch != defaultBranch && !strings.HasPrefix(ref, "refs/tags/") { - return []string{} + if defaultBranch != "" && strings.HasPrefix(ref, "refs/heads/") { + if stripHeadPrefix(ref) != defaultBranch { + return []string{} + } } if !strings.HasPrefix(ref, "refs/tags/") { @@ -64,3 +66,8 @@ func stripTagPrefix(ref string) string { ref = strings.TrimPrefix(ref, "v") return ref } + +func stripHeadPrefix(ref string) string { + ref = strings.TrimPrefix(ref, "refs/heads/") + return ref +} diff --git a/tags_test.go b/tags_test.go index f86d4ca..30732a5 100644 --- a/tags_test.go +++ b/tags_test.go @@ -26,29 +26,28 @@ func Test_stripTagPrefix(t *testing.T) { func TestDefaultTags(t *testing.T) { var tests = []struct { Before string - CommitBranch string DefaultBranch string After []string }{ - {"", "master", "", []string{"latest"}}, - {"refs/heads/master", "master", "", []string{"latest"}}, - {"refs/tags/0.9.0", "master", "", []string{"0.9", "0.9.0"}}, - {"refs/tags/1.0.0", "master", "", []string{"1", "1.0", "1.0.0"}}, - {"refs/tags/v1.0.0", "master", "", []string{"1", "1.0", "1.0.0"}}, - {"refs/tags/v1.0.0-alpha.1", "master", "", []string{"1.0.0-alpha.1"}}, + {"", "master", []string{"latest"}}, + {"refs/heads/master", "master", []string{"latest"}}, + {"refs/tags/0.9.0", "master", []string{"0.9", "0.9.0"}}, + {"refs/tags/1.0.0", "master", []string{"1", "1.0", "1.0.0"}}, + {"refs/tags/v1.0.0", "master", []string{"1", "1.0", "1.0.0"}}, + {"refs/tags/v1.0.0-alpha.1", "master", []string{"1.0.0-alpha.1"}}, // malformed or errors - {"refs/tags/x1.0.0", "master", "", []string{"latest"}}, - {"v1.0.0", "master", "", []string{"latest"}}, + {"refs/tags/x1.0.0", "master", []string{"latest"}}, + {"v1.0.0", "master", []string{"latest"}}, // defualt branch - {"refs/heads/master", "master", "master", []string{"latest"}}, - {"refs/heads/test", "test", "master", []string{}}, - {"refs/tags/v1.0.0", "v1.0.0", "master", []string{"1", "1.0", "1.0.0"}}, + {"refs/heads/master", "master", []string{"latest"}}, + {"refs/heads/test", "master", []string{}}, + {"refs/tags/v1.0.0", "master", []string{"1", "1.0", "1.0.0"}}, } for _, test := range tests { - got, want := DefaultTags(test.Before, test.CommitBranch, test.DefaultBranch), test.After + got, want := DefaultTags(test.Before, test.DefaultBranch), test.After if !reflect.DeepEqual(got, want) { t.Errorf("Got tag %v, want %v", got, want) } @@ -58,7 +57,6 @@ func TestDefaultTags(t *testing.T) { func TestDefaultTagSuffix(t *testing.T) { var tests = []struct { Before string - CommitBranch string DefaultBranch string Suffix string After []string @@ -66,12 +64,10 @@ func TestDefaultTagSuffix(t *testing.T) { // without suffix { After: []string{"latest"}, - CommitBranch: "master", DefaultBranch: "", }, { Before: "refs/tags/v1.0.0", - CommitBranch: "master", DefaultBranch: "", After: []string{ "1", @@ -81,13 +77,11 @@ func TestDefaultTagSuffix(t *testing.T) { }, // with suffix { - CommitBranch: "master", DefaultBranch: "", Suffix: "linux-amd64", After: []string{"linux-amd64"}, }, { - CommitBranch: "master", DefaultBranch: "", Before: "refs/tags/v1.0.0", Suffix: "linux-amd64", @@ -98,13 +92,11 @@ func TestDefaultTagSuffix(t *testing.T) { }, }, { - CommitBranch: "master", DefaultBranch: "", Suffix: "nanoserver", After: []string{"nanoserver"}, }, { - CommitBranch: "master", DefaultBranch: "", Before: "refs/tags/v1.9.2", Suffix: "nanoserver", @@ -117,9 +109,31 @@ func TestDefaultTagSuffix(t *testing.T) { } for _, test := range tests { - got, want := DefaultTagSuffix(test.Before, test.Suffix, test.CommitBranch, test.DefaultBranch), test.After + got, want := DefaultTagSuffix(test.Before, test.Suffix, test.DefaultBranch), test.After if !reflect.DeepEqual(got, want) { t.Errorf("Got tag %v, want %v", got, want) } } } + +func Test_stripHeadPrefix(t *testing.T) { + type args struct { + ref string + } + tests := []struct { + args args + want string + }{ + { + args: args{ + ref: "refs/heads/master", + }, + want: "master", + }, + } + for _, tt := range tests { + if got := stripHeadPrefix(tt.args.ref); got != tt.want { + t.Errorf("stripHeadPrefix() = %v, want %v", got, tt.want) + } + } +}