Распространенный случай в пайплайнах, как ребята пишут в LF:
deploy:
stage: deploy
script:
- ssh ${USER}@${HOST} "docker pull"
- ssh ${USER}@${HOST} "docker down"
- ssh ${USER}@${HOST} "docker up -d"
- ssh ${USER}@${HOST} "....."
То есть на каждую команду, создается отдельная SSH-сессия. В большинстве случаев у тебя всё будет работать, но порой можно наступить на грабли.
На сервере могут быть установлены лимиты в ssh_config — MaxSessions, а плюсом еще работает Fail2ban или нечто подобное.
И по итогу пайплайн будет вечно делать хуйню, внезапно падать и т.п.
Что делать?
Передать команды в рамках одной сессии.
Например, так:
script:
- |
ssh ${USER}@${HOST} << EOF
docker pull ...
docker down ...
docker up -d ...
...
EOF
Либо пропихать так:
script:
- ssh ${USER}@${HOST} "docker pull ...; docker down ...; ..."
Учись сразу делать нормально и учитывать такие моменты.
Ну и с праздником тебя и твоих ребятишек!








Комментарии