Могу ли я использовать существующий репозиторий git с открытием?

Нужно ли иметь git репо только при открытии? У меня уже есть битбакет /github git repo, и я бы предпочел только туда. Могу ли я просто подключиться к нему так, чтобы openhift получал намек?

Или для упрощения, я нажимаю только на github, но когда я хочу развернуть, я делаю что-то с openshift?

Я проверил этот, но меня это смутило: речь идет о слиянии выходных и новых (с открывающейся) git?

Ответ 1

У меня создалось впечатление, что вы еще не использовали git. Я бы посоветовал вам войти в git, чтобы полностью понять, как подтолкнуть ваш код к открытию. Тем не менее, позвольте мне попытаться объяснить вам следующие шаги: Как и в случае с git в общем, подход, который нужно выбрать, заключается в клонировании вашего другого репозитория git (например, на битбакете) на ваш локальный компьютер:

git clone <bitbucket-repo-url>

В вашем локальном клоне есть другое репо (битбакет и т.д.) в качестве удаленного репо. Ваше удаленное репо хранится с псевдонимом "origin" (псевдоним по умолчанию, используемый git, если вы клонируете). Затем вы добавляете репозиторий openshift как удаленный к вашему клону. Вы делаете это, в то время как явно используете псевдоним для удаленного репо, который вы добавляете, - я использую "openshift" в качестве псевдонима здесь:

git remote add openshift -f <openshift-git-repo-url>

Чтобы затем вывести код из локального репозитория git в openshift, вам сначала нужно объединить репозиторий openshift с локальным клоном bitbucket. Вы делаете это, издавая локально:

git merge openshift/master -s recursive -X ours

С помощью этой команды вы скажите git объединить главную ветвь в репозитории openshift git с локальным репо-сервером git. Вы сообщаете, что он объединяется с использованием стратегии рекурсивного слияния и выбирает вашу ( "нашу" ) версию, когда есть конфликты.

После выполнения слияния вы готовы нажать репозиторий git для открытия. Вы делаете это, делая:

git push openshift HEAD

Вы сообщите git, чтобы направить ваш локальный код в ветвь HEAD на удаленном репо, называемом "сперва" (псевдоним, который мы сохранили репозиторий openhift git, в некоторых абзацах далее).

кстати. Я написал блог jboss tools, который демонстрировал, как использовать openshift-java-клиент несколько месяцев назад: https://community.jboss.org/wiki/Enable-openshift-ciFullExampleUsingOpenshift-java-client. Вы увидите вышеуказанные шаги в последнем абзаце "Мы почти там".

Ответ 2

Я знаю, что вопрос 2-летний, и @adietisheim answer был принят. Мне лично не нравится объединять репозиторий openshift в моем локальном клоне, потому что я не хочу смешивать репозиторий OpenShift в главной ветке моего публичного репо.

Предполагая, что вы добавили удаленный доступ с помощью git remote add openshift <openshift-git-repo-url>, вот что я сделал бы:

Создайте новую локальную ветвь openshift на основе ветки master.

git checkout -b openshift

Вы можете сделать некоторые коммиты в ветке openshift, например, в конфигурациях развертывания приложений. Затем нажмите текущую ветвь на мастер сопоставления удаленных ссылок в репозитории OpenShift с флагом -f, чтобы перезаписать все в удаленной ветке master.

git push openshift master -f

Всякий раз, когда я хочу развернуть мое приложение в OpenShift, я бы проверил локальную ветвь openshift и слияние master с ней, а затем принудительно нажал OpenShift, однако -f может не понадобиться для следующих нажатий

git checkout openshift
git merge --no-ff master
git push openshift master -f

Ответ 4

Я согласен с ответом @adietisheim: вам нужно лучше понять git перед развертыванием с помощью openshift =)

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

Для этого у меня есть следующие советы:

  • отдельные параметры, зависящие от развертывания, от тех, которые не находятся в разных файлах. Например, я отделяю свои настройки базы данных от других параметров в разных файлах как:

    • settings_deploy/OpenShift

    • settings_deploy/локальный

    а затем символическая ссылка на ваш тест localhost как-то вроде:

    ln -s settings_deploy/localhost settings_deploy_file
    

    Другой вариант - обнаружить хост с помощью переменных среды:

    if 'OPENSHIFT_APP_NAME' in os.environ:
        //openshift configurations
    else:
        //localhost
    

    Это немного проще, поскольку позволяет вам устанавливать все конфиги в один файл. Это немного менее общий, так как если когда-либо еще один из ваших хостов предлагает переменную среды OPENSHIFT_APP_NAME (маловероятная для этого), метод прерывается. В любом случае, вам все равно нужно четко отделить то, что зависит от развертывания, а что нет.

  • создать локальный каталог развертывания

  • клонировать в него начальный шаблон с открывающейся сменой

  • создать развертывание script, которое:

    • привязывает все, от старого старого локального до их правильного местоположения, на

      жесткие ссылки быстро создают и используют очень мало памяти

      вы можете использовать что-то вроде:

      cp -lrf original_repo_dir deploy_repo_dir

    • сохраните только правильный файл settings_deploy в развертывании repo:

      cd deploy_repo

      mv settings_deploy/openshift settings_deploy_file

      rm -r settings_deploy

    • принудительное нажатие:

      cd deploy_repo

      git push -f origin master

    • очистить развертывание репо:

      git reset --hard HEAD

      git clean -df

для тех, кто интересуется развертыванием django, у меня есть пример в my github, в частности проверьте deploy.sh script и проект projects/elearn, который он развертывает.

Ответ 5

Вы должны иметь возможность передать существующий репозиторий Git в конвейер активов через

rhc create-app $APPNAME ruby-1.9 --from-code $GIT_LOCATION

Удаленный репозиторий Git затем отправляет исходное приложение для OpenShift.

В качестве второй возможности вы можете пропустить создание локального репозитория OpenSHift Git с помощью

rhc create-app $APPNAME ruby-1.9 --no-git

а затем используйте описанные выше шаги для объединения удаленного хранилища OpenShift в хранилище Git в локальный репозиторий Git.

Ответ 6

Ответ Mohannd является совершенным, но я хотел бы подытожить полное решение, если ему это еще нужно:

Чтобы использовать репозиторий github как репозиторий Openshift, сейчас нет идеального решения, потому что Openshfit использует git hooks для запуска развертывания или перераспределения на основе ваших коммитов. Тем не менее, самым разумным способом было бы использовать 2 репозитория (первый и один из ваших github) для одновременного ввода кода.

Для этого: Добавьте удаленный с именем "все" и добавьте к нему 2 push-адреса.

git remote add all ssh://[email protected]/~/git/yourapp.git
git remote set-url openshift-git-repo --push --add ssh://[email protected]/~/git/yourapp.git
git remote set-url github-repo --push --add [email protected]:youruser/yourapp.git

Затем установите пульт с именем "все" в качестве пульта дистанционного управления по умолчанию:

git push -u all

Чтобы зафиксировать и нажимать свой код, действуйте как обычно: он нажимает на 2 пульта дистанционного управления и развертывает на OpenShift

git add .
git commit -m "my commit"
git push

И посмотрите результат:

[master 3fc96b2] my commit
 1 file changed, 2 deletions(-)
MyLaptop:myapp User$ git push
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 291 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
To [email protected]:User/myapp.git
   a036a44..3fc96b2  master -> master
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 291 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Stopping PHP 5.4 cartridge (Apache+mod_php)
remote: Waiting for stop to finish
remote: Waiting for stop to finish
remote: Building git ref 'master', commit 3fc96b2
remote: Preparing build for deployment
remote: Deployment id is 9037d37a
remote: Activating deployment
remote: Starting PHP 5.4 cartridge (Apache+mod_php)
remote: Application directory "/" selected as DocumentRoot
remote: -------------------------
remote: Git Post-Receive Result: success
remote: Activation status: success
remote: Deployment completed with status: success
To ssh://[email protected]/~/git/myapp.git/
   a036a44..3fc96b2  master -> master
MyLaptop:myapp User$

Надеюсь, что это поможет

Ответ 7

У меня возникли проблемы с развертыванием ранее существующего репозитория кода в Openshift. В моем конкретном контексте, когда я попытался развернуть tomcat webapp, файлы конфигурации Openshift tomcat, включенные в папку .openshift, имели решающее значение.

Для меня было установлено, что папка .openshift в моем существующем исходном дереве, а также включение профиля openshift в мой файл maven pom.xml.

Это, скорее всего, то же самое, что и при объединении вашего репозитория с новым восходящим потоком вверх. Для меня это "почему" за следующим предложением в adietisheim отличный ответ:

"Чтобы затем вывести код из локального репозитория git в firsthift, вам сначала нужно объединить репозиторий openshift с вашим локальным клоном битбакета."

В моем случае это слияние было необходимо для получения файлов конфигурации из каталога .openshift. Мне потребовалось много времени, чтобы разобраться в этом, потому что нажатие без каталога .openshift по-прежнему создавало и развертывало мое приложение. Единственное, что я видел, это отчет о отсутствующих файлах jsp, что заставило меня подумать, что проблема связана с моей собственной конфигурацией web.xml и сервлета.

Ответ 8

Если вы используете github, вы можете настроить travis для развертывания при каждом изменении вашего репозитория github

http://docs.travis-ci.com/user/deployment/openshift/

Ответ 9

Есть способ сделать то, что вы хотите, то есть пропустить Openshift repo. Что вам нужно сделать, так это настроить дженкинсов и опросить ваш собственный репозиторий.

Здесь есть ссылка, в которой объясняется, как настроить ее с нуля: http://blog.anthavio.net/2014/01/deploy-to-openshift-from-github.html

Ответ 10

Если вы используете java, тогда есть альтернативный подход. Но даже при таком подходе вы все равно будете использовать репозиторий OpenShift git. Репозиторий git, предоставляемый OpenShift, - это то, как вы предоставляете OpenShift ваш код, ваши развертываемые варианты:

Вы можете - вместо того, чтобы передавать свой код в репозиторий OpenShift git - просто дайте ему свой военный файл. Вы клонируете репозиторий OpenShift git на свой локальный компьютер. Затем вы создаете войну из своего источника приложения и помещаете эту войну в папку развертывания в своем репозитории OpenShift git (клон). Затем вы добавляете, фиксируете и нажимаете свой локальный клон на OpenShift. После успешного нажатия, JBoss AS7 выберет вашу войну и развернет ее.

Ответ 11

ПРИНИМАЙТЕ ЛЕГКО!

шаг 1: Создать приложение. С вашим любимым методом (из gitRepository, pre-maker Openshift и т.д.). если вы используете консольный метод
Шаг 2: rhc git-clone nameApp
Шаг 3: rhc app-configure nameApp --auto-deploy
Шаг 4: НАСЛАЖДАЙТЕСЬ!