mirror of
https://github.com/thegeeklab/drone-yaml.git
synced 2024-11-24 11:00:39 +00:00
Merge pull request #40 from tboerger/matrix-conditions
Check matrix conditions correctly
This commit is contained in:
commit
115b2ff5f9
@ -1,11 +1,11 @@
|
|||||||
// Copyright 2019 Drone IO, Inc.
|
// Copyright 2019 Drone IO, Inc.
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
// You may obtain a copy of the License at
|
// You may obtain a copy of the License at
|
||||||
//
|
//
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
//
|
//
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
19
yaml/cond.go
19
yaml/cond.go
@ -18,15 +18,16 @@ import filepath "github.com/bmatcuk/doublestar"
|
|||||||
|
|
||||||
// Conditions defines a group of conditions.
|
// Conditions defines a group of conditions.
|
||||||
type Conditions struct {
|
type Conditions struct {
|
||||||
Cron Condition `json:"cron,omitempty"`
|
Cron Condition `json:"cron,omitempty"`
|
||||||
Ref Condition `json:"ref,omitempty"`
|
Ref Condition `json:"ref,omitempty"`
|
||||||
Repo Condition `json:"repo,omitempty"`
|
Repo Condition `json:"repo,omitempty"`
|
||||||
Instance Condition `json:"instance,omitempty"`
|
Instance Condition `json:"instance,omitempty"`
|
||||||
Target Condition `json:"target,omitempty"`
|
Target Condition `json:"target,omitempty"`
|
||||||
Event Condition `json:"event,omitempty"`
|
Event Condition `json:"event,omitempty"`
|
||||||
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.
|
||||||
|
@ -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(¤t)
|
marshaled, err := yaml.Marshal(¤t)
|
||||||
|
|
||||||
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,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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.
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
// Copyright 2019 Drone IO, Inc.
|
// Copyright 2019 Drone IO, Inc.
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
// You may obtain a copy of the License at
|
// You may obtain a copy of the License at
|
||||||
//
|
//
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
//
|
//
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
// Copyright 2019 Drone IO, Inc.
|
// Copyright 2019 Drone IO, Inc.
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
// You may obtain a copy of the License at
|
// You may obtain a copy of the License at
|
||||||
//
|
//
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
//
|
//
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
// Copyright 2019 Drone IO, Inc.
|
// Copyright 2019 Drone IO, Inc.
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
// You may obtain a copy of the License at
|
// You may obtain a copy of the License at
|
||||||
//
|
//
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
//
|
//
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
// Copyright 2019 Drone IO, Inc.
|
// Copyright 2019 Drone IO, Inc.
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
// You may obtain a copy of the License at
|
// You may obtain a copy of the License at
|
||||||
//
|
//
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
//
|
//
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
// Copyright 2019 Drone IO, Inc.
|
// Copyright 2019 Drone IO, Inc.
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
// You may obtain a copy of the License at
|
// You may obtain a copy of the License at
|
||||||
//
|
//
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
//
|
//
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
// Copyright 2019 Drone IO, Inc.
|
// Copyright 2019 Drone IO, Inc.
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
// You may obtain a copy of the License at
|
// You may obtain a copy of the License at
|
||||||
//
|
//
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
//
|
//
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
Loading…
Reference in New Issue
Block a user