是否有必要只在openshift上使用git repo?我已经有了bitbucket/github git repo并且更愿意只推到那里.我可以简单地插入它,以便openhift得到推断吗?
或者为了简化,我只在github推送,但是当我想部署时,我用openshift做一些事情?
我确实检查了这一点,但它让我困惑:它正在谈论合并退出和新的(openshift)git?
adi*_*eim 226
我的印象是你还不习惯使用git.我建议你进入git以完全理解如何将代码推送到openshift.不过让我试着向你解释一下所涉及的步骤:正如你通常使用git一样,这里选择的方法是将你的其他git repo(例如bitbucket)克隆到你的本地机器:
git clone <bitbucket-repo-url>
您的本地克隆然后您的其他repo(bitbucket等)作为远程仓库.您的远程仓库使用别名"origin"存储(如果您克隆,则为git使用的默认别名).然后,将openshift repo添加为克隆的远程仓库.你明确使用你添加的远程仓库的别名时这样做 - 我在这里使用"openshift"作为别名:
git remote add openshift -f <openshift-git-repo-url>
为了能够将代码从本地git repo推送到openshift,首先必须将openshift repo与本地bitbucket克隆合并.你可以通过本地发布来实现:
git merge openshift/master -s recursive -X ours
使用此命令,您可以告诉git将openshift git repo中的master分支与您的本地git repo合并.您告诉它使用递归合并策略进行合并,并在发生冲突时选择您的("我们的")版本.
执行合并后,您就可以将git repo推送到openshift.你这样做:
git push openshift HEAD
你告诉git将你的本地代码推送到名为"openshift"的远程仓库上的HEAD分支(我们存储了openshift git repo的别名,有些段落更进一步).
顺便说一句.我写了一个jboss工具博客,它在几个月前演示了如何使用openshift-java-client:https://community.jboss.org/wiki/Enable-openshift-ciFullExampleUsingOpenshift-java-client .您将在最后一段"我们几乎就在那里"中看到上述步骤.
Sit*_*thu 23
我知道问题是2岁,@ adietisheim的答案已被接受.我个人不喜欢将openshift repo合并到我的本地克隆中,因为我不想将OpenShift repo混合到我公共仓库的主分支中.
假设你已经添加了远程使用git remote add openshift <openshift-git-repo-url>,我会这样做:
openshift基于分支创建新的本地master分支.
git checkout -b openshift
Run Code Online (Sandbox Code Playgroud)
您可以在分支上进行一些提交,openshift例如您的应用部署配置.然后,使用标志将当前分支推送到OpenShift存储库-f中的远程refmaking master,以覆盖远程master分支中的所有内容.
git push openshift master -f
Run Code Online (Sandbox Code Playgroud)
每当我想将我的应用程序部署到OpenShift时,我会检查本地openshift分支并master使用它合并分支,然后强制推送到OpenShift,但是-f下次推送可能不需要:
git checkout openshift
git merge --no-ff master
git push openshift master -f
Run Code Online (Sandbox Code Playgroud)
从你的项目文件夹,做
git remote add backup user@server:/path/to/git/test.git
git push backup master
Run Code Online (Sandbox Code Playgroud)
您可以阅读从一个存储库推送到两个git远程源并更改git远程源.
我同意@adietisheim的回答:在使用openshift =)部署之前,你需要了解更好的git
现在,即使您了解git,如果您的目录结构与openshift所需的目录结构不匹配,并且您希望保留旧的目录结构,那么如何部署现有的repo并不一定显而易见.
为此,我有以下提示:
部署的单独选项与不在不同文件中的选项相关.例如,我将数据库设置与其他设置分隔为不同的文件:
settings_deploy/openshift
settings_deploy /本地主机
然后符号链接到你的localhost测试,例如:
ln -s settings_deploy/localhost settings_deploy_file
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用环境变量检测主机:
if 'OPENSHIFT_APP_NAME' in os.environ:
//openshift configurations
else:
//localhost
Run Code Online (Sandbox Code Playgroud)
这有点简单,因为它允许您将所有配置放在一个文件上.它有点不太通用,因为如果你的另一个主机提供了一个OPENSHIFT_APP_NAME环境变量(不太可能是这个),该方法就会中断.无论如何,您仍然需要明确区分什么是部署依赖和什么不依赖.
创建本地部署目录
将初始的openshift模板克隆到其中
创建一个部署脚本:
从旧的现有本地到其正确位置的所有内容都是硬链接
硬链接可以快速创建并使用非常少的内存
你可以使用类似的东西:
cp -lrf original_repo_dir deploy_repo_dir
settings_deploy在deploy repo中只保留正确的文件:
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它部署的项目.