104 votes

Puis-je utiliser mon repo git existant avec openshift ?

Est-il nécessaire d'avoir un repo git sur openshift uniquement ? J'ai déjà un repo git bitbucket / github et je préfère pousser uniquement là. Puis-je simplement m'y connecter pour qu'openshift soit informé ?

Ou pour simplifier, je pousse seulement sur github, mais quand je veux déployer, je fais quelque chose avec openshift ?

J'ai vérifié este mais j'ai été troublé : il s'agit de fusionner l'ancien et le nouveau git (openshift) ?

229voto

adietisheim Points 1566

J'ai l'impression que vous n'êtes pas encore assez habitué à utiliser git. Je te conseille de te mettre à git pour bien comprendre comment pousser ton code vers openshift. Néanmoins, laissez-moi essayer de vous expliquer les étapes à suivre : Comme vous le feriez avec git en général, l'approche à choisir ici est de cloner votre autre repo git (ex. sur bitbucket) sur votre machine locale :

git clone <bitbucket-repo-url>

Votre clone local a ensuite votre autre repo (bitbucket etc.) comme repo distant. Votre repo distant est stocké avec l'alias "origin" (l'alias par défaut utilisé par git si vous clonez). Vous ajoutez ensuite le repo openshift comme remote à votre clone. Vous faites cela en utilisant explicitement un alias pour le repo distant que vous ajoutez - j'utilise "openshift" comme alias ici :

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

Pour pouvoir ensuite pousser le code de votre repo git local vers openshift, vous devez d'abord fusionner votre repo openshift avec votre clone bitbucket local. Vous faites cela en émettant localement :

git merge openshift/master -s recursive -X ours

Avec cette commande, vous demandez à git de fusionner la branche master du dépôt git d'openshift avec votre dépôt git local. Vous lui demandez de fusionner en utilisant la stratégie de fusion récursive et de choisir votre ("notre") version lorsqu'il y a des conflits.

Une fois la fusion exécutée, vous êtes prêt à pousser votre dépôt git vers openshift. Vous le faites en faisant :

git push openshift HEAD

Vous dites à git de pousser votre code local vers la branche HEAD du repo distant appelé "openshift" (l'alias où nous avons stocké le repo git d'openshift, quelques paragraphes plus haut).

Au fait. J'ai écrit un blog sur les outils jboss qui démontrait comment utiliser le client openshift-java il y a quelques mois : https://community.jboss.org/wiki/Enable-openshift-ciFullExampleUsingOpenshift-java-client . Vous remarquerez les étapes ci-dessus dans le dernier paragraphe "Nous y sommes presque".

6voto

Mohannd Points 62

Depuis votre dossier de projet, faites

git remote add backup user@server:/path/to/git/test.git
git push backup master

Vous pouvez lire Pousser vers deux origines git distantes à partir d'un seul dépôt y Changer l'origine distante de git .

5voto

Ciro Santilli Points 3341

Je suis d'accord avec la réponse de @adietisheim : vous devez mieux comprendre git avant de déployer avec openshift =)

Maintenant, même si vous comprenez git, il n'est pas forcément évident de déployer votre repo existant si votre structure de répertoire ne correspond pas à la structure de répertoire requise par openshift, et si vous souhaitez conserver votre ancienne structure de répertoire.

Pour cela, je vous donne les conseils suivants :

  • séparer les options qui dépendent du déploiement de celles qui n'en dépendent pas dans des fichiers différents. Par exemple, je sépare mes paramètres de base de données des autres paramètres dans des fichiers différents :

    • paramètres_deploy/openshift

    • paramètres_deploy/localhost

    et ensuite un lien symbolique vers votre test localhost comme quelque chose comme :

    ln -s settings_deploy/localhost settings_deploy_file

    Une autre option consiste à détecter l'hôte en utilisant des variables d'environnement :

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

    C'est un peu plus simple car cela vous permet de mettre toutes les configurations dans un seul fichier. C'est un peu moins général, car si jamais un autre de vos hôtes propose un fichier OPENSHIFT_APP_NAME variable d'environnement (peu probable pour celui-ci) la méthode se casse. Quoi qu'il en soit, vous devez toujours séparer clairement ce qui dépend du déploiement et ce qui n'en dépend pas.

  • créer un répertoire de déploiement local

  • clonez le modèle initial d'openshift dans celui-ci

  • créer un script de déploiement qui :

    • hardlinks tout de votre ancien local existant à leurs emplacements corrects à la

      Les liens durs sont rapides à créer et utilisent très peu de mémoire.

      vous pourriez utiliser quelque chose comme :

      cp -lrf original_repo_dir deploy_repo_dir

    • ne gardez que le bon settings_deploy dans le répertoire de déploiement :

      cd deploy_repo

      mv settings_deploy/openshift settings_deploy_file

      rm -r settings_deploy

    • pousser avec force :

      cd deploy_repo

      git push -f origin master

    • nettoyer le répertoire de déploiement :

      git reset --hard HEAD

      git clean -df

pour ceux qui sont intéressés par le déploiement de django, j'ai un exemple sur mon github En particulier, vérifiez le deploy.sh script et le projet projects/elearn qu'elle déploie.

4voto

stefankolb Points 38

Vous devriez être en mesure de passer un dépôt Git existant dans le pipeline d'actifs via

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

Le dépôt Git distant livre ensuite l'application initiale pour OpenShift.

Comme deuxième possibilité, vous pouvez sauter la création du dépôt Git local d'OpenSHift via

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

puis utilisez les étapes décrites ci-dessus pour fusionner le dépôt Git distant d'OpenShift dans votre dépôt Git local.

1voto

Bram Luyten Points 106

J'ai rencontré des problèmes pour déployer un dépôt de code préexistant sur Openshift. Dans mon contexte particulier, où j'ai essayé de déployer une application Web Tomcat, les fichiers de configuration de Tomcat Openshift inclus dans le dossier .openshift étaient cruciaux.

Ce qui a réglé le problème pour moi, c'est l'inclusion du dossier .openshift dans mon arbre source existant, ainsi que l'inclusion du profil openshift dans mon fichier pom.xml de maven.

C'est très probablement la même chose qui se produirait en fusionnant votre dépôt avec le nouveau dépôt openshift upstream. Pour moi, c'est le "pourquoi" de la phrase suivante dans la grande réponse d'adietisheim :

"Afin de pouvoir ensuite pousser le code de votre repo git local vers openshift, vous devez d'abord fusionner votre repo openshift avec votre clone bitbucket local."

Dans mon cas, cette fusion était nécessaire pour obtenir les fichiers de configuration du répertoire .openshift. Cela m'a pris beaucoup de temps à comprendre, car en poussant sans le répertoire .openshift, mon application se construit et se déploie avec succès. Le seul comportement que j'ai vu était un rapport sur les fichiers jsp manquants, ce qui m'a fait penser que le problème était lié à ma propre configuration web.xml et servlet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X