Нужно ли иметь репозиторий git только на openshift? У меня уже есть репозиторий bitbucket / github git, и я бы предпочел нажимать только туда. Могу я просто подключиться к нему, чтобы openshift получил представление?
Или для упрощения нажимаю только на github, а когда хочу развернуть, что-то делаю с openshift?
Я проверил это, но меня это смутило: речь идет о слиянии выхода и нового (openshift) git?
Ответы:
У меня такое впечатление, что вы еще не привыкли достаточно использовать git. Я бы посоветовал вам заглянуть в git, чтобы полностью понять, как подтолкнуть ваш код к openshift. Тем не менее, позвольте мне попытаться объяснить вам необходимые шаги: Как и в случае с git в целом, здесь можно выбрать подход к клонированию другого репозитория git (например, на bitbucket) на локальный компьютер:
git clone <bitbucket-repo-url>
Ваш локальный клон имеет другое ваше репо (битбакет и т. Д.) В качестве удаленного репо. Ваше удаленное репо хранится с псевдонимом origin (псевдоним по умолчанию, используемый git при клонировании). Затем вы добавляете репозиторий openshift как удаленный к своему клону. Вы делаете это, явно используя псевдоним для добавляемого удаленного репо - здесь я использую "openshift" в качестве псевдонима:
git remote add openshift -f <openshift-git-repo-url>
Чтобы затем иметь возможность протолкнуть код из локального репозитория git в openshift, вам сначала нужно объединить репозиторий openshift с вашим локальным клоном битбакета. Это можно сделать, выполнив локально:
git merge openshift/master -s recursive -X ours
С помощью этой команды вы указываете git объединить главную ветку в репозитории git openshift с вашим локальным репозиторием git. Вы говорите ему выполнить слияние, используя стратегию рекурсивного слияния, и выбрать свою («нашу») версию при возникновении конфликтов.
После выполнения слияния вы готовы отправить репозиторий git в openshift. Вы делаете это, делая:
git push openshift HEAD
Вы говорите git, чтобы он протолкнул ваш локальный код в ветвь HEAD удаленного репозитория под названием «openshift» (псевдоним, в котором мы сохранили репозиторий openshift git, в нескольких абзацах выше).
кстати. Несколько месяцев назад я написал блог об инструментах jboss, в котором демонстрировал, как использовать openshift-java-client: https://community.jboss.org/wiki/Enable-openshift-ciFullExampleUsingOpenshift-java-client . Вы заметите вышеуказанные шаги в последнем абзаце «Мы почти закончили».
источник
--allow-unrelated-histories
как git default был изменен, чтобы не разрешать слияние несвязанных историй.Я знаю, что этому вопросу 2 года, и ответ @adietisheim был принят. Мне лично не нравится объединять репозиторий openshift с моим локальным клоном, потому что я не хочу смешивать репо OpenShift с основной веткой моего публичного репо.
Предполагая, что вы добавили пульт
git remote add openshift <openshift-git-repo-url>
, вот что я бы сделал:Создайте новую локальную ветку
openshift
на основеmaster
ветки.Вы можете сделать некоторые коммиты в ветке,
openshift
например, конфигурации развертывания вашего приложения. Затем отправьте текущую ветвь на удаленный мастер сопоставления ссылок в репозитории OpenShift с флагом,-f
чтобы перезаписать все в удаленнойmaster
ветке.Всякий раз, когда я хочу развернуть свое приложение в OpenShift, я проверял локальную
openshift
ветку и объединялmaster
ветку с ней, а затем принудительно нажимаю на OpenShift, однако-f
может не потребоваться для следующих нажатий:источник
Из папки проекта сделайте
Вы можете прочитать « Отправка на два удаленных источника git из одного репозитория» и « Изменение удаленного источника git» .
источник
git push backup master
достаточно, вам не нужно указывать обе стороны refspec.git push -u all
команду : to 'all' для пульта дистанционного управления по умолчанию. При этомgit push
он впоследствии будет перемещен в 2 репозитория!Я согласен с ответом @adietisheim: вам нужно лучше понять git перед развертыванием с помощью openshift =)
Теперь, даже если вы понимаете git, не обязательно очевидно, как развернуть существующее репо, если ваша структура каталогов не соответствует структуре каталогов, требуемой openshift, и если вы хотите сохранить свою старую структуру каталогов.
Для этого у меня есть следующие советы:
отдельные параметры, которые зависят от развертывания, от тех, которые не находятся в разных файлах. Например, я отделяю настройки своей базы данных от других настроек по разным файлам:
settings_deploy / openshift
settings_deploy / localhost
а затем символическую ссылку на ваш тест localhost примерно так:
Другой вариант - обнаружить хост с помощью переменных среды:
Это немного проще, поскольку позволяет поместить все конфигурации в один файл. Это немного менее общий характер, поскольку, если когда-либо другой из ваших хостов предлагает
OPENSHIFT_APP_NAME
переменную среды (что маловероятно для этого), метод нарушается. В любом случае, вам все равно нужно четко разделять, что зависит от развертывания, а что нет.создать локальный каталог развертывания
клонировать в него исходный шаблон openshift
создать сценарий развертывания, который:
жестко связывает все, от вашего старого существующего локального до их правильных местоположений в
жесткие ссылки создаются быстро и используют очень мало памяти
вы можете использовать что-то вроде:
cp -lrf original_repo_dir deploy_repo_dir
сохраните только правильный
settings_deploy
файл в репозитории развертывания: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, у меня есть пример на моем github , в частности, посмотрите
deploy.sh
сценарий и проект,projects/elearn
который он развертывает.источник
Вы должны иметь возможность передать существующий репозиторий Git в конвейер активов через
Затем удаленный репозиторий Git доставляет исходное приложение для OpenShift.
В качестве второй возможности вы можете пропустить создание локального репозитория OpenSHift Git через
а затем выполните описанные выше действия, чтобы объединить удаленный репозиторий Git OpenShift с вашим локальным репозиторием Git.
источник
Ответ Моханда идеален, но я хотел бы резюмировать полное решение на случай, если оно понадобится кому-то еще:
Чтобы использовать репозиторий github в качестве репозитория Openshift, сейчас нет идеального решения, потому что Openshfit использует git-хуки для запуска развертывания или повторного развертывания на основе ваших коммитов. Однако самым разумным способом было бы использовать 2 репозитория (один openshift и ваш github) для одновременной отправки кода в.
Для этого: Добавьте пульт с именем «all» и добавьте к нему 2 push-адреса.
Затем установите пульт с именем all в качестве пульта push по умолчанию:
Чтобы зафиксировать и отправить свой код, действуйте как обычно: он будет нажимать на 2 пульта и развертывать на OpenShift
И смотрим результат:
Надеюсь это поможет
источник
Есть способ делать то, что вы хотите, например, пропустить репозиторий Openshift. Что вам нужно сделать, так это настроить jenkins и попросить его опросить ваш собственный репозиторий.
Здесь есть ссылка, объясняющая, как настроить его с нуля: http://blog.anthavio.net/2014/01/deploy-to-openshift-from-github.html
источник
Я столкнулся с проблемами при развертывании уже существующего репозитория кода в Openshift. В моем конкретном контексте, когда я пытался развернуть веб-приложение tomcat, решающее значение имели файлы конфигурации Openshift tomcat, включенные в папку .openshift.
Для меня это исправило включение папки .openshift в мое существующее дерево исходных текстов, а также включение профиля openshift в мой файл maven pom.xml.
Скорее всего, это то же самое, что и при слиянии вашего репозитория с новым исходным openshift. Для меня это «почему», стоящее за следующим предложением великого ответа Адитисхайма:
«Чтобы затем иметь возможность протолкнуть код из локального репозитория git в openshift, вы сначала должны объединить репозиторий openshift с локальным клоном битбакета».
В моем случае это слияние было необходимо для получения файлов конфигурации из каталога .openshift. Мне потребовалось много времени, чтобы разобраться, потому что при нажатии без каталога .openshift мое приложение по-прежнему собиралось и развертывалось успешно. Единственное, что я видел, это отчет об отсутствующих файлах jsp, который заставил меня подумать, что проблема связана с моим собственным web.xml и конфигурацией сервлета.
источник
Если вы используете github, вы можете настроить travis для развертывания каждый раз, когда вы вносите изменения в свой репозиторий github.
http://docs.travis-ci.com/user/deployment/openshift/
источник
Если вы используете java, есть альтернативный подход. Но даже при таком подходе вы все равно будете использовать репозиторий OpenShift git. Репозиторий git, предоставляемый OpenShift, - это то, как вы предоставляете OpenShift свой код, ваши развертываемые объекты:
Вы можете - вместо того, чтобы передавать свой код в репозиторий OpenShift git, - просто передать ему свой военный файл. Вы клонируете репозиторий OpenShift git на свой локальный компьютер. Затем вы создаете войну из своего источника приложения и помещаете эту войну в папку развертывания в вашем репозитории OpenShift git (клон). Затем вы добавляете, фиксируете и отправляете локальный клон в OpenShift. После успешного выполнения пуша JBoss AS7 выберет вашу войну и развернет ее.
источник
ПРОСТО!
Шаг 1: Создайте приложение. Вашим любимым методом (из gitRepository, pre-maker Openshift и т. Д.). если вы используете метод консоли,
шаг 2:
rhc git-clone nameApp
шаг 3:
rhc app-configure nameApp --auto-deploy
шаг 4: НАСЛАЖДАЙТЕСЬ!
источник