mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2025-09-01 08:31:57 +00:00
Add support to define a custom docker network and enable docker ipv6 (#893)
- Add support to define a custom docker network and enable docker ipv6 - Adjust docs
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
"io"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/docker/docker/api/types"
|
||||
@@ -19,7 +20,9 @@ import (
|
||||
)
|
||||
|
||||
type docker struct {
|
||||
client client.APIClient
|
||||
client client.APIClient
|
||||
enableIPv6 bool
|
||||
network string
|
||||
}
|
||||
|
||||
// make sure docker implements Engine
|
||||
@@ -52,6 +55,10 @@ func (e *docker) Load() error {
|
||||
}
|
||||
e.client = cli
|
||||
|
||||
e.enableIPv6, _ = strconv.ParseBool(os.Getenv("WOODPECKER_BACKEND_DOCKER_ENABLE_IPV6"))
|
||||
|
||||
e.network = os.Getenv("WOODPECKER_BACKEND_DOCKER_NETWORK")
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -69,8 +76,9 @@ func (e *docker) Setup(_ context.Context, conf *backend.Config) error {
|
||||
}
|
||||
for _, n := range conf.Networks {
|
||||
_, err := e.client.NetworkCreate(noContext, n.Name, types.NetworkCreate{
|
||||
Driver: n.Driver,
|
||||
Options: n.DriverOpts,
|
||||
Driver: n.Driver,
|
||||
Options: n.DriverOpts,
|
||||
EnableIPv6: e.enableIPv6,
|
||||
// Labels: defaultLabels,
|
||||
})
|
||||
if err != nil {
|
||||
@@ -137,16 +145,15 @@ func (e *docker) Exec(ctx context.Context, proc *backend.Step) error {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// if proc.Network != "host" { // or bridge, overlay, none, internal, container:<name> ....
|
||||
// err = e.client.NetworkConnect(ctx, proc.Network, proc.Name, &network.EndpointSettings{
|
||||
// Aliases: proc.NetworkAliases,
|
||||
// })
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
// }
|
||||
// join the container to an existing network
|
||||
if e.network != "" {
|
||||
err = e.client.NetworkConnect(ctx, e.network, proc.Name, &network.EndpointSettings{})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return e.client.ContainerStart(ctx, proc.Name, startOpts)
|
||||
}
|
||||
|
Reference in New Issue
Block a user