mirror of
https://gitea.com/gitea/act
synced 2025-02-17 05:15:49 +00:00
Cannot guarantee that all noisy logs can be removed at once. Comment them instead of removing them to make it easier to merge upstream. What have been removed in this PR are those that are very very long and almost unreadable logs, like <img width="839" alt="image" src="/attachments/b59e1dcc-4edd-4f81-b939-83dcc45f2ed2"> Reviewed-on: https://gitea.com/gitea/act/pulls/108 Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
83 lines
1.9 KiB
Go
83 lines
1.9 KiB
Go
//go:build !(WITHOUT_DOCKER || !(linux || darwin || windows || netbsd))
|
|
|
|
package container
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/docker/docker/api/types"
|
|
|
|
"github.com/nektos/act/pkg/common"
|
|
)
|
|
|
|
func NewDockerNetworkCreateExecutor(name string) common.Executor {
|
|
return func(ctx context.Context) error {
|
|
cli, err := GetDockerClient(ctx)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer cli.Close()
|
|
|
|
// Only create the network if it doesn't exist
|
|
networks, err := cli.NetworkList(ctx, types.NetworkListOptions{})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
// For Gitea, reduce log noise
|
|
// common.Logger(ctx).Debugf("%v", networks)
|
|
for _, network := range networks {
|
|
if network.Name == name {
|
|
common.Logger(ctx).Debugf("Network %v exists", name)
|
|
return nil
|
|
}
|
|
}
|
|
|
|
_, err = cli.NetworkCreate(ctx, name, types.NetworkCreate{
|
|
Driver: "bridge",
|
|
Scope: "local",
|
|
})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
}
|
|
|
|
func NewDockerNetworkRemoveExecutor(name string) common.Executor {
|
|
return func(ctx context.Context) error {
|
|
cli, err := GetDockerClient(ctx)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer cli.Close()
|
|
|
|
// Make shure that all network of the specified name are removed
|
|
// cli.NetworkRemove refuses to remove a network if there are duplicates
|
|
networks, err := cli.NetworkList(ctx, types.NetworkListOptions{})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
// For Gitea, reduce log noise
|
|
// common.Logger(ctx).Debugf("%v", networks)
|
|
for _, network := range networks {
|
|
if network.Name == name {
|
|
result, err := cli.NetworkInspect(ctx, network.ID, types.NetworkInspectOptions{})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if len(result.Containers) == 0 {
|
|
if err = cli.NetworkRemove(ctx, network.ID); err != nil {
|
|
common.Logger(ctx).Debugf("%v", err)
|
|
}
|
|
} else {
|
|
common.Logger(ctx).Debugf("Refusing to remove network %v because it still has active endpoints", name)
|
|
}
|
|
}
|
|
}
|
|
|
|
return err
|
|
}
|
|
}
|