Adding the ability to label containers that are launched using

labels:
    something: value
    something2: value2
This commit is contained in:
Joachim Hill-Grannec 2016-08-13 14:38:37 -07:00
parent fe750c751a
commit aaa702dab6
4 changed files with 24 additions and 0 deletions

View file

@ -138,6 +138,7 @@ func (a *Agent) prep(w *queue.Work) (*yaml.Config, error) {
}
transform.Clone(conf, w.Repo.Kind)
transform.Labels(conf)
transform.Environ(conf, envs)
transform.DefaultFilter(conf)
if w.BuildLast != nil {

View file

@ -14,6 +14,7 @@ func toContainerConfig(c *yaml.Container) *dockerclient.ContainerConfig {
config := &dockerclient.ContainerConfig{
Image: c.Image,
Env: toEnvironmentSlice(c.Environment),
Labels: c.Labels,
Cmd: c.Command,
Entrypoint: c.Entrypoint,
WorkingDir: c.WorkingDir,

View file

@ -27,6 +27,7 @@ type Container struct {
Privileged bool
WorkingDir string
Environment map[string]string
Labels map[string]string
Entrypoint []string
Command []string
Commands []string
@ -61,6 +62,7 @@ type container struct {
Pull bool `yaml:"pull"`
Privileged bool `yaml:"privileged"`
Environment types.MapEqualSlice `yaml:"environment"`
Labels types.MapEqualSlice `yaml:"labels"`
Entrypoint types.StringOrSlice `yaml:"entrypoint"`
Command types.StringOrSlice `yaml:"command"`
Commands types.StringOrSlice `yaml:"commands"`
@ -129,6 +131,7 @@ func (c *containerList) UnmarshalYAML(unmarshal func(interface{}) error) error {
Pull: cc.Pull,
Privileged: cc.Privileged,
Environment: cc.Environment.Map(),
Labels: cc.Labels.Map(),
Entrypoint: cc.Entrypoint.Slice(),
Command: cc.Command.Slice(),
Commands: cc.Commands.Slice(),

19
yaml/transform/labels.go Normal file
View file

@ -0,0 +1,19 @@
package transform
import (
"github.com/drone/drone/yaml"
)
// Labels transforms the steps in the Yaml pipeline to include a Labels if it doens't exist
func Labels(c *yaml.Config) error {
var images []*yaml.Container
images = append(images, c.Pipeline...)
images = append(images, c.Services...)
for _, p := range images {
if p.Labels == nil {
p.Labels = map[string]string{}
}
}
return nil
}