Próbuję dostać Jenkins uruchomić następujące polecenie w dokowanym na Jenkins slave:Jenkins nie czeka na polecenia Docker skończyć
docker run -i -v `pwd`:/opt/myapp -w /opt/myapp -t mydockerimage /bin/bash -c "./setup_dev_env.sh && make all"
Problem jest to, że gdy ten od wewnątrz Jenkins Proces Docker'a jest tworzony, ale Jenkins nie czeka na nie i natychmiast zwraca sukces. Jeśli jednak zamienię polecenie Docker na nieskończoną pętlę, Jenkins będzie czekał zgodnie z oczekiwaniami.
Kiedy uruchomię to polecenie bezpośrednio z budowla slave, jako użytkownik Jenkins, system czeka na zakończenie polecenia (co właśnie chcę zrobić).
Próbowałem już wykonać docker attach
, ale to również natychmiast zwraca. docker wait
spowoduje, że Jenkins zaczeka na to, ale nie zobaczę żadnego wyjścia.
Może idę o to wszystko źle ...
- Jak mogę uzyskać Jenkins czekać na to polecenie, aby zakończyć?
- W jaki sposób można uzyskać, aby Jenkins wyświetlał dane wyjściowe polecenia działającego w kontenerze dokowania?
- Jak ustawić kod zakończenia komendy uruchamianej w Dockerze tak, aby Jenkins mógł określić, czy zakończyło się pomyślnie, czy nie?
Cieszę przyjąć każdą odpowiedź, która wyjaśnia, dlaczego tak się dzieje, czy istnieje lepszy sposób, aby sobie z tym poradzić. –
t Przypisanie pseudo-tty, to jest inne z jenkins tty. więc jenkins natychmiast odniesie sukces. to wszystko – xds2000