2017-10-19 33 views
-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不起作用。 我需要帮助理解这一点。

+0

命令'docker ps'有各种搜索容器的选项,请参阅文档https://docs.docker.com/engine/reference/commandline/ps/从此文档中提取出来'docker ps --filter“ name =怀旧“'还有'docker ps --filter status = running'使用这些选项 – user2915097

+0

当grep找不到匹配时它会返回退出代码1,这会导致脚本停止。我能够通过用'{grep hub ||'替换'grep hub'来解决它真正; }' –

回答

0

当grep找不到匹配时,它返回退出代码1,这导致脚本停止。我能够通过用{ grep -c hub || true; }代替grep -c hub来解决它。

相关问题