Kan ik mijn bestaande git repo gebruiken met openshift?

Is het nodig om git repo alleen op openshift te hebben? Ik heb al bitbucket / github git repo en zou er de voorkeur aan geven alleen daar te pushen. Kan ik er gewoon in haken zodat openshift een aanduiding krijgt?

Of voor de vereenvoudiging, ik push alleen op github, maar wanneer ik wil implementeren, doe ik iets met openshift?

Ik heb ditmaar het bracht me in de war: het gaat over het samenvoegen van bestaande en nieuwe (openshift) git ?


Antwoord 1, autoriteit 100%

Ik heb de indruk dat je git nog niet genoeg gewend bent. Ik zou je aanraden om in git te komen om volledig te begrijpen hoe je je code naar openshift kunt pushen. Desalniettemin zal ik proberen u de betrokken stappen uit te leggen:
Zoals je met git in het algemeen zou doen, kun je hier kiezen door je andere git-repo (bijv. op bitbucket) naar je lokale machine te klonen:

git clone <bitbucket-repo-url>

Je lokale kloon heeft dan je andere repo (bitbucket etc.) als externe repo. Je externe repo wordt opgeslagen met de alias “oorsprong” (de standaardalias die door git wordt gebruikt als je kloont). Vervolgens voegt u de openshift-repo als afstandsbediening toe aan uw kloon. Je doet dat terwijl je expliciet een alias gebruikt voor de externe repo die je toevoegt – ik gebruik hier “openshift” als alias:

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

Om vervolgens de code van je lokale git-repo naar openshift te kunnen pushen, moet je eerst je openshift-repo samenvoegen met je lokale bitbucket-kloon. Dat doe je door lokaal uit te geven:

git merge openshift/master -s recursive -X ours

Met dit commando vertel je git om de master branch in de openshift git repo samen te voegen met je lokale git repo. Je vertelt het om samen te voegen met behulp van de recursieve samenvoegstrategie en om je (“onze”) versie te kiezen als er conflicten zijn.

Zodra de samenvoeging is uitgevoerd, ben je klaar om je git-repo naar openshift te pushen. Dat doe je door:

git push openshift HEAD

Je vertelt git om je lokale code te pushen naar de HEAD branch op de remote repo genaamd “openshift” (de alias waar we de openshift git repo op hebben opgeslagen, enkele paragrafen verderop).

tussen haakjes. Ik schreef een jboss tools-blog die enkele maanden geleden demonstreerde hoe de openshift-java-client te gebruiken: https://community.jboss.org/wiki/Enable-openshift-ciFullExampleUsingOpenshift-java-client. Je ziet de bovenstaande stappen in de laatste paragraaf “We zijn er bijna”.


Antwoord 2, autoriteit 10%

Ik weet dat de vraag twee jaar oud is en dat het antwoord van @adietisheimis geaccepteerd. Persoonlijk hou ik er niet van om de openshift-repo in mijn lokale kloon samen te voegen, omdat ik de OpenShift-repo niet in de master-branch van mijn openbare repo wil mengen.

Ervan uitgaande dat je de afstandsbediening hebt toegevoegd met behulp van git remote add openshift <openshift-git-repo-url>, zou ik het volgende doen:

Maak een nieuwe lokale branch openshiftop basis van de masterbranch.

git checkout -b openshift

Je zou een aantal commits kunnen maken op de branch openshift, zoals de configuraties van je app-implementatie.
Duw dan de huidige branch naar de remote ref matching master in de OpenShift repository met de vlag -fom alles in de remote masterbranch te overschrijven.

git push openshift master -f

Telkens wanneer ik mijn app in OpenShift wil implementeren, zou ik de lokale openshift-branch bekijken en de master-branch ermee samenvoegen, en vervolgens pushen naar OpenShift forceren, maar -fis mogelijk niet vereist voor de volgende push:

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

Antwoord 3, autoriteit 3%

Vanuit je projectmap, doe

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

Je kunt Pushing to two lezen git remote origins van één repositoryen git remote origin wijzigen.


Antwoord 4, autoriteit 2%

Ik ben het eens met het antwoord van @adietisheim: je moet git beter begrijpen voordat je het implementeert met openshift =)

Zelfs als je git begrijpt, is het niet per se duidelijk hoe je je bestaande repo moet implementeren als je directorystructuur niet overeenkomt met de directorystructuur die vereist is door openshift, en als je je oude directorystructuur wilt behouden.

>

Daarvoor heb ik de volgende tips:

  • verschillende opties die implementatieafhankelijk zijn van opties die niet in verschillende bestanden staan. Ik scheid bijvoorbeeld mijn database-instellingen van andere instellingen in verschillende bestanden als:

    • settings_deploy/openshift

    • settings_deploy/localhost

    en vervolgens een symbolische link naar uw localhost-test als iets als:

    ln -s settings_deploy/localhost settings_deploy_file
    

    Een andere optie is om de host te detecteren met behulp van omgevingsvariabelen:

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

    Dit is een beetje eenvoudiger omdat je alle configuraties in een enkel bestand kunt plaatsen. Het is iets minder algemeen, aangezien als ooit een andere van je hosts een OPENSHIFT_APP_NAMEomgevingsvariabele aanbiedt (onwaarschijnlijk voor deze), de methode breekt. Hoe dan ook, je moet nog steeds duidelijk scheiden wat implementatie-afhankelijk is en wat niet.

  • maak een lokale implementatiemap

  • kloon de oorspronkelijke openshift-sjabloon erin

  • maak een implementatiescript dat:

    • hardlinks alles van uw oude bestaande lokale naar hun juiste locaties op de

      hardlinks zijn snel te maken en gebruiken zeer weinig geheugen

      je zou zoiets kunnen gebruiken als:

      cp -lrf original_repo_dir deploy_repo_dir

    • bewaar alleen het juiste bestand settings_deployin de deploy-repo:

      cd deploy_repo

      mv settings_deploy/openshift settings_deploy_file

      rm -r settings_deploy

    • duwen forceren:

      cd deploy_repo

      git push -f origin master

    • maak de opslagplaats voor implementatie schoon:

      git reset --hard HEAD

      git clean -df

voor degenen die geïnteresseerd zijn in django-implementatie, ik heb een voorbeeld op mijn github, bekijk vooral het deploy.sh-script en het project projects/elearndat het implementeert.


Antwoord 5, autoriteit 2%

Je zou in staat moeten zijn om een ​​bestaande Git-repository door te geven aan de asset-pipeline via

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

De externe Git-repository levert dan de initiële applicatie voor OpenShift.

Als tweede mogelijkheid kunt u het aanmaken van de lokale OpenSHift Git-repository overslaan via

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

en gebruik vervolgens de hierboven beschreven stappen om de externe Git-repository van OpenShift samen te voegen met uw lokale Git-repository.


Antwoord 6, autoriteit 2%

Mohannds antwoord is perfect, maar ik wil graag de volledige oplossing samenvatten, voor het geval iemand anders het nodig heeft:

Om je github-repo als een Openshift-repo te gebruiken, is er nu geen perfecte oplossing, omdat Openshfit git-hooks gebruikt om de implementatie of herimplementatie te activeren op basis van je commits. De slimste manier zou echter zijn om 2 repo’s te gebruiken (die van de openshift en die van je github) om tegelijkertijd de code naar te pushen.

Om dit te doen:
Voeg een afstandsbediening toe met de naam “all” en voeg er 2 push-urls aan toe.

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

Stel vervolgens de afstandsbediening met de naam ‘all’ in als de standaard push-afstandsbediening:

git push -u all

Als u uw code wilt vastleggen en pushen, gaat u verder zoals gewoonlijk: hij drukt op de 2 afstandsbedieningen en wordt geïmplementeerd op OpenShift

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

En bekijk het resultaat:

[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$

Hopelijk helpt dit


Antwoord 7

Er is een manier om te doen wat je wilt, d.w.z. de repo van Openshift overslaan.
Wat je moet doen is een jenkins opzetten en deze je eigen repository laten pollen.

Er is hier een link die uitlegt hoe je het helemaal opnieuw kunt instellen:
http://blog.anthavio.net/2014/01 /deploy-to-openshift-from-github.html


Antwoord 8

Ik kwam problemen tegen bij het implementeren van een reeds bestaande coderepository in Openshift. In mijn specifieke context, waar ik probeerde een Tomcat-webapp te implementeren, waren de Openshift Tomcat-configuratiebestanden in de .openshift-map cruciaal.

Wat het voor mij oploste, was de opname van de .openshift-map in mijn bestaande broncodestructuur, evenals de opname van het openshift-profiel in mijn maven pom.xml-bestand.

Dit is hoogstwaarschijnlijk hetzelfde als wanneer je je repository samenvoegt met de nieuwe upstream-versie van openshift. Voor mij is dit het “waarom” achter de volgende zin in het geweldige antwoord van adietisheim:

“Om vervolgens de code van je lokale git-repo naar openshift te kunnen pushen, moet je eerst je openshift-repo samenvoegen met je lokale bitbucket-kloon.”

In mijn geval was deze samenvoeging nodig om de configuratiebestanden uit de .openshift-directory te halen. Het kostte me veel tijd om erachter te komen, omdat het pushen zonder de .openshift-directory er nog steeds voor zorgde dat mijn app met succes werd gebouwd en geïmplementeerd. Het enige gedrag dat ik zag, was een rapport over ontbrekende jsp-bestanden, waardoor ik dacht dat het probleem te maken had met mijn eigen web.xml- en servlet-configuratie.


Antwoord 9

Als je github gebruikt, kun je travis configureren om de implementatie uit te voeren telkens wanneer je een wijziging aanbrengt in je github-repository

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


Antwoord 10

Als je java gebruikt, is er een alternatieve benadering. Maar zelfs in deze benadering zou je nog steeds de OpenShift git-repository gebruiken. De git-repository die door OpenShift wordt geleverd, is hoe u OpenShift uw code, uw inzetbare(n) geeft:

Je kunt – in plaats van je code vast te leggen in de OpenShift git-repo – het gewoon je war-bestand geven. U kloont de OpenShift git-repo naar uw lokale computer. Je bouwt dan een oorlog op vanuit je applicatiebron en plaatst deze oorlog in de deployments-map in je OpenShift git repo (kloon). Vervolgens voegt u uw lokale kloon toe, legt u deze vast en pusht u deze naar OpenShift. Zodra de push succesvol is uitgevoerd, zal de JBoss AS7 jouw oorlog kiezen en deze inzetten.


Antwoord 11

MAAK EENVOUDIG!

stap 1: app maken. Met je favoriete methode (van gitRepository, pre-maker Openshift, etc). als je de consolemethode gebruikt
stap 2: rhc git-clone nameApp
stap 3: rhc app-configure nameApp --auto-deploy
stap 4: GENIET!

Other episodes