Sto cercando di Jenkins per eseguire il seguente comando all'interno di finestra mobile su uno slave Jenkins:Jenkins non è in attesa per il comando Docker per finire
docker run -i -v `pwd`:/opt/myapp -w /opt/myapp -t mydockerimage /bin/bash -c "./setup_dev_env.sh && make all"
Il guaio è che quando ho eseguito questo dall'interno Jenkins viene generato il processo Docker, ma Jenkins non lo attende e restituisce immediatamente il successo. Se, tuttavia, sostituisco il comando Docker con un ciclo infinito, Jenkins aspetterà, come previsto.
Quando eseguo questo comando dalla schiava costruire direttamente, come l'utente Jenkins, il sistema attende per il comando alla fine (che è quello che voglio che accada).
Ho provato a fare un docker attach
, ma che restituisce anche subito. docker wait
causerà l'attesa di Jenkins, ma non vedrò nessuna uscita.
Forse ho intenzione di questo tutto sbagliato ...
- Come posso ottenere Jenkins di aspettare per questo comando per terminare?
- Come posso ottenere Jenkins per visualizzare l'output del comando in esecuzione nel contenitore finestra mobile?
- Come posso ottenere il codice di uscita del comando di marcia in Docker per avere caratteristiche tali che Jenkins possa determinare se è riuscita o meno?
Sono felice di accettare una risposta che spiega il motivo per cui questo accade o se c'è un modo migliore per gestire questa situazione. –
the t Alloca una pseudo-tty, questo è diverso con jenkins tty. così jenkins restituirà il successo immediatamente. È tutto – xds2000