Tôi đang cố gắng để có được Jenkins để chạy các lệnh sau đây trong vòng Docker trên một nô lệ Jenkins:Jenkins không chờ đợi lệnh Docker để kết thúc
docker run -i -v `pwd`:/opt/myapp -w /opt/myapp -t mydockerimage /bin/bash -c "./setup_dev_env.sh && make all"
Vấn đề là khi tôi chạy này từ bên trong Jenkins quá trình Docker được sinh ra, nhưng Jenkins không chờ đợi và trả về thành công ngay lập tức. Tuy nhiên, nếu tôi thay thế lệnh Docker bằng một vòng lặp vô hạn mà Jenkins sẽ đợi, như mong đợi.
Khi tôi chạy lệnh này trực tiếp từ người xây dựng, như người dùng Jenkins, hệ thống đợi lệnh kết thúc (đó là điều tôi muốn xảy ra).
Tôi đã thử thực hiện docker attach
, nhưng điều đó cũng trả về ngay lập tức. docker wait
sẽ khiến Jenkins phải đợi, nhưng tôi sẽ không thấy bất kỳ đầu ra nào.
Có lẽ tôi sẽ về điều này hoàn toàn sai ...
- Làm thế nào tôi có thể nhận Jenkins để chờ lệnh này để kết thúc?
- Làm thế nào tôi có thể nhận được Jenkins để hiển thị đầu ra của lệnh chạy trong vùng chứa docker?
- Làm cách nào để có thể lấy mã thoát của lệnh chạy trong Docker được đặt sao cho Jenkins có thể xác định xem nó có thành công hay không thành công?
Tôi rất sẵn lòng chấp nhận bất kỳ câu trả lời giải thích tại sao điều này xảy ra hoặc nếu có một cách tốt hơn để xử lý việc này. –
t sẽ phân bổ một pseudo-tty, điều này là khác nhau với jenkins tty. vì vậy jenkins sẽ trở lại thành công ngay lập tức. đó là tất cả – xds2000