Python 当我们重定向stderr时,jenkins作业挂起

Python 当我们重定向stderr时,jenkins作业挂起,python,amazon-web-services,jenkins,jenkins-pipeline,Python,Amazon Web Services,Jenkins,Jenkins Pipeline,我有一个jenkins管道作业来删除一些docker图像,我用python编写了如下脚本 cat <<EOF > fabfile.py from __future__ import with_statement from fabric.api import * from fabric.contrib.console import confirm import os env.use_shell=False env.password = os.environ['DEPLOY_PAS

我有一个jenkins管道作业来删除一些docker图像,我用python编写了如下脚本

cat <<EOF > fabfile.py
from __future__ import with_statement
from fabric.api import *
from fabric.contrib.console import confirm
import os
env.use_shell=False
env.password = os.environ['DEPLOY_PASSWORD']

def clean_aws_docker_registry_node_local_registry():
run("df -k")
#sudo("docker rmi -f \$(docker images -q)")
sudo("docker rmi -f \$(docker images -q) 2>/tmp/errors.txt")
run("df -k")
EOF
cat/tmp/errors.txt,工作正常。我可以删除重定向,但若docker rmi命令抛出任何错误,则立即生成显示为失败

我通过使用fab as登录aws服务器来运行这些命令 fab clean_aws_docker_registry_node_local_registry-u${USERNAME}-hx.x.x
请帮助我解决这个问题。

如果您不关心您的
docker rmi
命令是否实际删除了一个图像(可能它已经不存在了),您可以只在命令末尾添加
| true
。我这样做是因为我想删除图像,但如果其他作业已经删除了它们,我不希望作业失败。sudo(“docker rmi-f\$(docker images-q)2>/tmp/errors.txt”);true或sudo(“docker rmi-f\$(docker images-q)2>/tmp/errors.txt | true”)哪种方法是正确的。看起来您使用重定向只是为了保留命令问题,从而导致作业失败。在这种情况下,我会这样做:
sudo(“docker rmi-f\$(docker images-q)”)| true