2014-12-04 2 views
3

Это более общий вопрос относительно Git, но я применяю его к SS, поэтому подумал, что попрошу здесь. Я дизайнер, изучающий Гит.Composer, Git and Deployment Workflow

Я ищу лучший способ работать с средой разработки и жить сервером. Теперь моя настройка - использовать композитор и GitHub для Mac для работы над проектами на моем Mac. Затем я использую Beam для развертывания на сервере.

Проблема, с которой я сталкиваюсь, заключается в том, что я не могу передать модули SS для своего репо для проекта. Используя GitHub для Mac, он говорит: «Не удалось добавить имя модуля для индексации». Я все еще не понимаю, почему это происходит. Потому что они подмодули с git?

Так что я использую Beam для развертывания таких вещей, как тема, пользовательский код для живого сервера, а затем с живого сервера. Я вхожу в систему и запускаю композитор для установки и обновления модулей. Было бы идеально, если бы я мог просто нажать все с моего сервера dev вживую, и вам не нужно входить в систему и выполнять команды композитора на реальном сервере. Это также поможет клиентским сайтам, на которых нет композитора, установленного на чистом общем хостинге.

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

ответ

0

Вам не нужно ничего, кроме Git. У них есть это программное обеспечение и инструменты, чтобы облегчить ситуацию, но он слишком запутан, запутан и слишком много.

Layout: на сервере Dev установить мерзавца и запустить проект

на сервере Dev, редактировать, добавлять, удалять и фиксировать файлы в репозиторий

на прод установить git pull от мерзавца репо

при разработке, git commit в репозиторий от разработчика

когда вы хотите опубликовать, перейдите на сервере и выпуск кишки живых тянуть

вот как я сделал это с cvs и svn. его та же идея с git. Отлично работает.

обязательно сделайте ssh over http, его лучше.

Это только мое мнение из личного опыта; не принимайте это слово в слово. Я уверен, что другие сделали это по-другому.

+0

bitbucket был огромным фактором. – unixmiah

+1

Я не согласен: вам следует управлять зависимостями (включая модули) через Composer. Не используйте подмодули Git, проверяйте код в своем репозитории или управляйте зависимостями вручную. Если вам нужно что-то вроде Beam, это скорее вопрос вкуса - это необязательно, но Git и Composer - это лучшая сегодняшняя практика. – xeraa

+0

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

2

Я управляю модулями с composer и добавляю composer.json и composer.lock в ваш git repo и все каталоги модулей до .gitignore. С композитором вы можете легко обновить структуру и модули позже.

Вы можете автоматизировать некоторые развертывания, используя что-то вроде capistrano или используя git hooks.

Capistrano работает с вашей стороны, он регистрируется на реальном сервере, тянет и выполняет некоторые задания для вас. В Wildstripe есть несколько капистральных приемников. Он имеет некоторые преимущества (например, для каждого релиза, легкий откат, резервное копирование БД для каждой версии и т. Д.), Но для меня это немного перегрузило очень простые сайты, и я хочу быстро развернуть реальное исправление.

С помощью git-крючков вам все равно придется заходить на сервер, перейдите на свой веб-сайт и запустите git pull. Затем git вытащит ваши последние изменения из репо и выполнит некоторые задания для вас. У меня есть эта git post-merge hook for SilverStripe работает (просто скопировать сценарий .git/hooks/post-merge на живом сервере):

#!/bin/bash 
echo "running git post receive hook..." 
DIR=$(git rev-parse --show-toplevel) 

if [ -e "$DIR/composer.json" ]; then 
if [ -d "$DIR/vendor" ]; then 
composer.phar install 
else 
composer.phar update 
fi 
fi 

echo "running dev/build" 
sudo -u www-data php $DIR/framework/cli-script.php dev/build flush=1 

Он работает composer install или composer update и в dev/build для меня автоматически.

Еще один совет: не указывайте свои учетные данные базы данных или dev/test/live в своем репозитории git. Вместо этого используйте _ss_environment.php. Один для каждой машины.

+0

Был также разговор о развертывании SilverStripe на 1-й конференции Silverstripe Europe в Линце в этом году: http://www.anselm.dk/static/talks/silverstripe-europe-meetup-2014/deployment.pdf – wmk

+0

Большое спасибо @wmk. Для меня есть какая-то большая информация. Мне все еще интересно об общем хостинге, где у меня нет ssh/git/composer на живых серверах. Луч как капистрано, кажется, и то, что я использовал. Я управляю SS с композитором для модулей, но поскольку они загружаются с помощью каталога .git, я не могу передать их в свое репо для проекта, и поэтому я не могу использовать луч для развертывания на реальном сервере, поскольку он не является . Есть ли способ добавить модули в мое репо, чтобы я мог развернуть сервер? Это только для обхода общего хостинга, где у меня нет доступа к композитору. – KenSander

+0

Зависит от вашей среды разработки. С помощью PHPStorm, например. (другие наверняка тоже), вы также можете развернуть через ftp через IDE. Поскольку вам нужно установить весь проект локально для кодирования, вы можете загрузить все необходимые файлы, и все готово. Я использую его для некоторых очень простых сайтов, хотя я абсолютно предпочитаю ssh. При развертывании через ftp вам придется запускать 'dev/build' вручную. И afaik capistrano также может развертываться через ftp, поэтому он запускает композитор и т. Д. Локально и помещает его на сервер. – wmk