有没有办法“捕获” CI 脚本中的 /usr/bin/dpkg 错误并重试几次?

有没有办法“捕获” CI 脚本中的 /usr/bin/dpkg 错误并重试几次?

我使用 Docker 的 debian:latest 映像和 Debian Sid 的 Chromium/Firefox 软件包进行多阶段、多架构 Docker 构建过程。有时,在构建图像时,某些事情会失败并出现以下错误:

Errors were encountered while processing:
#0 221.2  system-config-printer-common
#0 221.2  system-config-printer
#0 221.3 E: Sub-process /usr/bin/dpkg returned an error code (1)

如果我重新运行构建,它就会起作用。这表明它不一定是损坏的包裹。因为这是一个自动构建,所以我想知道是否有一种方法可以“捕获”这些错误并重试自动失败的任何步骤?

答案1

如果您确定该命令最终会成功,您可以使用 重试until。在您的容器构建中:

until apt install package; do :; done

或者如果您想重新运行整个构建:

until docker build …; do :; done

这些命令可以调整为重试最多预定次数

然而,就您的情况而言,除非您确实需要system-config-printer(这在容器映像中会令人惊讶),否则最好完全避免安装它 - 首先尝试apt install --no-install-recommends.

相关内容