Posso usar meu repository do git existente com o openshift?

É necessário ter o git repo no openshift apenas? Eu já tenho o repository bitbucket / github gitub e prefiro apenas pressionar lá. Posso simplesmente ligar a ele para que o openshift seja intimado?

Ou para simplificação, eu só envio no github, mas quando eu quero implantar, eu faço algo com o openshift?

Eu chequei isso, mas isso me confundiu: está falando sobre fusão e novo (openshift) git?

Tenho a impressão de que você não está acostumado a usar o git o suficiente ainda. Eu aconselho você a entrar no git para entender completamente como empurrar seu código para o openshift. No entanto, deixe-me tentar explicar-lhe os passos envolvidos: Como você faria com o git em geral, a abordagem para escolher aqui é clonar o seu outro git repo (ex. No bitbucket) para a sua máquina local:

git clone

O seu clone local tem então o seu outro repo (bitbucket etc.) como repo remoto. Seu repository remoto é armazenado com o alias “origin” (o alias padrão usado pelo git se você clona). Você então adiciona o repository openshift como remoto ao seu clone. Você faz isso enquanto explicitamente usa um alias para o repository remoto que você adiciona – Eu estou usando “openshift” como alias aqui:

git remote add openshift -f

A fim de, em seguida, ser capaz de empurrar o código do seu repository git local para openshift você primeiro tem que mesclar seu repository openshift com o seu clone bitbucket local. Você faz isso emitindo localmente:

git merge openshift/master -s recursive -X ours

Com este comando você diz ao git para mesclar o branch master no repository openshift git com o seu repository git local. Você diz para mesclar usando a estratégia de mesclagem recursiva e para escolher sua (“nossa”) versão quando houver conflitos.

Uma vez que a fusão é executada, você está pronto para empurrar seu repository git para o openshift. Você faz isso fazendo:

git push openshift HEAD

Você diz ao git para empurrar seu código local para a ramificação HEAD no repository remoto chamado “openshift” (o alias que armazenamos no repository openshift git, alguns parágrafos adiante).

btw. Eu escrevi um blog de ferramentas do jboss que estava demonstrando como usar o openshift-java-client alguns meses atrás: https://community.jboss.org/wiki/Enable-openshift-ciFullExampleUsingOpenshift-java-client . Você verá os passos acima no último parágrafo “Estamos quase lá”.

Eu sei que a pergunta é de 2 anos de idade e a resposta do @adietisheim foi aceita. Eu pessoalmente não gosto de mesclar o repository openshift em meu clone local porque eu não quero misturar o repository OpenShift no branch master do meu repository público.

Supondo que você tenha adicionado o controle remoto usando o git remote add openshift , eis o que eu faria:

Crie um novo openshift ramificação local openshift base no branch master .

 git checkout -b openshift 

Você pode fazer alguns commits no openshift , como as configurações de implantação do seu aplicativo. Em seguida, empurre a ramificação atual para o mestre de correspondência de referência remota no repository do OpenShift com o sinalizador -f para sobrescrever tudo na ramificação master remota.

 git push openshift master -f 

Sempre que eu quiser implantar meu aplicativo no OpenShift, eu verificaria o branch openshift local e openshift branch master com ele, depois forçaria push para o OpenShift, no entanto -f pode não ser necessário para os próximos pushs:

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

Da pasta do seu projeto, faça

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

Você pode ler Empurrando para duas origens remotas do git de um repository e Alterando a origem remota do git .

Eu concordo com a resposta do @adietisheim: você precisa entender melhor o git antes de implantar com o openshift =)

Agora, mesmo que você entenda o git, não é necessariamente óbvio como implantar seu repository existente se a estrutura de diretórios não corresponder à estrutura de diretórios requerida pelo openshift e se você quiser manter sua estrutura de diretórios antiga.

Para isso, tenho as seguintes dicas:

  • opções separadas que são dependentes da implementação daquelas que não estão em arquivos diferentes. Por exemplo, eu separo minhas configurações de database de outras configurações em arquivos diferentes como:

    • settings_deploy / openshift

    • settings_deploy / localhost

    e então symlink para o seu teste de localhost como algo como:

     ln -s settings_deploy/localhost settings_deploy_file 

    Outra opção é detectar o host usando variables ​​de ambiente:

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

    Isso é um pouco mais simples, já que permite colocar todas as configurações em um único arquivo. É um pouco menos geral, já que se algum outro dos seus hosts oferecer uma variável de ambiente OPENSHIFT_APP_NAME (improvável para este), o método será interrompido. De qualquer forma, você ainda precisa separar claramente o que é dependente da implementação e o que não é.

  • criar um diretório de implementação local

  • clonar o modelo initial openshift nele

  • crie um script de implantação que:

    • hardlinks tudo, desde o seu antigo local existente para seus locais corretos no

      hardlinks são rápidos para criar e usar muito pouca memory

      você poderia usar algo como:

      cp -lrf original_repo_dir deploy_repo_dir

    • mantenha apenas o arquivo correto settings_deploy no repository deploy:

      cd deploy_repo

      mv settings_deploy/openshift settings_deploy_file

      rm -r settings_deploy

    • força de empurrar:

      cd deploy_repo

      git push -f origin master

    • limpe o repo de implementação:

      git reset --hard HEAD

      git clean -df

Para os interessados ​​na implementação do django, eu tenho um exemplo no meu github , em particular, confira o script deploy.sh e os projects/elearn que ele implanta.

Você deve ser capaz de passar um repository Git existente para o pipeline de ativos via

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

O repository Git remoto, em seguida, entrega o aplicativo inicial para o OpenShift.

Como uma segunda possibilidade, você pode pular a criação do repository OpenSHift Git local via

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

e, em seguida, use as etapas descritas acima para mesclar o repository Git remoto do OpenShift em seu repository Git local.

A resposta de Mohannd é perfeita, mas eu gostaria de resumir a solução completa, caso outra coisa precise:

Para usar seu repository github como um repository Openshift, não há solução perfeita agora, porque Openshfit usa git hooks para acionar a implantação ou reimplementação com base em seus commits. No entanto, a maneira mais inteligente seria usar 2 repos (o do openshift e o do seu github) para ativar simultaneamente o código.

Para fazer isso: Adicione um controle remoto chamado “all” e adicione 2 URLs de envio a ele.

 git remote add all ssh://23456781234567@yourapp-namespace.rhcloud.com/~/git/yourapp.git git remote set-url openshift-git-repo --push --add ssh://23456781234567@yourapp-namespace.rhcloud.com/~/git/yourapp.git git remote set-url github-repo --push --add git@github.com:youruser/yourapp.git 

Em seguida, defina o controle remoto chamado ‘all’ como o controle remoto padrão:

 git push -u all 

Para confirmar e enviar seu código, proceda como de costume: ele vai empurrar os dois controles remotos e implantar no OpenShift

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

E veja o resultado:

 [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 git@github.com: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://23456789@myapp-namespace.rhcloud.com/~/git/myapp.git/ a036a44..3fc96b2 master -> master MyLaptop:myapp User$ 

Espero que isto ajude

Eu tive problemas ao implantar um repository de código preexistente no Openshift. Em meu contexto específico, onde tentei implantar uma aplicação web do tomcat, os arquivos de configuração do OpenTouch tomcat incluídos na pasta .openshift foram cruciais.

O que consertou para mim foi a inclusão da pasta .openshift na minha tree de fonts existente, bem como a inclusão do perfil openshift no meu arquivo maven pom.xml.

É altamente provável que isso ocorra mesclando seu repository com o novo upstream do upstream. Para mim, este é o “porquê” por trás da frase seguinte na grande resposta de adietisheim:

“Para então poder empurrar o código do seu repository local local para o openshift você primeiro tem que mesclar o seu repository openshift com o seu clone local do bitbucket.”

No meu caso, essa mesclagem era necessária para obter os arquivos de configuração do diretório .openshift. Demorou muito tempo para eu descobrir porque empurrar sem o diretório .openshift ainda fazia com que meu aplicativo fosse desenvolvido e implantado com êxito. O único comportamento que vi foi um relatório sobre arquivos jsp ausentes, o que me fez pensar que o problema estava relacionado à minha própria configuração web.xml e servlet.

Se você está usando o github, você pode configurar o travis para fazer a implantação toda vez que você fez uma mudança no seu repository github

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

Existe uma maneira de fazer o que você quer, ou seja, pular o repository do Openshift. O que você precisa fazer é configurar um jenkins e fazer com que ele pesquise seu próprio repository.

Há um link aqui que explica como configurá-lo do zero: http://blog.anthavio.net/2014/01/deploy-to-openshift-from-github.html

Se você estiver usando java, então existe uma abordagem alternativa. Mas mesmo nessa abordagem, você ainda usaria o repository git do OpenShift. O repository git fornecido pelo OpenShift é como você dá ao OpenShift seu código, seu (s) implementável (is):

Você pode – ao invés de enviar seu código para o repository do OpenShift – simplesmente dar o seu arquivo de guerra. Você clona o repository do OpenShift em sua máquina local. Você então constrói uma guerra a partir da fonte de sua aplicação e coloca essa guerra na pasta de implementações dentro do seu repository git do OpenShift (clone). Você então adiciona, confirma e envia seu clone local para o OpenShift. Assim que o push for executado com sucesso, o JBoss AS7 escolherá sua guerra e a implementará.

PEGA LEVE!

etapa 1: criar aplicativo. Com o seu método favorito (do gitRepository, do Openshift, etc.). se você usar o console metod
passo 2: rhc git-clone nameApp
Etapa 3: rhc app-configure nameApp --auto-deploy
passo 4: APROVEITE!