是否有必要对只openshift混帐回购协议? 我已经有到位桶/ GitHub的git仓库,宁愿只推那里。 我可以简单地钩到它,这样openshift得到暗示?
或者为了简化,我只推在github上,但是当我想部署,我做openshift什么?
我没有检查这个 ,但它让我感到困惑:它在谈论合并退出和新(openshift)混帐?
是否有必要对只openshift混帐回购协议? 我已经有到位桶/ GitHub的git仓库,宁愿只推那里。 我可以简单地钩到它,这样openshift得到暗示?
或者为了简化,我只推在github上,但是当我想部署,我做openshift什么?
我没有检查这个 ,但它让我感到困惑:它在谈论合并退出和新(openshift)混帐?
我有你不习惯使用git够了吗印象。 我建议你进入混帐充分了解如何把你的代码openshift。 不过让我尝试解释一下你所涉及的步骤:正如你在一般的git做,在这里选择的方法是克隆你的其他git仓库到本地计算机(除权到位桶。):
git clone <bitbucket-repo-url>
您的本地克隆有那么你的其他回购(到位桶等),远程回购。 您的远程回购存储与别名“原点”(由git的使用,如果你复制默认的别名)。 然后,您的openshift回购远程添加到您的克隆。 你这样做,虽然明确使用您添加远程回购的别名 - 我使用“openshift”这里别名:
git remote add openshift -f <openshift-git-repo-url>
为了然后就可以从当地的混帐回购协议推代码openshift你首先要与当地到位桶克隆合并您openshift回购。 你这样做,通过在本地发行:
git merge openshift/master -s recursive -X ours
使用这个命令可以让Git与您当地的混帐回购协议合并在openshift git仓库主分支。 你告诉它使用递归的并购战略合并,在出现冲突时选择你的(“我们”)的版本。
一旦执行合并你准备把你的git回购协议openshift。 你这样做,这样做:
git push openshift HEAD
你告诉混帐推本地代码的HEAD分支的名为“openshift”(我们存储在openshift混帐回购协议的别名,一些段落进一步上涨)的远程回购。
顺便说一句。 我写了JBoss的工具博客这是演示如何几个月前使用openshift-Java的客户端: https://community.jboss.org/wiki/Enable-openshift-ciFullExampleUsingOpenshift-java-client 。 你会发现在最后一段上述步骤,“我们快到了”。
我知道这个问题是2岁和@ adietisheim的答案已被接受。 我个人不喜欢的openshift回购融入我的本地克隆,因为我不想给OpenShift回购混入我的公共回购的主分支。
假设你已经添加了遥控器使用git remote add openshift <openshift-git-repo-url>
,这里是我会做:
创建新的本地分支openshift
基础上, master
分支。
git checkout -b openshift
你可以把在树枝上作了一次提交openshift
如您的应用程序部署配置。 然后,按下当前分支在OpenShift库了标志的远程REF匹配主-f
覆盖在远程一切master
分支。
git push openshift master -f
每当我想部署我的应用程序OpenShift,我想看看当地openshift
分支与合并master
分支,然后强行推OpenShift,但是-f
可能不需要下一个推:
git checkout openshift
git merge --no-ff master
git push openshift master -f
从你的项目文件夹,请
git remote add backup user@server:/path/to/git/test.git
git push backup master
你可以阅读从一个存储库推两个混帐远程起源和更改远程Git起源 。
我同意@ adietisheim的回答是:你需要openshift在部署之前更好地了解混帐=)
现在,即使你理解git的,它不一定有明显的如何部署现有的回购协议,如果你的目录结构不匹配openshift所需的目录结构,如果你想保持你的旧目录结构。
对于这一点,我有以下建议:
单独的选项是部署依赖从那些没有到不同的文件。 例如,我从其他设置成不同的文件作为单独的我的数据库设置:
settings_deploy / openshift
settings_deploy /本地主机
然后符号链接到localhost测试,就像这样:
ln -s settings_deploy/localhost settings_deploy_file
另一种方法是使用环境变量来检测主机:
if 'OPENSHIFT_APP_NAME' in os.environ: //openshift configurations else: //localhost
这是一个有点简单,因为它可以让你把所有的CONFIGS上的一个文件。 这是一个有点不太普遍,因为如果有的话你的主机的另一个提供OPENSHIFT_APP_NAME
环境变量(不太可能为这一个)的方法断裂。 不管怎样,你还是要明确分开什么是部署相关的,哪些不是。
创建本地部署目录
克隆初始openshift模板到它
创建一个部署脚本:
硬链接一切从旧的现有本地在正确的位置
硬链接的快速创建和使用很少的内存
你可以使用这样的:
cp -lrf original_repo_dir deploy_repo_dir
只保留正确的settings_deploy
在部署回购文件:
cd deploy_repo
mv settings_deploy/openshift settings_deploy_file
rm -r settings_deploy
力推:
cd deploy_repo
git push -f origin master
清洁部署回购:
git reset --hard HEAD
git clean -df
对于那些有兴趣在Django部署,我有一个例子我github上 ,特别是检查出deploy.sh
脚本和项目projects/elearn
它部署。
您应该能够通过在现有的Git仓库通入管道资产
rhc create-app $APPNAME ruby-1.9 --from-code $GIT_LOCATION
远程Git仓库然后能够为OpenShift初始应用。
作为第二种可能性,可以通过跳过本地OpenSHift Git仓库的建立
rhc create-app $APPNAME ruby-1.9 --no-git
然后用上述的OpenShift远程Git仓库合并到本地Git仓库的步骤。
Mohannd的答案是完美的,但我想总结一下完整的解决方案,在一些情况下,人需要它:
要使用您的GitHub库作为Openshift回购,现在没有完美的解决方案,因为,Openshfit使用git的钩来触发根据您提交的部署或重新部署。 然而,最聪明的办法是使用2回购(该openshift的一个和你的GitHub的一个),同时推动代码。
要做到这一点:添加远程命名为“所有”,并添加2个推URL到它。
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
然后设置远程命名为“所有”作为默认的推遥控:
git push -u all
要提交并推送你的代码,继续像往常一样:这将推动在2个遥控器和部署OpenShift
git add .
git commit -m "my commit"
git push
并观察结果:
[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$
希望这可以帮助
我跑进部署预先存在的代码库来Openshift问题。 在我的特殊情况下,我就开始想部署一个Tomcat Web应用程序,包括在.openshift文件夹中的Openshift Tomcat的配置文件是至关重要的。
什么固定对我来说是.openshift夹在我现有的源代码树的包容,以及在我的Maven pom.xml文件中列入openshift轮廓。
这是极有可能会被新openshift上游的一个合并资源库发生一样。 对我来说,这是在adietisheim的伟大回答“为什么”背后下面的句子:
“然后,为了能够从本地git仓库推代码openshift你首先要与当地到位桶克隆合并您openshift回购。”
在我的情况下,需要这样的合并,从.openshift目录中获取配置文件。 花了很长的时间来找出适合我,因为推不.openshift目录仍然取得了我的应用程序建立并成功地部署。 我看到的唯一行为是失踪jsp文件的报告,这让我觉得这个问题是关系到我自己的web.xml和servlet配置。
如果您使用github上,你可以在你的GitHub库进行了更改,每次配置特拉维斯来作出部署
http://docs.travis-ci.com/user/deployment/openshift/
有一种方法可以做你想做的,即跳过Openshift的回购。 你需要做的是建立一个詹金斯,并让它查询自己的资料库的内容。
这里有一个链接,介绍了如何从无到有建立起来: http://blog.anthavio.net/2014/01/deploy-to-openshift-from-github.html
如果您使用的是Java再有就是是一种替代方法。 但即使在这种方法,你仍然会使用OpenShift git仓库。 通过OpenShift提供Git仓库,你如何给OpenShift你的代码,你的部署(S):
你可以 - 而不是提交代码到OpenShift混帐回购协议 - 简单地给它的战争文件。 你克隆OpenShift git仓库到本地计算机。 然后,建立从您的应用程序源的战争,并把这场战争到部署文件夹OpenShift混帐回购协议(克隆)内。 然后,添加,提交和推送本地克隆OpenShift。 一旦推成功执行,在JBoss AS7会挑你的战争和部署。
放轻松!
第1步:创建应用程序。 用你喜欢的方式(从gitRepository,预生产商Openshift等)。 如果您使用控制台梅托德
步骤2: rhc git-clone nameApp
步骤3: rhc app-configure nameApp --auto-deploy
第4步:享受!