From e8b24d482cdae3d8f4e05b709733fd2710d70b6f Mon Sep 17 00:00:00 2001 From: Brad Rydzewski Date: Thu, 18 Jul 2019 18:15:30 -0700 Subject: [PATCH] convert legacy branch syntax to ref trigger --- CHANGELOG.md | 4 ++++ yaml/converter/legacy/internal/config.go | 20 +++++++++++++++- yaml/converter/legacy/internal/config_test.go | 4 ++++ .../legacy/internal/testdata/branches.yml | 8 +++++++ .../internal/testdata/branches.yml.golden | 24 +++++++++++++++++++ .../internal/testdata/simple.yml.golden | 8 +++++-- 6 files changed, 65 insertions(+), 3 deletions(-) create mode 100644 yaml/converter/legacy/internal/testdata/branches.yml create mode 100644 yaml/converter/legacy/internal/testdata/branches.yml.golden diff --git a/CHANGELOG.md b/CHANGELOG.md index 6efac11..54df9fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased +### Added +- Convert legacy branch filter to ref trigger, by [@bradrydzewski](https://github.com/bradrydzewski). + ## [1.2.1] - 2019-07-17 ### Added - Pull if-not-exists when converting legacy yaml files, by [@bradrydzewski](https://github.com/bradrydzewski). diff --git a/yaml/converter/legacy/internal/config.go b/yaml/converter/legacy/internal/config.go index 2bcafa9..fd2bab6 100644 --- a/yaml/converter/legacy/internal/config.go +++ b/yaml/converter/legacy/internal/config.go @@ -67,7 +67,7 @@ func Convert(d []byte, remote string) ([]byte, error) { pipeline.Workspace.Path = "" } - if os.Getenv("DRONE_CONVERT_YAML_DEFAULT_WORKSPACE") == "true" { + if remote != "" { if pipeline.Workspace.Base == "" { pipeline.Workspace.Base = "/drone" } @@ -109,6 +109,24 @@ func Convert(d []byte, remote string) ([]byte, error) { pipeline.Trigger.Branch.Include = from.Branches.Include pipeline.Trigger.Branch.Exclude = from.Branches.Exclude + // if the user specifies branch conditions, we need to make + // sure they are still able to execute tag events. + 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 + } + for _, branch := range from.Branches.Include { + pipeline.Trigger.Ref.Include = append( + pipeline.Trigger.Ref.Include, + "refs/heads/"+branch, + ) + } + } + // registry credentials need to be emulated in 0.8. The // migration utility automatically creates a secret named // .dockerconfigjson for the registry credentials, which diff --git a/yaml/converter/legacy/internal/config_test.go b/yaml/converter/legacy/internal/config_test.go index 60aed07..995f32b 100644 --- a/yaml/converter/legacy/internal/config_test.go +++ b/yaml/converter/legacy/internal/config_test.go @@ -20,6 +20,10 @@ func TestConvert(t *testing.T) { before: "testdata/simple.yml", after: "testdata/simple.yml.golden", }, + { + before: "testdata/branches.yml", + after: "testdata/branches.yml.golden", + }, { before: "testdata/vault_1.yml", after: "testdata/vault_1.yml.golden", diff --git a/yaml/converter/legacy/internal/testdata/branches.yml b/yaml/converter/legacy/internal/testdata/branches.yml new file mode 100644 index 0000000..b3f88a1 --- /dev/null +++ b/yaml/converter/legacy/internal/testdata/branches.yml @@ -0,0 +1,8 @@ +branches: +- master + +pipeline: + greeting: + image: alpine + commands: + - echo hello diff --git a/yaml/converter/legacy/internal/testdata/branches.yml.golden b/yaml/converter/legacy/internal/testdata/branches.yml.golden new file mode 100644 index 0000000..35c3834 --- /dev/null +++ b/yaml/converter/legacy/internal/testdata/branches.yml.golden @@ -0,0 +1,24 @@ +--- +kind: pipeline +name: default + +platform: + os: linux + arch: amd64 + +steps: +- name: greeting + pull: if-not-exists + image: alpine + commands: + - echo hello + +trigger: + ref: + - refs/tags/** + - refs/pull/** + - refs/pull-requests/** + - refs/merge-requests/** + - refs/heads/master + +... diff --git a/yaml/converter/legacy/internal/testdata/simple.yml.golden b/yaml/converter/legacy/internal/testdata/simple.yml.golden index 7e29a9c..f91cf77 100644 --- a/yaml/converter/legacy/internal/testdata/simple.yml.golden +++ b/yaml/converter/legacy/internal/testdata/simple.yml.golden @@ -70,7 +70,11 @@ volumes: path: /tmp/go trigger: - branch: - - master + ref: + - refs/tags/** + - refs/pull/** + - refs/pull-requests/** + - refs/merge-requests/** + - refs/heads/master ...