2017-10-19 11 views
-1

J'ai un auto-serveur et gitlab ce mon YML fichier est'docker ps | grep lancer erreur « hub -c: Échec de la tâche: état de la sortie 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 

Je dois commencer récipient sinon exister. Pour cette raison, j'ai dû écrire un script pour supprimer le conteneur. Mais quand je lance le pipeline, je suis arrivé erreur

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 

Je ne comprends pas pourquoi la commande docker ps | grep -c hub ne fonctionne pas. Je dois aider à comprendre cela.

+0

La commande 'docker ps' dispose de diverses options pour rechercher un conteneur, voir le doc https://docs.docker.com/engine/reference/commandline/ps/ extrait de ce document' docker ps --filter " name = nostalgic "' et aussi 'docker ps --filter status = running' utilise ces options – user2915097

+0

lorsque grep ne trouve aucune correspondance, il renvoie le code de sortie 1, ce qui provoque l'arrêt du script. J'ai réussi à le résoudre en remplaçant 'grep hub' par' {grep hub || vrai; } ' –

Répondre

0

Lorsque grep ne trouve aucune correspondance, il renvoie le code de sortie 1, ce qui provoque l'arrêt du script. J'ai été en mesure de le résoudre en remplaçant grep -c hub par { grep -c hub || true; }.