Merge remote-tracking branch 'origin/master'

This commit is contained in:
Brad Rydzewski 2019-05-20 11:27:14 -07:00
commit 72b626e584
12 changed files with 97 additions and 34 deletions

View File

@ -27,6 +27,7 @@ type Conditions struct {
Branch Condition `json:"branch,omitempty"` Branch Condition `json:"branch,omitempty"`
Status Condition `json:"status,omitempty"` Status Condition `json:"status,omitempty"`
Paths Condition `json:"paths,omitempty"` Paths Condition `json:"paths,omitempty"`
Matrix map[string]string `json:"matrix,omitempty"`
} }
// Condition defines a runtime condition. // Condition defines a runtime condition.

View File

@ -91,6 +91,40 @@ func Convert(d []byte) ([]byte, error) {
current := pipeline current := pipeline
current.Name = fmt.Sprintf("matrix-%d", index+1) current.Name = fmt.Sprintf("matrix-%d", index+1)
services := make([]*droneyaml.Container, 0)
for _, service := range current.Services {
if len(service.When.Matrix) == 0 {
services = append(services, service)
continue
}
for whenKey, whenValue := range service.When.Matrix {
for envKey, envValue := range environ {
if whenKey == envKey && whenValue == envValue {
services = append(services, service)
}
}
}
}
current.Services = services
steps := make([]*droneyaml.Container, 0)
for _, step := range current.Steps {
if len(step.When.Matrix) == 0 {
steps = append(steps, step)
continue
}
for whenKey, whenValue := range step.When.Matrix {
for envKey, envValue := range environ {
if whenKey == envKey && whenValue == envValue {
steps = append(steps, step)
}
}
}
}
current.Steps = steps
marshaled, err := yaml.Marshal(&current) marshaled, err := yaml.Marshal(&current)
if err != nil { if err != nil {
@ -180,6 +214,7 @@ func toConditions(from Constraints) droneyaml.Conditions {
Include: from.Status.Include, Include: from.Status.Include,
Exclude: from.Status.Exclude, Exclude: from.Status.Exclude,
}, },
Matrix: from.Matrix,
} }
} }

View File

@ -14,6 +14,7 @@ type (
Event Constraint Event Constraint
Branch Constraint Branch Constraint
Status Constraint Status Constraint
Matrix map[string]string
} }
// Constraint defines a runtime constraint. // Constraint defines a runtime constraint.

View File

@ -42,3 +42,16 @@ func (v *Variable) UnmarshalYAML(unmarshal func(interface{}) error) error {
v.Secret = d.Secret v.Secret = d.Secret
return err return err
} }
// MarshalYAML implements yaml marshalling.
func (v *Variable) MarshalYAML() (interface{}, error) {
if v.Secret != "" {
m := map[string]interface{}{}
m["from_secret"] = v.Secret
return m, nil
}
if v.Value != "" {
return v.Value, nil
}
return nil, nil
}

View File

@ -34,7 +34,7 @@ type (
func (p *Parameter) UnmarshalYAML(unmarshal func(interface{}) error) error { func (p *Parameter) UnmarshalYAML(unmarshal func(interface{}) error) error {
d := new(parameter) d := new(parameter)
err := unmarshal(d) err := unmarshal(d)
if err == nil && d.Secret != ""{ if err == nil && d.Secret != "" {
p.Secret = d.Secret p.Secret = d.Secret
return nil return nil
} }
@ -43,3 +43,16 @@ func (p *Parameter) UnmarshalYAML(unmarshal func(interface{}) error) error {
p.Value = i p.Value = i
return err return err
} }
// MarshalYAML implements yaml marshalling.
func (p *Parameter) MarshalYAML() (interface{}, error) {
if p.Secret != "" {
m := map[string]interface{}{}
m["from_secret"] = p.Secret
return m, nil
}
if p.Value != "" {
return p.Value, nil
}
return nil, nil
}