From e0f7e22dee6c1d2514c6d2c21590fd70fdbdff2f Mon Sep 17 00:00:00 2001 From: Brad Rydzewski Date: Mon, 29 Jul 2019 13:38:27 -0700 Subject: [PATCH] tweak branch conversion logic per feedback --- go.mod | 2 +- go.sum | 2 ++ yaml/converter/legacy/internal/config.go | 20 ++++++++++++- yaml/converter/legacy/internal/config_test.go | 4 +++ .../internal/testdata/branches.yml.golden | 1 - .../internal/testdata/simple.yml.golden | 1 - .../legacy/internal/testdata/tags.yml | 10 +++++++ .../legacy/internal/testdata/tags.yml.golden | 28 +++++++++++++++++++ 8 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 yaml/converter/legacy/internal/testdata/tags.yml create mode 100644 yaml/converter/legacy/internal/testdata/tags.yml.golden diff --git a/go.mod b/go.mod index 69b6d61..68a8bf0 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/buildkite/yaml v2.1.0+incompatible github.com/docker/distribution v2.7.1+incompatible github.com/docker/go-units v0.3.3 - github.com/drone/drone-runtime v1.0.7-0.20190729070836-38f28a11afe8 + github.com/drone/drone-runtime v1.0.7-0.20190729202838-87c84080f4a1 github.com/ghodss/yaml v1.0.0 github.com/google/go-cmp v0.2.0 github.com/kr/pretty v0.1.0 // indirect diff --git a/go.sum b/go.sum index f77a13d..7a1feec 100644 --- a/go.sum +++ b/go.sum @@ -23,6 +23,8 @@ github.com/drone/drone-runtime v1.0.5 h1:fEdUvKd5+l8BQaPXntjUtSIVLvGWo3Blgb/zrXL github.com/drone/drone-runtime v1.0.5/go.mod h1:+osgwGADc/nyl40J0fdsf8Z09bgcBZXvXXnLOY48zYs= github.com/drone/drone-runtime v1.0.7-0.20190729070836-38f28a11afe8 h1:lcS2z7+ZySmVM+XJJjBZZPTcn6IB1BSfLWtDGyco3xo= github.com/drone/drone-runtime v1.0.7-0.20190729070836-38f28a11afe8/go.mod h1:+osgwGADc/nyl40J0fdsf8Z09bgcBZXvXXnLOY48zYs= +github.com/drone/drone-runtime v1.0.7-0.20190729202838-87c84080f4a1 h1:9xaZM1rM1/0FqFEijgnFcvWd0vRqOw+iO1YR7pBgPCw= +github.com/drone/drone-runtime v1.0.7-0.20190729202838-87c84080f4a1/go.mod h1:+osgwGADc/nyl40J0fdsf8Z09bgcBZXvXXnLOY48zYs= github.com/drone/signal v1.0.0 h1:NrnM2M/4yAuU/tXs6RP1a1ZfxnaHwYkd0kJurA1p6uI= github.com/drone/signal v1.0.0/go.mod h1:S8t92eFT0g4WUgEc/LxG+LCuiskpMNsG0ajAMGnyZpc= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= diff --git a/yaml/converter/legacy/internal/config.go b/yaml/converter/legacy/internal/config.go index 7ea7ae6..61c66f6 100644 --- a/yaml/converter/legacy/internal/config.go +++ b/yaml/converter/legacy/internal/config.go @@ -114,7 +114,6 @@ func Convert(d []byte, remote string) ([]byte, error) { if len(from.Branches.Include) > 0 && len(from.Branches.Exclude) == 0 { pipeline.Trigger.Branch.Include = nil pipeline.Trigger.Ref.Include = []string{ - "refs/tags/**", "refs/pull/**", // github "refs/pull-requests/**", // bitbucket "refs/merge-requests/**", // gitlab @@ -125,6 +124,15 @@ func Convert(d []byte, remote string) ([]byte, error) { "refs/heads/"+branch, ) } + for _, step := range pipeline.Steps { + if sliceContains("tag", step.When.Event.Include) { + pipeline.Trigger.Ref.Include = append( + pipeline.Trigger.Ref.Include, + "refs/tags/**", + ) + break + } + } } // registry credentials need to be emulated in 0.8. The @@ -417,4 +425,14 @@ func toWorkspacePath(link string) string { path = strings.TrimPrefix(path, "/") path = strings.TrimSuffix(path, "/") return "src/" + hostname + "/" + path +} + +// helper function returns true if the slice the string. +func sliceContains(match string, items []string) bool { + for _, item := range items { + if item == match { + return true + } + } + return false } \ No newline at end of file diff --git a/yaml/converter/legacy/internal/config_test.go b/yaml/converter/legacy/internal/config_test.go index 995f32b..605865d 100644 --- a/yaml/converter/legacy/internal/config_test.go +++ b/yaml/converter/legacy/internal/config_test.go @@ -24,6 +24,10 @@ func TestConvert(t *testing.T) { before: "testdata/branches.yml", after: "testdata/branches.yml.golden", }, + { + before: "testdata/tags.yml", + after: "testdata/tags.yml.golden", + }, { before: "testdata/vault_1.yml", after: "testdata/vault_1.yml.golden", diff --git a/yaml/converter/legacy/internal/testdata/branches.yml.golden b/yaml/converter/legacy/internal/testdata/branches.yml.golden index 35c3834..75d143b 100644 --- a/yaml/converter/legacy/internal/testdata/branches.yml.golden +++ b/yaml/converter/legacy/internal/testdata/branches.yml.golden @@ -15,7 +15,6 @@ steps: trigger: ref: - - refs/tags/** - refs/pull/** - refs/pull-requests/** - refs/merge-requests/** diff --git a/yaml/converter/legacy/internal/testdata/simple.yml.golden b/yaml/converter/legacy/internal/testdata/simple.yml.golden index f91cf77..3b3e6de 100644 --- a/yaml/converter/legacy/internal/testdata/simple.yml.golden +++ b/yaml/converter/legacy/internal/testdata/simple.yml.golden @@ -71,7 +71,6 @@ volumes: trigger: ref: - - refs/tags/** - refs/pull/** - refs/pull-requests/** - refs/merge-requests/** diff --git a/yaml/converter/legacy/internal/testdata/tags.yml b/yaml/converter/legacy/internal/testdata/tags.yml new file mode 100644 index 0000000..9fe6445 --- /dev/null +++ b/yaml/converter/legacy/internal/testdata/tags.yml @@ -0,0 +1,10 @@ +branches: +- master + +pipeline: + greeting: + image: alpine + commands: + - echo hello + when: + event: [ tag, push ] \ No newline at end of file diff --git a/yaml/converter/legacy/internal/testdata/tags.yml.golden b/yaml/converter/legacy/internal/testdata/tags.yml.golden new file mode 100644 index 0000000..0202ef2 --- /dev/null +++ b/yaml/converter/legacy/internal/testdata/tags.yml.golden @@ -0,0 +1,28 @@ +--- +kind: pipeline +name: default + +platform: + os: linux + arch: amd64 + +steps: +- name: greeting + pull: if-not-exists + image: alpine + commands: + - echo hello + when: + event: + - tag + - push + +trigger: + ref: + - refs/pull/** + - refs/pull-requests/** + - refs/merge-requests/** + - refs/heads/master + - refs/tags/** + +...