<rmcreative>

RSS

Простой автоматический деплой из репозитория github

20 сентября 2012

Делается довольно легко. Особенно, если деплоить нужно только последний коммит из master.

  1. Ставим на сервере git.
  2. Делаем clone своего репозитория. Лучше использовать URL только для чтения вроде git://github.com/samdark/yiiframework_ru_cookbook.git.
  3. Берём код ниже, заменяем /var/www/path/to/your/git/root на путь к склонированному репозиторию. Вливаем в вебрут сервера.
  4. Идём на страницу своего репозитория на github → admin → service hooks → WebHook URLs. Добавляем там URL залитого скрипта. Там же смотрим актуальные IP серверов github и сравниваем с теми, что в скрипте.
  5. Проверяем, что у вебсервера есть права писать в склонированные директории (в том числе и в скрытый .git).
  6. Наслаждаемся автоматическим деплоем.

Комментарии RSS

  1. №6703
    sleptor
    sleptor 20.09.2012, 13:58:26

    переменная HTTP_X_FORWARDED_FOR может быть легко подделана...

  2. №6704
    Sam
    Sam 20.09.2012, 14:00:34

    Кстати, да. Который раз попадаюсь. В Yii же сам фиксил.

  3. №6705
    Skiller
    Skiller 20.09.2012, 14:29:37

    Впринципе все что HTTP_X может подделано, это же дополнительные просто заголовки которые сервер передает как есть.

  4. №6707
    Sergii
    Sergii 20.09.2012, 14:41:23

    Тоже делаю подобным образом, но через phing, в котором выполняется несколько задач - бекап, миграции и т.п.

  5. №6708
    Никита
    Никита 20.09.2012, 15:34:35

    Интересно, есть ли такое у bitbucket.

  6. №6709
    none
    none 20.09.2012, 15:39:38

    Capistrano наше всё (-: И пофиг, github или bitbucket (((-:

  7. №6711
    Sam
    Sam 20.09.2012, 16:01:51

    Никита, есть.

    none, стоит ли ради такой простой задачки разворачивать Capistrano?

  8. №6713
    none
    none 20.09.2012, 16:38:36

    Ну я как бы "рельсовик", поэтому для меня это всё легко и просто и не напряжно, само собой разумеющееся. Мало того, Capistrano мне ещё и необходимый софт устанавливает, если сервер "голый".

  9. №6716
    Александр
    Александр 20.09.2012, 20:26:46

    Спасибо. Весьма полезно, и кстати не только для гитхаба. Сейчас на работе развернули свой ГитХаб на основе ГитЛаба, там тоже есть поддержка веб хуков. Наверно тоже настроим автодеплой ветки мастер.

  10. №6717
    Рустам
    Рустам 20.09.2012, 23:20:52

    Есть ещё брутальный способ: добавить комманду в крон для обновления репы =)

  11. №6720
    Михаил
    Михаил 21.09.2012, 12:31:44

    Да, очень простой способ. Только я пользуюсь маленьким шелл-скриптом, который лежит в cgi-bin отдельного подомена, поскольку большая часть проектов не на php.

    Код примерно такой: github.com/h4/pullto/blob/master/pullto.sh

  12. №6766
    Николай
    Николай 01.10.2012, 0:48:08

    Хотелось бы уточнить пару вопросов:

    1. Всегда ли в мастере находится стабильный код? Думаю, что хуки немного для других целей предназначены. Отправить инфо о коммите в багтрекер, для ежедневной сборки и т.д.

    2. Планируется ли Yii добавить в composer (сейчас не нашел). С его помощью можно было бы с не меньшим удобством деплоить проекты на Yii на сторонних серверах.

  13. №6774
    Sam
    Sam 01.10.2012, 19:59:41
    1. Смотря как обращаться с ветками.
    2. В Yii2 точно будет.
  14. №6796
    Anton
    Anton 04.10.2012, 8:37:07

    переменная HTTP_X_FORWARDED_FOR может быть легко подделана...

    Это критично для проекта ?

  15. №6797
    Anton
    Anton 04.10.2012, 8:40:41

    Кстати, а что если репозитарий платный ? Пароль и юзера же вводить необходимо

  16. №6798
    Михаил
    Михаил 04.10.2012, 11:16:35

    Автоматическая выкладка должна делаться по ssh-ключам. Для деплоя на гитхабе есть специальные deploy keys. Я недавно об этом написал стаью: designnotfound.ru/deploy-from-private-repo/

  17. №6800
    Sam
    Sam 04.10.2012, 12:24:03

    Anton, получится что есть теоретическая возможность задёргать редеплой.

  18. №7470
    SecondFrog
    SecondFrog 31.01.2013, 16:36:58

    Может кто-то поделится решением для вот такой задачи.

    Есть репозиторий на сервере. Нужно после каждого push(коммит) обновлять live версию сайта. Репозиторий и live версия находятся на одном сервере.

    Очень интересует простой вариант, через хуки и простенький bash скрипт. А не через таких монстров, как phing / Capistrano и тому подобные.

  19. №7471
    SecondFrog
    SecondFrog 31.01.2013, 16:41:31

    Забыл подписаться на получение новостей :)

  20. №7472
    Sam
    Sam 31.01.2013, 19:38:15

    Копать следует на тему post-commit hook.

  21. №9000
    Виктор
    Виктор 30.04.2014, 16:38:40

    Это получается, что у www должны быть права на запись во всю директорию приложения?

  22. №9004
    Sam
    Sam 01.05.2014, 12:36:50

    Виктор, да.

  1. Почта опубликована не будет.

  2. Можно использовать синтаксис Markdown или HTML.

  3. Введите ответ в поле. Щёлкните, чтобы получить другую задачу.