Задать вопрос

Как упростить работу с Bitbucket (кейс моего использования внутри)?

При разработке веб сайта я работаю локально и скидываю код на bitbucket. Оттуда я клонирую сайт на хостинг и запускаю. Когда мне нужно продолжать работу с этим сайтом и нужно чтобы сайт на хостинге был в актуальном состоянии, я как обычно, отправляю код в bitbucket, затем захожу по SHH к хостингу и оттуда тяну изменения с bitbucket. Мне это надоело каждый раз делать. Как можно более или менее автоматизировать этот процесс, чтобы я не делал два телодвижения? Мне нужно, чтобы и в хостинге был актуальный код, но при этом я не делал два шага.
  • Вопрос задан
  • 749 просмотров
Подписаться 5 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • ProductStar
    Python + Flask + Git: веб-разработка с нуля
    2 месяца
    Далее
  • Учебный центр IBS
    DEV-007 Введение в систему контроля версий Git
    1 неделя
    Далее
  • Stepik
    Git (система контроля версий)
    1 неделя
    Далее
Решения вопроса 2
eX1stenZ
@eX1stenZ
Web Dev
А зачем? давай представим ситуацию что Вы накосячили, и запушили код удаления всех юзеров, ну не знаю просто так, а потом на локале это исправили

В общем это нормально, но все-же копать можно в сторону Хуков (Hooks)
Ответ написан
slimus
@slimus
Symfony, Golang
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 6
customtema
@customtema
arint.ru
Использую rsync.

Не как альтернатива, а как дополнение к mercurial. Как средство для таких быстрых обновлений.

Для пущего удобства создал файлик update.sh, который хранится в корне проекта:

rsync -vzPurp --exclude 'files' ./* пользователь@айпишник:/home/путь/к/нужной/директории
Ответ написан
Комментировать
@RomkaChev
Если 10$ в месяц не критично - используйте deploybot.com - первый репозиторий (вроде) бесплатно. Сразу забудете про мороку с хуками.
Ответ написан
Комментировать
k12th
@k12th
console.log(`You're pulling my leg, right?`);
dokku. При пуше в специальный ремоут (типа git push master production) код деплоится куда надо. Подробнее 1, 2.
Ответ написан
Комментировать
dmitriylanets
@dmitriylanets
веб-разработчик
codeship.io отлично деплоит проекты с bitbacket на любой сервер по ssh с помощью rsync за секунды (100 деплоев в месяц бесплатно)
Ответ написан
Комментировать
eruditecat
@eruditecat
Красноглазик
Но у Вас же есть рабочая development-версия сайта, верно? И тестируете работоспособность Вы именно на ней? Если так, толкать новый код в продакшн придётся не так уж и часто. Ну, например, поводом для этого могут служить только новая фича или багфикс. А лучше серия оных. При этом все изменения целостные и логически завершённые. Ну и часто ли? Раз в день? ИМХО, время, потраченное на запрашиваемую Вами оптимизацию, не окупится. А ели уж очень хочется, то самое простое решение можно написать самому и положить в ~/bin/.
Ответ написан
@ashumkin
системный разработчик
в дополнение к хукам (я не в курсе, какие хуки предоставляет bitbucket, а локального post-push хука в Git нет):
не обязательно "заходить по SSH на хостинг", чтобы там вытянуть изменения (я подозреваю, что это происходит "ручками", что и надоело, ибо надо зайти, сменить каталог, выполнить git pull... так?)
это можно и автоматизировать, т.к. ssh - не обязательно интерактивная сессия. позволяет и выполнить команду (ssh <host> command)
то есть
ssh <remotehost> git pull --work-tree=<working_copy> --git-dir=<working_copy>/.git

зайдёт на <remotehost>, сделает git pull для каталога , и выйдет.
А вкупе с alias'ами Git'а, можно сделать alias вроде
git config --global alias.push_and_deploy '!git push <bitbucket> &&  ssh <remotehost> git pull --work-tree=<working_copy> --git-dir=<working_copy>/.git'

тогда при выполнении
git push_and_deploy
выполнится всё, что указано в alias'е (подробнее см. git alias --help), то есть код запушится на BitBucket, и если это будет успешно, то вытянется сразу на хостинге
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
Made In Dream Санкт-Петербург
от 100 000 до 220 000 ₽
от 250 000 до 320 000 ₽