gpt4 book ai didi

linux - 如何在 Jenkins 中运行 docker rmi $(docker images -a -q) 作为 ssh 脚本的一部分

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:38:07 25 4
gpt4 key购买 nike

我正在构建一个 Jenkins 作业以在 AWS EC2 实例上构建 docker 容器,这是一个给出错误的 Jenkins 脚本示例:

#!/bin/bash -e
# Not giving the IP here but I guess you can understand
HOST = Some IP address of EC2 instance in AWS

# Current Project workspace
# Download source code and create a tar and then SCP it in to AWS EC2
# So my Code is copied in to AWS EC2 instance now ...
# Now do the SSH and run the script on AWS EC2 instance
ssh -o StrictHostKeyChecking=no -i MySecrets.pem ec2-user@$HOST \
"tar xvf pc.tar && \
cd my_project_source_code && \
docker stop $(docker ps -a -q) && \
docker rmi $(docker images -a -q) && \
sh -c 'nohup docker-compose kill > /dev/null 2>&1 &' && \
docker-compose build --no-cache && \
sh -c 'nohup docker-compose up > /dev/null 2>&1 &' "

当我在 Jenkins 中构建此作业时,它失败并在输出控制台上显示以下错误:

"docker stop" requires at least 1 argument(s). See 'docker stop --help'.

Usage: docker stop [OPTIONS] CONTAINER [CONTAINER...]

Stop one or more running containers Build step 'Execute shell' marked build as failure

所以我的问题是我的 bash 脚本有什么问题?

单独说明:

当我通过 CLI ssh 进入 EC2 时,我能够运行 docker stop $(docker ps -a -q)。但是当相同的命令在 Jenkins jobs bash shell 脚本中运行时,它不会将其识别为有效脚本。我在这里做错了什么?这似乎是我对如何在 Jenkins Job 的 bash shell 脚本中运行此命令的一些误解,但我不完全确定。

最佳答案

如果您希望脚本中的替换在远程端运行,则需要在本地 shell 不会首先尝试评估它的上下文中将其传递给 ssh。双引号不是那个上下文。

引用的 heredoc 将符合要求:

ssh -o StrictHostKeyChecking=no -i MySecrets.pem "ec2-user@$HOST" 'bash -s' <<'EOF'
tar xvf pc.tar || exit
cd my_project_source_code || exit
docker stop $(docker ps -a -q) || exit
docker rmi $(docker images -a -q) || exit
sh -c 'nohup docker-compose kill > /dev/null 2>&1 &' || exit
docker-compose build --no-cache || exit
sh -c 'nohup docker-compose up > /dev/null 2>&1 &' || exit
EOF

关于linux - 如何在 Jenkins 中运行 docker rmi $(docker images -a -q) 作为 ssh 脚本的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46162904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com