É necessário ter git repo apenas no openshift? Já tenho bitbucket / github git repo e prefiro enviar apenas lá. Posso simplesmente enganchar nele para que o open-shift receba intimação?
Ou, para simplificar, eu empurro apenas no github, mas quando quero implantar, faço algo com o openshift?
Eu verifiquei isso, mas me confundiu: está falando sobre mesclar sair e novo (openshift) git?
Respostas:
Tenho a impressão de que você ainda não está acostumado a usar o git o suficiente. Aconselho você a entrar no git para entender completamente como enviar seu código para o openshift. No entanto, deixe-me tentar explicar as etapas envolvidas: Como você faria com o git em geral, a abordagem a ser escolhida aqui é clonar seu outro repositório git (por exemplo, no bitbucket) para sua máquina local:
git clone <bitbucket-repo-url>
Seu clone local tem então seu outro repo (bitbucket etc.) como um repo remoto. Seu repo remoto é armazenado com o alias "origin" (o alias padrão usado pelo git se você clonar). Em seguida, você adiciona o repositório openshift como remoto ao seu clone. Faça isso enquanto usa explicitamente um alias para o repo remoto que você adiciona - estou usando "openshift" como alias aqui:
git remote add openshift -f <openshift-git-repo-url>
Para poder enviar o código de seu repositório git local para o openshift, primeiro você precisa mesclar seu repositório openshift com 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 repositório git openshift com seu repositório git local. Você diz a ele para mesclar usando a estratégia de mesclagem recursiva e escolher sua ("nossa") versão quando houver conflitos.
Assim que a fusão for executada, você estará pronto para enviar seu repositório git para o openshift. Você faz isso fazendo:
git push openshift HEAD
Você diz ao git para enviar seu código local para o branch HEAD no repositório remoto chamado "openshift" (o alias em que armazenamos o repositório git openshift, alguns parágrafos adiante).
btw. Eu escrevi um blog de ferramentas 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ê encontrará as etapas acima no último parágrafo "Estamos quase lá".
fonte
--allow-unrelated-histories
já que o padrão do git mudou para não permitir a fusão de históricos não relacionados.Sei que a pergunta tem 2 anos e a resposta de @adietisheim foi aceita. Eu pessoalmente não gosto de mesclar o repositório openshift em meu clone local porque não quero misturar o repositório OpenShift no branch master do meu repositório público.
Supondo que você tenha adicionado o controle remoto usando
git remote add openshift <openshift-git-repo-url>
, aqui está o que eu faria:Crie uma nova filial local com
openshift
base namaster
filial.Você pode fazer alguns commits no branch
openshift
, como as configurações de implantação de seu aplicativo. Em seguida, envie o branch atual para o mestre de correspondência de ref remoto no repositório OpenShift com o sinalizador-f
para sobrescrever tudo nomaster
branch remoto .Sempre que eu quiser implantar meu aplicativo no OpenShift, eu verificaria o
openshift
branch local e mesclaria omaster
branch com ele, então forçaria o push para o OpenShift, no entanto,-f
pode não ser necessário para os próximos push:fonte
De sua pasta de projeto, faça
Você pode ler Empurrando para duas origens remotas git de um repositório e Alterando a origem remota git .
fonte
git push backup master
é suficiente, você não precisa especificar ambos os lados do refspec.git push -u all
para 'todos' para o controle remoto padrão. Ao fazergit push
isso, ele irá posteriormente empurrar para os 2 repositórios!Eu concordo com a resposta de @adietisheim: você precisa entender melhor o git antes de implantar com openshift =)
Agora, mesmo que você entenda o git, não é necessariamente óbvio como implantar seu repo existente se sua estrutura de diretório não corresponder à estrutura de diretório exigida pelo openshift e se você quiser manter sua estrutura de diretório antiga.
Para isso, tenho as seguintes dicas:
opções separadas que são dependentes de implantação daquelas que não estão em arquivos diferentes. Por exemplo, separo minhas configurações de banco de dados de outras configurações em arquivos diferentes como:
settings_deploy / openshift
settings_deploy / localhost
e, em seguida, crie um link simbólico para seu teste de host local como algo como:
Outra opção é detectar o host usando variáveis de ambiente:
Isso é um pouco mais simples, pois permite que você coloque todas as configurações em um único arquivo. É um pouco menos geral, pois se algum outro de seus hosts oferecer uma
OPENSHIFT_APP_NAME
variável de ambiente (improvável para este), o método será interrompido. De qualquer forma, você ainda precisa separar claramente o que é dependente da implantação e o que não é.crie um diretório de implantação local
clonar o template inicial de OpenShift nele
crie um script de implantação que:
hardlinks tudo do seu antigo local existente para seus locais corretos no
hardlinks são rápidos de criar e usam muito pouca memória
você poderia usar algo como:
cp -lrf original_repo_dir deploy_repo_dir
mantenha apenas o
settings_deploy
arquivo correto no repositório de implantação:cd deploy_repo
mv settings_deploy/openshift settings_deploy_file
rm -r settings_deploy
force push:
cd deploy_repo
git push -f origin master
limpe o repositório de implantação:
git reset --hard HEAD
git clean -df
para aqueles interessados na implantação do django, tenho um exemplo no meu github , em particular, verifique o
deploy.sh
script e o projetoprojects/elearn
que ele implanta.fonte
Você deve ser capaz de passar um repositório Git existente para o pipeline de ativos via
O repositório Git remoto então entrega o aplicativo inicial para OpenShift.
Como uma segunda possibilidade, você pode pular a criação do repositório OpenSHift Git local via
e, em seguida, use as etapas descritas acima para mesclar o repositório Git remoto OpenShift em seu repositório Git local.
fonte
A resposta de Mohannd é perfeita, mas gostaria de resumir a solução completa, caso alguém mais precise:
Para usar seu repositório github como um repositório Openshift, não há solução perfeita agora, porque, Openshfit usa git hooks para acionar a implantação ou reimplantação com base em seus commits. No entanto, a maneira mais inteligente seria usar 2 repos (o do openshift e o do github) para enviar simultaneamente o código.
Para fazer isso: Adicione um controle remoto chamado "all" e adicione 2 urls push a ele.
Em seguida, defina o controle remoto chamado 'all' como o remoto push padrão:
Para confirmar e enviar seu código, proceda como de costume: ele irá enviar 2 controles remotos e implantar no OpenShift
E veja o resultado:
Espero que isto ajude
fonte
Existe uma maneira de fazer o que você quiser, ou seja, pular o repositório do Openshift. O que você precisa fazer é configurar um jenkins e fazer com que ele pesquise seu próprio repositório.
Há um link aqui que explica como configurá-lo do zero: http://blog.anthavio.net/2014/01/deploy-to-openshift-from-github.html
fonte
Tive problemas para implantar um repositório de código pré-existente no Openshift. No meu contexto particular, onde tentei implantar um webapp do tomcat, os arquivos de configuração do tomcat OpenHift incluídos na pasta .openshift foram cruciais.
O que consertou para mim foi a inclusão da pasta .openshift em minha árvore de código-fonte existente, bem como a inclusão do perfil openshift em meu arquivo maven pom.xml.
É muito provável que seja o mesmo que aconteceria ao fundir seu repositório com o novo open-shift upstream. Para mim, este é o "porquê" por trás da frase seguinte na grande resposta de adietisheim:
"Para poder enviar o código de seu repositório git local para o openshift, primeiro você precisa mesclar seu repositório openshift com seu clone bitbucket local."
No meu caso, essa mesclagem foi necessária para obter os arquivos de configuração do diretório .openshift. Levei muito tempo para descobrir para mim porque empurrar sem o diretório .openshift ainda fazia meu aplicativo ser compilado e implantado com sucesso. O único comportamento que vi foi um relatório sobre arquivos jsp ausentes, o que me fez pensar que o problema estava relacionado ao meu próprio web.xml e à configuração do servlet.
fonte
Se você estiver usando o github, você pode configurar o travis para fazer a implantação cada vez que você fizer uma alteração no seu repositório github
http://docs.travis-ci.com/user/deployment/openshift/
fonte
Se você estiver usando java, existe uma abordagem alternativa. Mas, mesmo nessa abordagem, você ainda usaria o repositório git OpenShift. O repositório git fornecido pelo OpenShift é como você fornece ao OpenShift seu código, seus implementáveis:
Você pode - em vez de comprometer seu código para o repositório git OpenShift - simplesmente fornecer seu arquivo war. Você clona o repositório git OpenShift para sua máquina local. Em seguida, você constrói um war a partir do código-fonte do aplicativo e o coloca na pasta de implantações dentro do seu repositório git OpenShift (clone). Em seguida, você adiciona, confirma e envia seu clone local ao OpenShift. Assim que o push for executado com sucesso, o JBoss AS7 escolherá sua guerra e a implantará.
fonte
PEGA LEVE!
etapa 1: crie o aplicativo. Com seu método favorito (de gitRepository, pre-maker Openshift, etc). se você usar console metod
etapa 2:
rhc git-clone nameApp
etapa 3:
rhc app-configure nameApp --auto-deploy
etapa 4: APROVEITE!
fonte