Инвестирую кусок времени в tmux, а именно, в его детачед режим. Фактически, это такой извращённый (или нет?) метод запускать программы в параллель, так, чтобы их выводы не перемешивались.
Я очень, очень, очень устал бороться с всеми CI мира за matrix'ы и вытекающее из них. У меня сейчас есть гипотеза, что отказ от matrix в пользу банального tmux'а, который запускает N сессий в параллель, сохраняет их вывод в файл, а потом дампает их на экран в разумном порядке, возможно, удобнее, чем борьба с птичьим языком CI.
Потенциально, управление tmux'ом может быть даже не на баше, а на чём-то более дружественном к программисту. В этой ситуации можно написа... wait
https://github.com/tmux-python/libtmux
Ну вот, уже всё написано.
Пожалуй, одно сложное место, о котором я думаю, это "как мне узнать, что все программы во всех сессиях закончились". ...
Возможно, я могу просто послать C-d после capture. Если оно правильно отрабатывает порядок выполнения, то Ctrl-D будет отрабатывать сразу же после завершения программы (как Ctrl-D в терминале).
Почему tmux, а не просто subprocess.run? Возможность отлаживать это локально, включая возможность переключаться между сессиями.
... О, я осознал проблему, которой надо заняться. А как быть с кодом возврата? Я хочу знать кто из них упал, а кто нет.
Я очень, очень, очень устал бороться с всеми CI мира за matrix'ы и вытекающее из них. У меня сейчас есть гипотеза, что отказ от matrix в пользу банального tmux'а, который запускает N сессий в параллель, сохраняет их вывод в файл, а потом дампает их на экран в разумном порядке, возможно, удобнее, чем борьба с птичьим языком CI.
Потенциально, управление tmux'ом может быть даже не на баше, а на чём-то более дружественном к программисту. В этой ситуации можно написа... wait
https://github.com/tmux-python/libtmux
Ну вот, уже всё написано.
Пожалуй, одно сложное место, о котором я думаю, это "как мне узнать, что все программы во всех сессиях закончились". ...
Возможно, я могу просто послать C-d после capture. Если оно правильно отрабатывает порядок выполнения, то Ctrl-D будет отрабатывать сразу же после завершения программы (как Ctrl-D в терминале).
Почему tmux, а не просто subprocess.run? Возможность отлаживать это локально, включая возможность переключаться между сессиями.
... О, я осознал проблему, которой надо заняться. А как быть с кодом возврата? Я хочу знать кто из них упал, а кто нет.