1
0
mirror of https://github.com/woodpecker-ci/woodpecker.git synced 2025-11-23 21:44:44 +02:00

Improve agent backend loading and suppress expectable errors (#818)

* improve agent loop loading backend once

* supress container not found or stopped warnings
This commit is contained in:
Anbraten
2022-03-08 16:21:43 +01:00
committed by GitHub
parent 32d56ed795
commit e178b7b4b2
3 changed files with 38 additions and 28 deletions

View File

@@ -10,16 +10,15 @@ import (
var engines map[string]types.Engine
func init() {
loadedEngines := []types.Engine{
docker.New(),
// kubernetes.New(), // TODO: disabled for now as kubernetes backend has not been implemented yet
}
engines = make(map[string]types.Engine)
// TODO: disabled for now as kubernetes backend has not been implemented yet
// kubernetes
// engine = kubernetes.New("", "", "")
// engines[engine.Name()] = engine
// docker
engine := docker.New()
engines[engine.Name()] = engine
for _, engine := range loadedEngines {
engines[engine.Name()] = engine
}
}
func FindEngine(engineName string) (types.Engine, error) {

View File

@@ -4,6 +4,7 @@ import (
"context"
"io"
"os"
"strings"
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/network"
@@ -192,10 +193,10 @@ func (e *docker) Tail(ctx context.Context, proc *backend.Step) (io.ReadCloser, e
func (e *docker) Destroy(_ context.Context, conf *backend.Config) error {
for _, stage := range conf.Stages {
for _, step := range stage.Steps {
if err := e.client.ContainerKill(noContext, step.Name, "9"); err != nil {
if err := e.client.ContainerKill(noContext, step.Name, "9"); err != nil && !isErrContainerNotFoundOrNotRunning(err) {
log.Error().Err(err).Msgf("could not kill container '%s'", stage.Name)
}
if err := e.client.ContainerRemove(noContext, step.Name, removeOpts); err != nil {
if err := e.client.ContainerRemove(noContext, step.Name, removeOpts); err != nil && !isErrContainerNotFoundOrNotRunning(err) {
log.Error().Err(err).Msgf("could not remove container '%s'", stage.Name)
}
}
@@ -232,3 +233,10 @@ var (
Timestamps: false,
}
)
func isErrContainerNotFoundOrNotRunning(err error) bool {
// Error response from daemon: Cannot kill container: ...: No such container: ...
// Error response from daemon: Cannot kill container: ...: Container ... is not running"
// Error: No such container: ...
return err != nil && (strings.Contains(err.Error(), "No such container") || strings.Contains(err.Error(), "is not running"))
}