-1
我有一个自我gitlab服务器和我的YML文件是'docker ps |用grep -c枢纽”扔错误:作业失败:退出状态1
image: busybox:latest
stages:
- run_tests
run_tests_job:
stage: run_tests
script:
- docker run --rm -d -p 5555:5555--name hub .....
- sleep 5
- preparehub
- echo "Super job"
.auto_devops: &auto_devops |
# Auto DevOps variables and functions. preparehub
function preparehub() {
RUN_C=`docker ps | grep -c hub`
if [ $RUN_C -ne 0 ]; then
docker ps | grep hub | awk '{print $1}' | xargs docker stop
docker ps -a | grep hub | awk '{print $1}' | xargs docker rm
docker run --rm -d -p 5555:5555--name hub .....
fi
}
before_script:
- *auto_devops
我如果不存在启动容器。出于这个原因,我不得不写一个脚本来删除容器。 但是当我运行的管道,我得到了错误
Skipping Git submodules setup
$ # Auto DevOps variables and functions. preparehub
$ function preparehub() {
$ preparehub
$ RUN_C=`docker ps | grep -c hub`
ERROR: Job failed: exit status 1
我不明白为什么命令docker ps | grep -c hub
不起作用。 我需要帮助理解这一点。
命令'docker ps'有各种搜索容器的选项,请参阅文档https://docs.docker.com/engine/reference/commandline/ps/从此文档中提取出来'docker ps --filter“ name =怀旧“'还有'docker ps --filter status = running'使用这些选项 – user2915097
当grep找不到匹配时它会返回退出代码1,这会导致脚本停止。我能够通过用'{grep hub ||'替换'grep hub'来解决它真正; }' –