2016-03-08 4 views
0

У меня есть проект PHP/Laravel/JS в репозитории Git в Bitbucket.Git: deploy to OpenShift

Проект должен быть развернут в OpenShift через их систему развертывания на основе Git. Они создают репо для вашего приложения. Вы git clone это. Когда вам нужно развернуть только git push и OpenShift делает остальные:

  • останавливает приложение (веб-сервер);
  • записывает файлы проекта и configs (nginx.conf, например) в соответствующие местоположения;
  • выполняет пользовательские действия после развертывания (которые для Laravel по меньшей мере: composer update и php artisan migrate);
  • перезапускает приложение.

Круто, но:

  • * .php, nginx.conf, таможенный пост-сценарии развертывания и т.д., должны быть прижаты к как OpenShift и Bitbucket;
  • minified * .js, * .css - только OpenShift;
  • raw * .js, * .scss - Только битбакет;
  • gulpfile.js, конфигурация Vagrant и другие сотрудники Dev - Bitbucket;
  • Кэш Laravel, конфигурация IDE - ни OpenShift, ни Bitbucket.

Каков наилучший способ сделать это? Два .git-openshift и .git-bitbucket (с разным происхождением) вместо одного .git? Что относительно .gitignore? Не использовать систему развертывания OpenShift? Какой инструмент я должен использовать вместо этого? Или, может быть, использовать Hg вместо Git для Bitbucket?

ответ

0

Если вы хотите разные вещи в двух разных репозиториях, то я предлагаю вам создать два отдельных хранилища git. Затем вы можете создать собственный скрипт сборки, который помещает ваши скомпилированные/минированные файлы в отдельную папку/репо.

Другим вариантом является наличие orphanproduction branch на вашем текущем ретрансляторе битбака и присвоение производственного кода этой ветви.

git checkout --orphan production 
# You can delete all your files, they're still safe on master branch 
git rm -rf . 
# Ignore the stuff you don't want on openshift 
git add .gitignore 
# You need to make an initial commit 
git commit -m "Initial production commit" 

Чтобы установить deployment branch на OpenShift

# 1. Set the deployment branch with the rhc command line tool 
$ rhc app-configure <app> --deployment-branch production 
# Every time you push to openshift, push your production branch instead of master 
$ git push openshift production 

Пример рабочего процесса:

# Start from master branch 
git checkout master 
# Run your compilation scripts (whatever generates your production files) 
./my-build-script.sh 
# Then switch over to production branch 
$ git checkout production 
# Your changed files are still here, check it with git status, then add them 
$ git add my-production-files/* 
$ git commit -m "Add new built feature" 
$ git push openshift production 
+0

Спасибо за ответ. Но я боюсь, что мой (немой) образ мышления полностью отличается от вашего (правильный). Что вы имеете в виду, говоря: «И ваш производственный код был привязан к этой ветке»? Ну, теперь у меня есть производственная ветвь без истории и отдельный файл .gitignore. И у меня есть главная ветвь с другим .gitignore и кодом, готовым к развертыванию. 'git what' я должен делать до того, как« git push origin production »? – user3368115

+0

@ user3368115 проверить мои изменения, я добавил возможный рабочий процесс –

+0

Как я писал в моем исходном вопросе, у меня есть 4 вида файлов: BB, OS, оба, ни один. Ваш примерный рабочий процесс решает проблему с файлами типа «ОС», но не «обоими». ОК, 'git checkout production' не удаляет из рабочего дерева OS-файлы (автогенерация), поэтому я могу добавить-commit-push их. Но 'git checkout production' также возвращает оба файла (* .php) в свои производственные версии, которые уже развернуты.И я хочу развернуть их основные версии. – user3368115

Смежные вопросы