mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2025-02-16 19:35:14 +00:00
Move docker specific volume & network settings into backend code (#1956)
... if we want to make them be changed ... it should be an agent-backend-option
This commit is contained in:
parent
89623471fb
commit
5393aa5d3b
4 changed files with 21 additions and 35 deletions
|
@ -18,6 +18,7 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/docker/docker/api/types"
|
"github.com/docker/docker/api/types"
|
||||||
|
@ -41,6 +42,12 @@ type docker struct {
|
||||||
volumes []string
|
volumes []string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
networkDriverNAT = "nat"
|
||||||
|
networkDriverBridge = "bridge"
|
||||||
|
volumeDriver = "local"
|
||||||
|
)
|
||||||
|
|
||||||
// New returns a new Docker Engine.
|
// New returns a new Docker Engine.
|
||||||
func New() backend.Engine {
|
func New() backend.Engine {
|
||||||
return &docker{
|
return &docker{
|
||||||
|
@ -97,21 +104,22 @@ func (e *docker) Load(ctx context.Context) error {
|
||||||
func (e *docker) Setup(_ context.Context, conf *backend.Config) error {
|
func (e *docker) Setup(_ context.Context, conf *backend.Config) error {
|
||||||
for _, vol := range conf.Volumes {
|
for _, vol := range conf.Volumes {
|
||||||
_, err := e.client.VolumeCreate(noContext, volume.VolumeCreateBody{
|
_, err := e.client.VolumeCreate(noContext, volume.VolumeCreateBody{
|
||||||
Name: vol.Name,
|
Name: vol.Name,
|
||||||
Driver: vol.Driver,
|
Driver: volumeDriver,
|
||||||
DriverOpts: vol.DriverOpts,
|
|
||||||
// Labels: defaultLabels,
|
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
networkDriver := networkDriverBridge
|
||||||
|
if runtime.GOOS == "windows" {
|
||||||
|
networkDriver = networkDriverNAT
|
||||||
|
}
|
||||||
for _, n := range conf.Networks {
|
for _, n := range conf.Networks {
|
||||||
_, err := e.client.NetworkCreate(noContext, n.Name, types.NetworkCreate{
|
_, err := e.client.NetworkCreate(noContext, n.Name, types.NetworkCreate{
|
||||||
Driver: n.Driver,
|
Driver: networkDriver,
|
||||||
Options: n.DriverOpts,
|
|
||||||
EnableIPv6: e.enableIPv6,
|
EnableIPv6: e.enableIPv6,
|
||||||
// Labels: defaultLabels,
|
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
@ -2,7 +2,5 @@ package types
|
||||||
|
|
||||||
// Network defines a container network.
|
// Network defines a container network.
|
||||||
type Network struct {
|
type Network struct {
|
||||||
Name string `json:"name,omitempty"`
|
Name string `json:"name,omitempty"`
|
||||||
Driver string `json:"driver,omitempty"`
|
|
||||||
DriverOpts map[string]string `json:"driver_opts,omitempty"`
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,5 @@ package types
|
||||||
|
|
||||||
// Volume defines a container volume.
|
// Volume defines a container volume.
|
||||||
type Volume struct {
|
type Volume struct {
|
||||||
Name string `json:"name,omitempty"`
|
Name string `json:"name,omitempty"`
|
||||||
Driver string `json:"driver,omitempty"`
|
|
||||||
DriverOpts map[string]string `json:"driver_opts,omitempty"`
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,6 @@ package compiler
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"path"
|
"path"
|
||||||
"strings"
|
|
||||||
|
|
||||||
backend_types "github.com/woodpecker-ci/woodpecker/pipeline/backend/types"
|
backend_types "github.com/woodpecker-ci/woodpecker/pipeline/backend/types"
|
||||||
"github.com/woodpecker-ci/woodpecker/pipeline/frontend/metadata"
|
"github.com/woodpecker-ci/woodpecker/pipeline/frontend/metadata"
|
||||||
|
@ -11,17 +10,9 @@ import (
|
||||||
"github.com/woodpecker-ci/woodpecker/shared/constant"
|
"github.com/woodpecker-ci/woodpecker/shared/constant"
|
||||||
)
|
)
|
||||||
|
|
||||||
// TODO(bradrydzewski) compiler should handle user-defined volumes from YAML
|
|
||||||
// TODO(bradrydzewski) compiler should handle user-defined networks from YAML
|
|
||||||
|
|
||||||
const (
|
const (
|
||||||
windowsPrefix = "windows/"
|
|
||||||
|
|
||||||
defaultCloneName = "clone"
|
defaultCloneName = "clone"
|
||||||
|
|
||||||
networkDriverNAT = "nat"
|
|
||||||
networkDriverBridge = "bridge"
|
|
||||||
|
|
||||||
nameServices = "services"
|
nameServices = "services"
|
||||||
namePipeline = "pipeline"
|
namePipeline = "pipeline"
|
||||||
)
|
)
|
||||||
|
@ -114,22 +105,13 @@ func (c *Compiler) Compile(conf *yaml_types.Workflow) (*backend_types.Config, er
|
||||||
|
|
||||||
// create a default volume
|
// create a default volume
|
||||||
config.Volumes = append(config.Volumes, &backend_types.Volume{
|
config.Volumes = append(config.Volumes, &backend_types.Volume{
|
||||||
Name: fmt.Sprintf("%s_default", c.prefix),
|
Name: fmt.Sprintf("%s_default", c.prefix),
|
||||||
Driver: "local",
|
|
||||||
})
|
})
|
||||||
|
|
||||||
// create a default network
|
// create a default network
|
||||||
if strings.HasPrefix(c.metadata.Sys.Platform, windowsPrefix) {
|
config.Networks = append(config.Networks, &backend_types.Network{
|
||||||
config.Networks = append(config.Networks, &backend_types.Network{
|
Name: fmt.Sprintf("%s_default", c.prefix),
|
||||||
Name: fmt.Sprintf("%s_default", c.prefix),
|
})
|
||||||
Driver: networkDriverNAT,
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
config.Networks = append(config.Networks, &backend_types.Network{
|
|
||||||
Name: fmt.Sprintf("%s_default", c.prefix),
|
|
||||||
Driver: networkDriverBridge,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// create secrets for mask
|
// create secrets for mask
|
||||||
for _, sec := range c.secrets {
|
for _, sec := range c.secrets {
|
||||||
|
|
Loading…
Reference in a new issue