support for defining docker network opts

This commit is contained in:
Brad Rydzewski
2020-08-11 09:03:07 -04:00
parent 1a896dcf10
commit 06b89a91b4
5 changed files with 31 additions and 22 deletions

View File

@@ -42,18 +42,19 @@ type Config struct {
}
Runner struct {
Name string `envconfig:"DRONE_RUNNER_NAME"`
Capacity int `envconfig:"DRONE_RUNNER_CAPACITY" default:"2"`
Procs int64 `envconfig:"DRONE_RUNNER_MAX_PROCS"`
Environ map[string]string `envconfig:"DRONE_RUNNER_ENVIRON"`
EnvFile string `envconfig:"DRONE_RUNNER_ENV_FILE"`
Secrets map[string]string `envconfig:"DRONE_RUNNER_SECRETS"`
Labels map[string]string `envconfig:"DRONE_RUNNER_LABELS"`
Volumes map[string]string `envconfig:"DRONE_RUNNER_VOLUMES"`
Devices []string `envconfig:"DRONE_RUNNER_DEVICES"`
Networks []string `envconfig:"DRONE_RUNNER_NETWORKS"`
Privileged []string `envconfig:"DRONE_RUNNER_PRIVILEGED_IMAGES"`
Clone string `envconfig:"DRONE_RUNNER_CLONE_IMAGE"`
Name string `envconfig:"DRONE_RUNNER_NAME"`
Capacity int `envconfig:"DRONE_RUNNER_CAPACITY" default:"2"`
Procs int64 `envconfig:"DRONE_RUNNER_MAX_PROCS"`
Environ map[string]string `envconfig:"DRONE_RUNNER_ENVIRON"`
EnvFile string `envconfig:"DRONE_RUNNER_ENV_FILE"`
Secrets map[string]string `envconfig:"DRONE_RUNNER_SECRETS"`
Labels map[string]string `envconfig:"DRONE_RUNNER_LABELS"`
Volumes map[string]string `envconfig:"DRONE_RUNNER_VOLUMES"`
Devices []string `envconfig:"DRONE_RUNNER_DEVICES"`
Networks []string `envconfig:"DRONE_RUNNER_NETWORKS"`
NetworkOpts map[string]string `envconfig:"DRONE_RUNNER_NETWORK_OPTS"`
Privileged []string `envconfig:"DRONE_RUNNER_PRIVILEGED_IMAGES"`
Clone string `envconfig:"DRONE_RUNNER_CLONE_IMAGE"`
}
Platform struct {

View File

@@ -120,10 +120,11 @@ func (c *daemonCommand) run(*kingpin.ParseContext) error {
config.Limit.Trusted,
),
Compiler: &compiler.Compiler{
Clone: config.Runner.Clone,
Privileged: append(config.Runner.Privileged, compiler.Privileged...),
Networks: config.Runner.Networks,
Volumes: config.Runner.Volumes,
Clone: config.Runner.Clone,
Privileged: append(config.Runner.Privileged, compiler.Privileged...),
Networks: config.Runner.Networks,
NetworkOpts: config.Runner.NetworkOpts,
Volumes: config.Runner.Volumes,
Resources: compiler.Resources{
Memory: config.Resources.Memory,
MemorySwap: config.Resources.MemorySwap,

View File

@@ -73,6 +73,10 @@ type Compiler struct {
// attached to each pipeline container.
Networks []string
// NetworkOpts provides a set of network options that
// are used when creating the docker network.
NetworkOpts map[string]string
// Volumes provides a set of volumes that should be
// mounted to each pipeline container.
Volumes map[string]string
@@ -154,8 +158,9 @@ func (c *Compiler) Compile(ctx context.Context, args runtime.CompilerArgs) runti
spec := &engine.Spec{
Network: engine.Network{
ID: random(),
Labels: labels,
ID: random(),
Labels: labels,
Options: c.NetworkOpts,
},
Platform: engine.Platform{
OS: pipeline.Platform.OS,

View File

@@ -83,8 +83,9 @@ func (e *Docker) Setup(ctx context.Context, specv runtime.Spec) error {
driver = "nat"
}
_, err := e.client.NetworkCreate(ctx, spec.Network.ID, types.NetworkCreate{
Driver: driver,
Labels: spec.Network.Labels,
Driver: driver,
Options: spec.Network.Options,
Labels: spec.Network.Labels,
})
return errors.TrimExtraInfo(err)

View File

@@ -117,8 +117,9 @@ type (
// Network that is created and attached to containers
Network struct {
ID string `json:"id,omitempty"`
Labels map[string]string `json:"labels,omitempty"`
ID string `json:"id,omitempty"`
Labels map[string]string `json:"labels,omitempty"`
Options map[string]string `json:"options,omitempty"`
}
// Auth defines dockerhub authentication credentials.