Композитор, Git и работен процес за внедряване

Това е по-общ въпрос относно Git, но го прилагам към SS, така че реших да попитам тук. Аз съм дизайнер, който уча Git.

Търся най-добрия начин за работа в среда за разработка и сървър на живо. Моята настройка сега е да използвам композитор и GitHub за Mac локално, за да работя върху проекти на моя Mac. След това използвам Beam за внедряване на жив сървър.

Проблемът, който имам, е, че не мога да ангажирам SS модули към моето репо за проекта. Използва GitHub за Mac и пише „неуспешно добавяне на module-name към индекса“. Все още не съм наясно защо се случва това. Защото те са подмодули с git?

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

И така, има ли заобиколно решение или по-добър метод за разполагане на живи сървъри, за който не знам?


person KenSander    schedule 04.12.2014    source източник


Отговори (2)


Аз управлявам модули с композитор и добавям composer.json и composer.lock към вашето git repo и всичко модулни директории към .gitignore. С композитора можете лесно да актуализирате рамката и модулите по-късно.

Можете да автоматизирате някои внедрявания, като използвате нещо като capistrano или като използвате git куки.

Capistrano работи от ваша страна, влиза в сървъра на живо, тегли и върши някои задачи вместо вас. Има някои рецепти за Capistrano за SilverStripe в дивата природа. Има някои предимства (напр. в dir за всяко издание, лесно връщане назад, архивиране на DB за всяко издание и т.н.), но ми се стори малко пресилено за много прости уебсайтове, които искам да разположа истинска актуална корекция много бързо.

С git hooks все още трябва да влезете в сървъра на живо, да отидете на вашия webroot и да стартирате git pull. Тогава git ще изтегли последните ви промени от репото и ще свърши някои задачи вместо вас. Имам тази git post-merge hook за 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 repo. Вместо това използвайте _ss_environment.php. По един за всяка машина.

person wmk    schedule 05.12.2014
comment
Говореше се и за внедряването на SilverStripe на 1-вата европейска конференция Silverstripe в Линц тази година: anselm.dk/static/talks/silverstripe-europe-meetup-2014/ - person wmk; 05.12.2014
comment
Благодаря много @wmk. Има страхотна информация, която трябва да разгледам. Все още се чудя за споделения хостинг, където нямам ssh/git/composer на живи сървъри. Beam е като capistrano изглежда и това, което използвам. Управлявам SS с композитор за модули, но тъй като те се изтеглят с .git директория, не мога да ги ангажирам към моето репо за проекта и по този начин не мога да използвам beam за разполагане на жив сървър, тъй като не са регистриран. Има ли начин да добавя модули към моето репо, за да мога да разположа на жив сървър? Това е само за заобиколно решение на споделения хостинг, където нямам достъп до композитора. - person KenSander; 05.12.2014
comment
Зависи от вашата IDE. С PHPStorm напр. (други със сигурност също) можете също да внедрите чрез ftp през IDE. Тъй като трябва да инсталирате целия проект локално за кодиране, можете да качите всички необходими файлове и сте готови. Използвам го за някои много прости сайтове, въпреки че абсолютно предпочитам ssh. Когато внедрявате чрез ftp, ще трябва да стартирате dev/build ръчно. И afaik capistrano може също да се внедри чрез ftp, така че изпълнява composer и т.н. локално и го поставя на сървъра. - person wmk; 06.12.2014
comment
Да, мислех за малки споделени хостинг сайтове, просто бих качил през FTP, но Beam поддържа ftp, както и ssh. Проблемът, който имам, е, че ако използвам композитор за управление на SS в dev сървър, не мога да проверя SS модули в моето собствено репо за проекта, тъй като модулът има своя собствена папка .git в директорията. Има ли начин да се заобиколи това? в GitHub за Mac dropbox. com/s/5m4mcz0n7uplqa9/ Ако можех да проверя всичко в моето собствено репо, мога да използвам Beam за внедряване чрез FTP за споделен хостинг и не трябва да стартирам композитор на жив сървър. Заобиколно решение за хакване - person KenSander; 06.12.2014
comment
Capistrano поддържа ftp внедряване. - person wmk; 08.12.2014
comment
както и Beam, както споменах. Но с Capistrano не трябва ли да проверявате ангажименти към Git и след това той използва това, за да реши кои файлове са нови/модифицирани и трябва да бъдат качени? И тъй като не мога да ангажирам модули към моето репо, тъй като те имат папка .git в тях, с Beam, той не знае да ги качи и аз трябва да прибягна до ръчно FTPиране на тях сам или да използвам композитор от страната на сървъра . Последното е добре, освен когато нямам достъп до споделен хостинг. Все още уча всичко, така че предполагам ще разгледам по-нататък и ще видя най-добрия вариант за споделен хостинг работен процес. - person KenSander; 09.12.2014

Не ви трябва нищо друго освен Git. Те имат този софтуер и инструменти, за да улеснят нещата, но стават твърде претрупани, объркващи и твърде много неща.

Оформление: на dev сървър инсталирайте git и стартирайте проекта

на сървър за разработка, редактирайте, добавяйте, изтривайте и предавайте файлове в репото

на prod инсталирайте git pull от git repo

когато разработвате, git commit към репото от dev

когато искате да публикувате, отидете на сървъра на живо и издайте gut pull

ето как го направих със cvs и svn. това е същата идея с git. работи като чар.

не забравяйте да направите ssh over http, по-добре е.

това е само моето мнение от личен опит; не го приемайте дума по дума. сигурен съм, че други са го направили по различен начин.

person unixmiah    schedule 04.12.2014
comment
bitbucket беше огромен фактор. - person unixmiah; 04.12.2014
comment
Не съм съгласен: Трябва да управлявате зависимости (включително модули) чрез Composer. Не използвайте Git подмодули, проверявайте кода във вашето хранилище или управлявайте зависимостите ръчно. Ако имате нужда от нещо като Beam е по-скоро въпрос на вкус — това не е задължително, но Git и Composer са текущата най-добра практика - person xeraa; 05.12.2014
comment
никога не използвайте git подмодули, те не са добро решение за управление в сравнение с composer - person Christopher Thomas; 10.02.2015