LINUX.ORG.RU

развертывание и поддержка проекта на удаленном хосте

 ,


0

2

Есть проект под гитом. Есть удаленный хост, на который я могу входить по SSH по открытому ключу. И есть проблема - с удаленного хоста закрыт выход по http наружу, и я не хочу настраивать вход с хоста на какие то свои сервера по SSH. Т.е. я могу ходить только туда, а оттуда никуда попасть не могу.

Нужно развернуть проект на удаленном хосте, и как то удобно накатывать туда обновления (желательно средствами гита - ну то есть переносить только то что под гитом а не всякие объектники и пр мусор). В принципе даже хорошо если там не будет истории разработки, но хотелось бы понимать сходу какая ревизия развернута. Как это сделать Ъ?

ЗЫ. Я пока остановился на чем то вроде

git archive master | ssh dsthost "cd project; tar -x"
но меня терзают смутные сомнения... че то в супе не хватает;-(

★★★★★

Последнее исправление: AIv (всего исправлений: 1)

Git вообще к этой задаче отношения не имеет. Но если таки все нужные файлы лежат в репозитории, то можно сделать экспорт в tar архив и развернуть его на удалённом хосте через ssh. Даже не обязательно создавать промежуточный tar, можно передавать прямо пайпами через ssh.

mashina ★★★★★
()

А пункт «сборка проекта» у тебя как осуществляется? Или это какой-то hello world на пхп?

AnDoR ★★★★★
()

но меня терзают смутные сомнения... че то в супе не хватает;-(

Распаковывать нужно в новую директорию, так не почистишь удалённые файлы и если данные из директории во время обновления используются, то ещё получишь и неопределённые артефакты в поведении.

mashina ★★★★★
()
Ответ на: комментарий от mashina

Ну я чото подобное имел ввиду. Т.е. стандартных средств из коробки нету, надо велосипедить самому на баше?

AIv ★★★★★
() автор топика
Ответ на: комментарий от AIv

Хочешь отдельный инструмент из пары строчек на баше конкретно для твоего случая? В онтопике так не делают. Так то стандартный вариант это пакет, но и для него придётся написать пару строчек для корректной подмены.

mashina ★★★★★
()
Ответ на: комментарий от mashina

Меня скорее интересовала методика, а то тут эпизодически слышу в свой адрес обоснованную критику за приверженность к велосипедостроению. Поскольку во всяком конфигураторстве не силен, решил спросить - ок, если тут принято велосипедить бум велосипедить;-)

Спасибо!

AIv ★★★★★
() автор топика
Ответ на: комментарий от GoodRiddance

Это мысль, но боюсь одмин меня там прибьет за такое. Закрытый http это не просто так;-)

AIv ★★★★★
() автор топика
Ответ на: комментарий от AIv

Ну и заливай на сервер полученные артефакты, а не исходники.

AnDoR ★★★★★
()

Я когда делал деплоймент, то устроил себе 2 репозитория на целевом хосте. Первый - bare репозиторий, в который я синхронизирую изменения (git push...), второй - «рабочий», в котором я делаю pull из вышеупомянутого bare репозитория на хосте.

invy ★★★★★
()

А почему не сделать git push в репозиторий на ssh://dsthost?

iliyap ★★★★★
()
Ответ на: комментарий от invy

Можно и так. Но все равно немного через опу. КРоме того, в некоторых случаях не хочется что бы на целевом хосте была видна история разработки.

AIv ★★★★★
() автор топика

и я не хочу настраивать вход с хоста на какие то свои сервера по SSH

ssh умеет пробрасывать ключи доступа при подключении.

Нужно развернуть проект на удаленном хосте, и как то удобно накатывать туда обновления (желательно средствами гита - ну то есть переносить только то что под гитом а не всякие объектники и пр мусор). В принципе даже хорошо если там не будет истории разработки, но хотелось бы понимать сходу какая ревизия развернута. Как это сделать Ъ?

Воспользоваться какой нибудь системой деплоя, например capistrano если не бомбит от ruby, потому что если это не helloworld то рано или поздно тебе понадобится легкий способ откатывать на прошлую версию, выкатывать одновременно на разные сервера, и т.д. и т.п.

TDrive ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.