Тестирование / предварительный просмотр веток Github на сервере разработки - PullRequest
7 голосов
/ 24 июля 2011

Я только что перешел из SVN в GitHub.Я и моя команда выполняем локальные тесты, и мы фиксируем изменения и тестируем на центральном сервере разработки.Всякий раз, когда мы помещаем изменения в репозитории, я хотел бы автоматически перетаскивать изменения в любые ветви моих репозиториев в папки на моем dev-сервере.Это позволило бы мне и моей команде протестировать и предварительно просмотреть код друг друга с помощью нашего центрального сервера разработки.

В идеале я мог бы затем сопоставить субдомены с этими различными каталогами филиалов.Т.е. если ветвь называлась «рефакторинг», я мог бы проверить ее, используя http://refactor.devserver.com

Я думаю, это может привести к перехвату в моей конфигурации github, который запускает скрипт на сервере dev?Возможно, мне нужно использовать ci-сервер, такой как Hudson?

Редактировать: я могу легко запустить сценарий для извлечения главной ветви - мне нужно лишь перенести все измененные ветви в отдельные корневые папки, поэтому явозможность легко проверить любую ветку через собственный поддомен.(Или какой-то аналогичный способ автоматического развертывания и тестирования любых измененных веток)

Большое спасибо.

Ответы [ 2 ]

11 голосов
/ 26 июля 2011

Вот часть ответа на мой собственный вопрос ...

Я хотел, чтобы команда смогла форкнуть код и мгновенно показать его на URL-адресе, например: http://branch -name.devserver.com

Я установил директивы vhost в apache conf для сопоставления поддоменов с папками:

<VirtualHost *:80>
        ServerName www.devserver.com
        ServerAlias *.devserver.com
        VirtualDocumentRoot /var/www/devserver/%1/
</VirtualHost>

Я разветвляю код в github или на моемместная машина.Затем выполните эти команды на сервере dev

cd /var/www/devserver
git clone git@github.com:/user-name/repos-name

Переместите клонированную папку репозитория в папку с именем ветви, чтобы она стала корневой папкой виртуального хоста субдомена.

mv repos-name new-branch

Затем переключите репозитории с главного на новый филиал

cd /var/www/devserver/new-branch
git checkout new-branch

Теперь он доступен на http://new -branch.devserver.com

Затем после нажатияизменения в ветке на github - я перетаскиваю их на сервер dev

cd /var/www/devserver/new-branch
git pull

Теперь - если я хочу, чтобы вытягивание происходило автоматически, я мог бы настроить CI-сервер для прослушивания перехватчика git-хаба, который вызоветпотяните в каждую ветку папку.Похоже, Хадсон мог это сделать.

Я надеялся найти более разумный способ сделать это:

  1. Без клонирования репозиториев много раз
  2. Одной командой, которая эффективно обновляет все ветви, или ловушкой, котораяпозвольте мне использовать только ветвь, которая была обновлена ​​
  3. С подходящей структурой папок для каждой ветки - так что я мог протестировать любую ветку по определенному URL без необходимости связываться с http config каждый раз, когда я разветвляю код
  4. возможно, автоматически создается корневая папка для новых веток, чтобы они волшебным образом появлялись на сервере dev

Любые дальнейшие мысли приветствуются ...

1 голос
/ 24 июля 2011

Конечно, это можно сделать с помощью Hudson, если у вас есть определенная процедура автоматического развертывания. Фактически, я сделал подобную настройку около года назад - если изменения были внесены в мастер, Хадсон выполнил модульные тесты и в случае успеха был развернут в стадии подготовки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...