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 openshift
op basis van de master
branch.
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 -f
om alles in de remote master
branch 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 -f
is 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_NAME
omgevingsvariabele 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_deploy
in 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/elearn
dat 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!