Рабочий процесс удаленной разработки php: git, symfony & hudson - PullRequest
1 голос
/ 19 сентября 2010

Отредактировано: (увидев ответ Люка)

Я ищу разработку веб-сайта, и вся работа будет выполняться удаленно (без локального сервера разработки). Причина в том, что у моей компании общего хостинга a2hosting есть особая конфигурация (symfony, mysql, git), которую я не хочу тратить на дублирование, когда я могу просто использовать ssh и разрабатывать удаленно или с помощью функций удаленного редактирования netbeans.

У меня вопрос, как я могу использовать git для разделения моего сайта на три области: live, staging и dev.

Вот моя начальная мысль:

public_html (живой сайт и git-репо)
тестирование: зеркало сайта, используемое для визуальных тестов (полное git-репо)
dev / ticket #: git-ветки public_html, используемые для функций и исправлений ошибок (полное git-репо)

Контроль версий с помощью git:

Начальная настройка:

cd public_html  
git init  
git add *  
git commit -m ‘initial commit of the site’  
cd ..  
git clone public_html testing  
mkdir dev

Разработка:

cd /dev
git clone ../testing ticket#
all work is done in ./dev/ticket#, 
then visit www.domain.com/dev/ticket# to visually test
make granular commits as necessary until dev is done
git push origin master:ticket#  
if the above fails:
    merge latest testing state into current dev work: git merge origin/master
    then try the push again
mark ticket# as ready for integration

процесс интеграции и развертывания:

cd ../../testing
git merge ticket#  -m "integration test for ticket# --no-ff (check for conflicts )
run hudson tests

visit www.domain.com/testing for visual test  

if all tests pass:  
    if this ticket marks the end of a big dev sprint:  
        make a snapshot with git tag  
        git push --tags origin  
    else  
        git push origin
        cd ../public_html
        git checkout -f  (live site should have the latest dev from ticket#)
else:
    revert the merge: git checkout master~1; git commit -m "reverting ticket#"
    update ticket# that testing failed with the failure details

Моментальные снимки:

Каждый основной спринт развертывания должен иметь стандартное имя и отслеживаться. Метод: тег git Соглашение об именах: TBD

Возврат сайта к предыдущему состоянию

если что-то пойдет не так, вернитесь к предыдущему снимку и отладить проблему в dev с новым билетом #. После исправления ошибки следуйте процесс развертывания снова.

Мои вопросы:

1-Имеет ли смысл этот рабочий процесс, если нет, какие-либо рекомендации 2-Правильно ли подходит мой подход к возврату или есть лучший способ сказать «вернуться к перед фиксацией х»

Спасибо, что нашли время прочитать этот ОЧЕНЬ длинный пост:)

1 Ответ

2 голосов
/ 19 сентября 2010

Я собираюсь ответить только на вопросы 1 - 3 (и кратко 5).Во-первых, я не думаю, что ваш канонический репозиторий должен размещаться на вашем производственном сервере.

Поскольку вы не хотите настраивать его локально, я бы посоветовал вам создать репозиторий где-нибудь на вашем сервере, в другом месте.чем public_html, отправьте его на GitHub (или на ваш выбор хостинга Git), затем git клонируйте в public_html и т. д.

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

Напомним:

public_html - ветвь master извлечена - просто сделайте git pull для обновления стадии - ветвь промежуточной проверки извлеченаdev - все ветви функций, над которыми вы работаете, и т. д.

Это всего лишь одна из стратегий git-ветвления, но она успешно используется моей командой.

Что касается 3, вам нужнонастройте Hudson так, чтобы он автоматически извлекал последние изменения при постановке.См. Каков рабочий процесс непрерывной интеграции с Hudson? или посмотрите на боковую панель справа, чтобы выяснить, как это работает.Суть CI в том, что его нужно автоматизировать, иначе это не CI:)

Наконец, простой способ ограничить доступ к сайту - использовать файл .htacess (при условии, что ваш хост использует Apache, который оникажется).См. http://httpd.apache.org/docs/2.2/howto/htaccess.html или Google .htaccess.

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