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.
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
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; } ' –