Я настроил Jenkins в docker на отдельном сервере. Jenkins подключается к серверу по ssh с помощью плагина Publish over ssh и просто делает на удаленном сервере последовательно git pull, composer и билд angular и тд.
cd /dir && git pull
wait
cd /dir && php yii migrate --interactive=0
wait
cd /dir && composer install
wait
cd /dir && npm install
wait
cd /dir && ng build --prod
wait
Я заметил, что при какой-то ошибке статус билда в Jenkins успешный, что сбивает с толку а лог выплнения команд сохраняется как-то непоследовательно.