From 5b1d8d65ede55567a3fa9329a14aad1e79dff85e Mon Sep 17 00:00:00 2001 From: Brad Rydzewski Date: Wed, 30 Oct 2019 15:13:54 -0700 Subject: [PATCH] hook up global networks --- .drone.yml | 24 +++++++++++++++++------- engine/compiler/util.go | 6 ++++++ engine/convert.go | 4 +++- engine/engine_impl.go | 14 ++++++++++++++ 4 files changed, 40 insertions(+), 8 deletions(-) diff --git a/.drone.yml b/.drone.yml index 90e3fcb..03bdd97 100644 --- a/.drone.yml +++ b/.drone.yml @@ -78,6 +78,16 @@ steps: - refs/heads/master - refs/tags/* +volumes: +- name: go + temp: {} + +--- +kind: pipeline +type: docker +name: manifest + +steps: - name: manifest image: plugins/manifest settings: @@ -88,11 +98,11 @@ steps: from_secret: docker_password username: from_secret: docker_username - when: - ref: - - refs/heads/master - - refs/tags/* -volumes: -- name: go - temp: {} +depends_on: +- linux + +trigger: + ref: + - refs/heads/master + - refs/tags/* diff --git a/engine/compiler/util.go b/engine/compiler/util.go index c8304c3..81806c2 100644 --- a/engine/compiler/util.go +++ b/engine/compiler/util.go @@ -63,6 +63,9 @@ func configureSerial(spec *engine.Spec) { func convertStaticEnv(src map[string]*manifest.Variable) map[string]string { dst := map[string]string{} for k, v := range src { + if v == nil { + continue + } if strings.TrimSpace(v.Secret) == "" { dst[k] = v.Value } @@ -76,6 +79,9 @@ func convertStaticEnv(src map[string]*manifest.Variable) map[string]string { func convertSecretEnv(src map[string]*manifest.Variable) []*engine.Secret { dst := []*engine.Secret{} for k, v := range src { + if v == nil { + continue + } if strings.TrimSpace(v.Secret) != "" { dst = append(dst, &engine.Secret{ Name: v.Secret, diff --git a/engine/convert.go b/engine/convert.go index 045a75e..61df01c 100644 --- a/engine/convert.go +++ b/engine/convert.go @@ -251,7 +251,9 @@ func toVolumeType(from *Volume) mount.Type { func toEnv(env map[string]string) []string { var envs []string for k, v := range env { - envs = append(envs, k+"="+v) + if v != "" { + envs = append(envs, k+"="+v) + } } return envs } diff --git a/engine/engine_impl.go b/engine/engine_impl.go index bc17a2c..aa11467 100644 --- a/engine/engine_impl.go +++ b/engine/engine_impl.go @@ -16,6 +16,7 @@ import ( "docker.io/go-docker" "docker.io/go-docker/api/types" + "docker.io/go-docker/api/types/network" "docker.io/go-docker/api/types/volume" ) @@ -214,6 +215,19 @@ func (e *Docker) create(ctx context.Context, spec *Spec, step *Step, output io.W return err } + // attach the container to user-defined networks. + // primarily used to attach global user-defined networks. + if step.Network == "" { + for _, net := range step.Networks { + err = e.client.NetworkConnect(ctx, net, step.ID, &network.EndpointSettings{ + Aliases: []string{net}, + }) + if err != nil { + return nil + } + } + } + return nil }