// Pod transforms the containers in the Yaml to use Pod networking, where every // container shares the localhost connection. func Pod(c *yaml.Config) error { rand := base64.RawURLEncoding.EncodeToString( securecookie.GenerateRandomKey(8), ) ambassador := &yaml.Container{ ID: fmt.Sprintf("drone_ambassador_%s", rand), Name: "ambassador", Image: "busybox:latest", Detached: true, Entrypoint: []string{"/bin/sleep"}, Command: []string{"86400"}, Volumes: []string{c.Workspace.Path, c.Workspace.Base}, Environment: map[string]string{}, } network := fmt.Sprintf("container:%s", ambassador.ID) var containers []*yaml.Container containers = append(containers, c.Pipeline...) containers = append(containers, c.Services...) for _, container := range containers { container.VolumesFrom = append(container.VolumesFrom, ambassador.ID) if container.Network == "" { container.Network = network } } c.Services = append([]*yaml.Container{ambassador}, c.Services...) return nil }
// Pod transforms the containers in the Yaml to use Pod networking, where every // container shares the localhost connection. func Pod(c *yaml.Config, platform string) error { rand := base64.RawURLEncoding.EncodeToString( securecookie.GenerateRandomKey(8), ) // choose the ambassador configuration based on os and architecture conf, ok := lookupAmbassador[platform] if !ok { conf = defaultAmbassador } ambassador := &yaml.Container{ ID: fmt.Sprintf("drone_ambassador_%s", rand), Name: "ambassador", Image: conf.image, Detached: true, Entrypoint: conf.entrypoint, Command: conf.command, Volumes: []string{c.Workspace.Path, c.Workspace.Base}, Environment: map[string]string{}, } network := fmt.Sprintf("container:%s", ambassador.ID) var containers []*yaml.Container containers = append(containers, c.Pipeline...) containers = append(containers, c.Services...) for _, container := range containers { container.VolumesFrom = append(container.VolumesFrom, ambassador.ID) if container.Network == "" { container.Network = network } } c.Services = append([]*yaml.Container{ambassador}, c.Services...) return nil }