104

openshiftでのみgitリポジトリを使用する必要がありますか?私はすでにbitbucket/github git repoを持っており、そこにのみプッシュしたいと思います。openshiftが親密になるように、単純にそれに接続できますか?

または、簡単にするために、私はgithubでのみプッシュしますが、デプロイしたい場合は、openshiftで何かをしますか?

私はこれをチェックしましたが、それは私を混乱させました:それはexitingと新しい(openshift)gitのマージについて話しているのですか?

4

11 に答える 11

228

まだgitの使い方に慣れていない印象があります。コードをopenshiftにプッシュする方法を完全に理解するには、gitを使用することをお勧めします。それでも、関連する手順を説明しようと思います。一般的なgitの場合と同様に、ここで選択するアプローチは、他のgitリポジトリ(例:bitbucket)をローカルマシンに複製することです。

git clone <bitbucket-repo-url>

ローカルクローンには、リモートリポジトリとして他のリポジトリ(bitbucketなど)があります。リモートリポジトリは、エイリアス「origin」(クローンを作成する場合にgitが使用するデフォルトのエイリアス)で保存されます。次に、openshiftリポジトリーをクローンのリモートとして追加します。追加するリモートリポジトリのエイリアスを明示的に使用しながらこれを行います-ここではエイリアスとして「openshift」を使用しています。

git remote add openshift -f <openshift-git-repo-url>

次に、ローカルのgitレポジトリからopenshiftにコードをプッシュできるようにするには、最初にopenshiftレポジトリをローカルのbitbucketクローンとマージする必要があります。これを行うには、ローカルで発行します。

git merge openshift/master -s recursive -X ours

このコマンドを使用して、openshiftgitレポジトリのマスターブランチをローカルのgitレポジトリとマージするようにgitに指示します。再帰的なマージ戦略を使用してマージし、競合がある場合は(「私たちの」)バージョンを選択するように指示します。

マージが実行されると、gitリポジトリをopenshiftにプッシュする準備が整います。あなたはそれをすることによってそれをします:

git push openshift HEAD

gitに、ローカルコードを「openshift」と呼ばれるリモートレポジトリのHEADブランチにプッシュするように指示します(openshift gitレポジトリを保存したエイリアスで、いくつかの段落がさらに上にあります)。

ところで。数か月前にopenshift-java-clientの使用方法を紹介するjbossツールのブログを作成しました:https ://community.jboss.org/wiki/Enable-openshift-ciFullExampleUsingOpenshift-java-client 。上記の手順は、最後の段落「もうすぐです」でわかります。

于 2012-10-01T07:33:42.240 に答える
23

質問は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
于 2014-11-23T13:29:27.350 に答える
6

プロジェクトフォルダから、

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

1つのリポジトリから2つのgitリモートオリジンへのプッシュとgitリモートオリジンの変更を読むことができます。

于 2014-06-23T06:10:51.360 に答える
5

@adietisheimの回答に同意します:openshift =)でデプロイする前に、より良いgitを理解する必要があります

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
    

    これは、すべての構成を1つのファイルに入れることができるため、少し簡単です。OPENSHIFT_APP_NAMEホストの別の1つが環境変数を提供する場合(この変数ではありそうもない)、メソッドが機能しなくなるため、少し一般的ではありません。とにかく、展開に依存するものとそうでないものを明確に区別する必要があります。

  • ローカルデプロイディレクトリを作成する

  • 最初の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のデプロイに興味がある人のために、githubdeploy.shに例があります。特に、スクリプトとprojects/elearnそれがデプロイするプロジェクトを確認してください。

于 2013-04-27T15:24:20.517 に答える
4

既存のGitリポジトリを経由してアセットパイプラインに渡すことができるはずです

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

次に、リモートGitリポジトリーがOpenShiftの初期アプリケーションを配信します。

2番目の可能性として、ローカルのOpenSHiftGitリポジトリーの作成をスキップできます。

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

次に、上記の手順を使用して、OpenShiftリモートGitリポジトリーをローカルGitリポジトリーにマージします。

于 2014-07-29T17:35:18.617 に答える
4

Mohanndの答えは完璧ですが、他の誰かがそれを必要とする場合に備えて、完全な解決策を要約したいと思います。

githubレポジトリをOpenshiftレポジトリとして使用するには、現在、完璧なソリューションはありません。Openshfitはgitフックを使用して、コミットに基づいてデプロイメントまたは再デプロイメントをトリガーするためです。ただし、最も賢い方法は、2つのリポジトリー(openshiftのものとgithubのもの)を使用して、コードを同時にプッシュすることです。

これを行うには:「all」という名前のリモートを追加し、それに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

次に、「all」という名前のリモートをデフォルトのプッシュリモートとして設定します。

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$

お役に立てれば

于 2015-05-29T22:35:14.327 に答える
2

やりたいことを行う方法があります。つまり、Openshiftのリポジトリをスキップします。あなたがする必要があるのは、ジェンキンスをセットアップし、それがあなた自身のリポジトリをポーリングするようにすることです。

ゼロからセットアップする方法を説明するリンクがここにあります:http: //blog.anthavio.net/2014/01/deploy-to-openshift-from-github.html

于 2016-02-10T06:12:40.020 に答える
1

既存のコードリポジトリーをOpenshiftにデプロイする際に問題が発生しました。私がtomcatwebappをデプロイしようとした特定のコンテキストでは、.openshiftフォルダーに含まれるOpenshifttomcat構成ファイルが重要でした。

私にとってそれを修正したのは、既存のソースツリーに.openshiftフォルダーが含まれていることと、mavenpom.xmlファイルにopenshiftプロファイルが含まれていることです。

これは、リポジトリーを新しいopenshiftアップストリームリポジトリーとマージすることによって発生する可能性が高いです。私にとって、これはadietisheimの素晴らしい答えの次の文の背後にある「理由」です。

「その後、ローカルのgitレポジトリからopenshiftにコードをプッシュできるようにするには、最初にopenshiftレポジトリをローカルのbitbucketクローンとマージする必要があります。」

私の場合、このマージは.openshiftディレクトリから設定ファイルを取得するために必要でした。.openshiftディレクトリーなしでプッシュしても、アプリのビルドとデプロイが正常に行われたため、理解するのに長い時間がかかりました。私が見た唯一の動作は、jspファイルの欠落に関するレポートでした。これにより、問題は自分のweb.xmlとサーブレットの構成に関連していると思いました。

于 2014-04-20T09:33:22.727 に答える
1

githubを使用している場合は、githubリポジトリに変更を加えるたびにデプロイを行うようにtravisを構成できます。

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

于 2015-01-18T17:21:09.187 に答える
0

Javaを使用している場合は、別のアプローチがあります。ただし、このアプローチでも、OpenShiftgitリポジトリーを使用します。OpenShiftが提供するgitリポジトリーは、OpenShiftにコード、デプロイ可能なコードを提供する方法です。

コードをOpenShiftgitレポジトリにコミットする代わりに、単にwarファイルを与えることができます。OpenShiftgitレポジトリをローカルマシンに複製します。次に、アプリケーションソースからwarをビルドし、このwarをOpenShift gitレポジトリ(クローン)内のデプロイメントフォルダーに配置します。次に、ローカルクローンを追加し、コミットして、OpenShiftにプッシュします。プッシュが正常に実行されると、JBossAS7が戦争を選択してデプロイします。

于 2013-02-20T16:34:14.117 に答える
0

楽に行けよ!

ステップ1:アプリを作成します。お気に入りの方法(gitRepository、プレメーカーのOpenshiftなどから)を使用します。コンソールメトッドを使用する場合
ステップ2:rhc git-clone nameApp
ステップ3:rhc app-configure nameApp --auto-deploy
ステップ4:お楽しみください!

于 2016-09-22T13:25:14.743 に答える