From 126bae69216174302b6d82a4c338dfef6681d4b9 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Thu, 9 Apr 2020 23:34:47 +0200 Subject: [PATCH] fix: removeDockerContainer --- .../__snapshots__/artifacts.spec.ts.snap | 8 +++--- .../__snapshots__/artifacts.spec.ts.snap | 2 +- .../__snapshots__/artifacts.spec.ts.snap | 8 +++--- .../__snapshots__/artifacts.spec.ts.snap | 2 +- .../__snapshots__/artifacts.spec.ts.snap | 8 +++--- .../gradle/__snapshots__/index.spec.ts.snap | 24 ++++++++++++++--- .../__snapshots__/artifacts.spec.ts.snap | 2 +- .../__snapshots__/artifacts.spec.ts.snap | 2 +- lib/util/exec/__snapshots__/exec.spec.ts.snap | 8 +++--- lib/util/exec/docker/index.ts | 27 +++++++++++-------- lib/util/exec/exec.spec.ts | 2 +- 11 files changed, 58 insertions(+), 35 deletions(-) diff --git a/lib/manager/bundler/__snapshots__/artifacts.spec.ts.snap b/lib/manager/bundler/__snapshots__/artifacts.spec.ts.snap index ce832abf7f..52534d46a3 100644 --- a/lib/manager/bundler/__snapshots__/artifacts.spec.ts.snap +++ b/lib/manager/bundler/__snapshots__/artifacts.spec.ts.snap @@ -20,7 +20,7 @@ Array [ }, }, Object { - "cmd": "docker ps --filter name=renovate_ruby -aq | xargs --no-run-if-empty docker rm -f", + "cmd": "docker ps --filter name=renovate_ruby -aq", "options": Object { "encoding": "utf-8", }, @@ -65,7 +65,7 @@ Array [ }, }, Object { - "cmd": "docker ps --filter name=renovate_ruby -aq | xargs --no-run-if-empty docker rm -f", + "cmd": "docker ps --filter name=renovate_ruby -aq", "options": Object { "encoding": "utf-8", }, @@ -110,7 +110,7 @@ Array [ }, }, Object { - "cmd": "docker ps --filter name=renovate_ruby -aq | xargs --no-run-if-empty docker rm -f", + "cmd": "docker ps --filter name=renovate_ruby -aq", "options": Object { "encoding": "utf-8", }, @@ -156,7 +156,7 @@ Array [ }, }, Object { - "cmd": "docker ps --filter name=renovate_ruby -aq | xargs --no-run-if-empty docker rm -f", + "cmd": "docker ps --filter name=renovate_ruby -aq", "options": Object { "encoding": "utf-8", }, diff --git a/lib/manager/cargo/__snapshots__/artifacts.spec.ts.snap b/lib/manager/cargo/__snapshots__/artifacts.spec.ts.snap index 687c058818..ef9ee459f6 100644 --- a/lib/manager/cargo/__snapshots__/artifacts.spec.ts.snap +++ b/lib/manager/cargo/__snapshots__/artifacts.spec.ts.snap @@ -64,7 +64,7 @@ Array [ }, }, Object { - "cmd": "docker ps --filter name=renovate_rust -aq | xargs --no-run-if-empty docker rm -f", + "cmd": "docker ps --filter name=renovate_rust -aq", "options": Object { "encoding": "utf-8", }, diff --git a/lib/manager/cocoapods/__snapshots__/artifacts.spec.ts.snap b/lib/manager/cocoapods/__snapshots__/artifacts.spec.ts.snap index c1a5c53081..9cd4619c1a 100644 --- a/lib/manager/cocoapods/__snapshots__/artifacts.spec.ts.snap +++ b/lib/manager/cocoapods/__snapshots__/artifacts.spec.ts.snap @@ -28,7 +28,7 @@ Array [ }, }, Object { - "cmd": "docker ps --filter name=renovate_cocoapods -aq | xargs --no-run-if-empty docker rm -f", + "cmd": "docker ps --filter name=renovate_cocoapods -aq", "options": Object { "encoding": "utf-8", }, @@ -68,7 +68,7 @@ Array [ }, }, Object { - "cmd": "docker ps --filter name=renovate_cocoapods -aq | xargs --no-run-if-empty docker rm -f", + "cmd": "docker ps --filter name=renovate_cocoapods -aq", "options": Object { "encoding": "utf-8", }, @@ -182,7 +182,7 @@ Array [ }, }, Object { - "cmd": "docker ps --filter name=renovate_cocoapods -aq | xargs --no-run-if-empty docker rm -f", + "cmd": "docker ps --filter name=renovate_cocoapods -aq", "options": Object { "encoding": "utf-8", }, @@ -245,7 +245,7 @@ Array [ }, }, Object { - "cmd": "docker ps --filter name=renovate_cocoapods -aq | xargs --no-run-if-empty docker rm -f", + "cmd": "docker ps --filter name=renovate_cocoapods -aq", "options": Object { "encoding": "utf-8", }, diff --git a/lib/manager/composer/__snapshots__/artifacts.spec.ts.snap b/lib/manager/composer/__snapshots__/artifacts.spec.ts.snap index fe23b9deea..a747946623 100644 --- a/lib/manager/composer/__snapshots__/artifacts.spec.ts.snap +++ b/lib/manager/composer/__snapshots__/artifacts.spec.ts.snap @@ -100,7 +100,7 @@ Array [ }, }, Object { - "cmd": "docker ps --filter name=renovate_composer -aq | xargs --no-run-if-empty docker rm -f", + "cmd": "docker ps --filter name=renovate_composer -aq", "options": Object { "encoding": "utf-8", }, diff --git a/lib/manager/gomod/__snapshots__/artifacts.spec.ts.snap b/lib/manager/gomod/__snapshots__/artifacts.spec.ts.snap index 6def232ae6..245615173f 100644 --- a/lib/manager/gomod/__snapshots__/artifacts.spec.ts.snap +++ b/lib/manager/gomod/__snapshots__/artifacts.spec.ts.snap @@ -76,7 +76,7 @@ Array [ }, }, Object { - "cmd": "docker ps --filter name=renovate_go -aq | xargs --no-run-if-empty docker rm -f", + "cmd": "docker ps --filter name=renovate_go -aq", "options": Object { "encoding": "utf-8", }, @@ -114,7 +114,7 @@ Array [ }, }, Object { - "cmd": "docker ps --filter name=renovate_go -aq | xargs --no-run-if-empty docker rm -f", + "cmd": "docker ps --filter name=renovate_go -aq", "options": Object { "encoding": "utf-8", }, @@ -141,7 +141,7 @@ Array [ }, }, Object { - "cmd": "docker ps --filter name=renovate_go -aq | xargs --no-run-if-empty docker rm -f", + "cmd": "docker ps --filter name=renovate_go -aq", "options": Object { "encoding": "utf-8", }, @@ -179,7 +179,7 @@ Array [ }, }, Object { - "cmd": "docker ps --filter name=renovate_go -aq | xargs --no-run-if-empty docker rm -f", + "cmd": "docker ps --filter name=renovate_go -aq", "options": Object { "encoding": "utf-8", }, diff --git a/lib/manager/gradle/__snapshots__/index.spec.ts.snap b/lib/manager/gradle/__snapshots__/index.spec.ts.snap index b979d1c730..4250c501d9 100644 --- a/lib/manager/gradle/__snapshots__/index.spec.ts.snap +++ b/lib/manager/gradle/__snapshots__/index.spec.ts.snap @@ -536,7 +536,13 @@ Array [ }, }, Object { - "cmd": "docker ps --filter name=renovate_gradle -aq | xargs --no-run-if-empty docker rm -f", + "cmd": "docker ps --filter name=renovate_gradle -aq", + "options": Object { + "encoding": "utf-8", + }, + }, + Object { + "cmd": "docker rm -f gradle output", "options": Object { "encoding": "utf-8", }, @@ -570,7 +576,13 @@ Array [ }, }, Object { - "cmd": "docker ps --filter name=renovate_gradle -aq | xargs --no-run-if-empty docker rm -f", + "cmd": "docker ps --filter name=renovate_gradle -aq", + "options": Object { + "encoding": "utf-8", + }, + }, + Object { + "cmd": "docker rm -f gradle output", "options": Object { "encoding": "utf-8", }, @@ -604,7 +616,13 @@ Array [ }, }, Object { - "cmd": "docker ps --filter name=renovate_gradle -aq | xargs --no-run-if-empty docker rm -f", + "cmd": "docker ps --filter name=renovate_gradle -aq", + "options": Object { + "encoding": "utf-8", + }, + }, + Object { + "cmd": "docker rm -f gradle output", "options": Object { "encoding": "utf-8", }, diff --git a/lib/manager/pipenv/__snapshots__/artifacts.spec.ts.snap b/lib/manager/pipenv/__snapshots__/artifacts.spec.ts.snap index 69c24bd4bc..e4f4a7327b 100644 --- a/lib/manager/pipenv/__snapshots__/artifacts.spec.ts.snap +++ b/lib/manager/pipenv/__snapshots__/artifacts.spec.ts.snap @@ -66,7 +66,7 @@ Array [ }, }, Object { - "cmd": "docker ps --filter name=renovate_pipenv -aq | xargs --no-run-if-empty docker rm -f", + "cmd": "docker ps --filter name=renovate_pipenv -aq", "options": Object { "encoding": "utf-8", }, diff --git a/lib/manager/poetry/__snapshots__/artifacts.spec.ts.snap b/lib/manager/poetry/__snapshots__/artifacts.spec.ts.snap index 1dbbe193b9..bc01d94f1f 100644 --- a/lib/manager/poetry/__snapshots__/artifacts.spec.ts.snap +++ b/lib/manager/poetry/__snapshots__/artifacts.spec.ts.snap @@ -65,7 +65,7 @@ Array [ }, }, Object { - "cmd": "docker ps --filter name=renovate_poetry -aq | xargs --no-run-if-empty docker rm -f", + "cmd": "docker ps --filter name=renovate_poetry -aq", "options": Object { "encoding": "utf-8", }, diff --git a/lib/util/exec/__snapshots__/exec.spec.ts.snap b/lib/util/exec/__snapshots__/exec.spec.ts.snap index 139bf9040e..98e090c4ea 100644 --- a/lib/util/exec/__snapshots__/exec.spec.ts.snap +++ b/lib/util/exec/__snapshots__/exec.spec.ts.snap @@ -6,16 +6,16 @@ Array [ "echo hello", "docker ps --filter label=renovate_child -aq | xargs --no-run-if-empty docker rm -f", "docker pull example/image", - "docker ps --filter name=example_image -aq | xargs --no-run-if-empty docker rm -f", + "docker ps --filter name=example_image -aq", "docker run --rm --name=example_image --label=renovate_child example/image bash -l -c \\"echo hello\\"", - "docker ps --filter name=example_image -aq | xargs --no-run-if-empty docker rm -f", + "docker ps --filter name=example_image -aq", "docker run --rm --name=example_image --label=renovate_child example/image bash -l -c \\"echo hello\\"", "echo hello", "echo hello", "docker ps --filter label=renovate_child -aq | xargs --no-run-if-empty docker rm -f", - "docker ps --filter name=example_image -aq | xargs --no-run-if-empty docker rm -f", + "docker ps --filter name=example_image -aq", "docker run --rm --name=example_image --label=renovate_child example/image bash -l -c \\"echo hello\\"", - "docker ps --filter name=example_image -aq | xargs --no-run-if-empty docker rm -f", + "docker ps --filter name=example_image -aq", "docker run --rm --name=example_image --label=renovate_child example/image bash -l -c \\"echo hello\\"", ] `; diff --git a/lib/util/exec/docker/index.ts b/lib/util/exec/docker/index.ts index eec51223d6..f8bda74ccb 100644 --- a/lib/util/exec/docker/index.ts +++ b/lib/util/exec/docker/index.ts @@ -114,23 +114,28 @@ function getContainerName(image: string): string { export async function removeDockerContainer(image): Promise<void> { const containerName = getContainerName(image); + let cmd = `docker ps --filter name=${containerName} -aq`; try { - const res = await rawExec( - `docker ps --filter name=${containerName} -aq | xargs --no-run-if-empty docker rm -f`, - { encoding: 'utf-8' } - ); - if (res?.stdout?.trim().length) { - const containerId = res.stdout.trim(); - logger.info( - { image, containerName, containerId }, - 'Finished Docker container removal' - ); + const res = await rawExec(cmd, { + encoding: 'utf-8', + }); + const containerId = res?.stdout?.trim() || ''; + // istanbul ignore if + if (containerId.length) { + logger.debug({ containerId }, 'Removing container'); + cmd = `docker rm -f ${containerId}`; + await rawExec(cmd, { + encoding: 'utf-8', + }); } else { logger.trace({ image, containerName }, 'No running containers to remove'); } } catch (err) /* istanbul ignore next */ { logger.trace({ err }, 'removeDockerContainer err'); - logger.info({ image, containerName }, 'Could not remove Docker container'); + logger.info( + { image, containerName, cmd }, + 'Could not remove Docker container' + ); } } diff --git a/lib/util/exec/exec.spec.ts b/lib/util/exec/exec.spec.ts index b2a5446dc1..3dd6c80716 100644 --- a/lib/util/exec/exec.spec.ts +++ b/lib/util/exec/exec.spec.ts @@ -74,7 +74,7 @@ describe(`Child process execution wrapper`, () => { const docker = { image }; const processEnv = envMock.full; const dockerPullCmd = `docker pull ${image}`; - const dockerRemoveCmd = `docker ps --filter name=${name} -aq | xargs --no-run-if-empty docker rm -f`; + const dockerRemoveCmd = `docker ps --filter name=${name} -aq`; const dockerPullOpts = { encoding }; const dockerRemoveOpts = dockerPullOpts; -- GitLab