web-dev-qa-db-ja.com

既存のGitリポジトリをOpenShiftで使用できますか?

OpenShiftでのみgitレポを使用する必要がありますか?私はすでにbitbucket/github git repoを持っているので、そこにプッシュすることを好みます。 openshiftが暗示されるように、単純にフックすることはできますか?

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

this を確認しましたが、混乱しました:既存のgitと新しい(openshift)gitのマージについて話しているのですか?

101
Jigar Shah

あなたはまだ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

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

マージが実行されると、gitリポジトリをopenshiftにプッシュする準備が整います。それを行うには:

git Push openshift HEAD

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

ところで。数か月前にopenshift-Java-clientの使用方法を示すjbossツールのブログを書きました: https://community.jboss.org/wiki/Enable-openshift-ciFullExampleUsingOpenshift-Java-client 。上記の手順は、最後の段落「私たちはほとんどそこにいます」で見つけることができます。

225
adietisheim

質問は2歳で、 @ adietisheim's answer が受け入れられました。 OpenShiftリポジトリを公開リポジトリのmasterブランチにミックスしたくないので、個人的にはOpenShiftリポジトリをローカルクローンにマージするのは好きではありません。

git remote add openshift <openshift-git-repo-url>を使用してリモートを追加したと仮定すると、次のようになります。

openshiftブランチに基づいて、新しいローカルブランチmasterを作成します。

git checkout -b openshift

アプリの展開設定など、ブランチopenshiftでいくつかのコミットを行うことができます。次に、フラグ-fを使用して、OpenShiftリポジトリのリモートrefマッチングマスターに現在のブランチをプッシュして、リモートmasterブランチのすべてを上書きします。

git Push openshift master -f

アプリをOpenShiftにデプロイするたびに、ローカルopenshiftブランチをチェックアウトし、masterブランチをマージしてから、強制的にOpenShiftにプッシュしますが、-fは不要な場合があります次のプッシュ:

git checkout openshift
git merge --no-ff master
git Push openshift master -f
23
Sithu

あなたのプロジェクトフォルダから、

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

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

6
Mohannd

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

Gitを理解していても、ディレクトリ構造がopenshiftに必要なディレクトリ構造と一致しない場合、および古いディレクトリ構造を保持する場合、既存のリポジトリを展開する方法は必ずしも明らかではありません。

そのために、私は次のヒントを持っています:

  • 展開に依存する個別のオプションと、異なるファイルに含まれないオプション。たとえば、次のようにデータベース設定を他の設定から別のファイルに分けます。

    • settings_deploy/openshift

    • settings_deploy/localhost

    次に、localhostテストへのシンボリックリンクを次のように入力します。

    ln -s settings_deploy/localhost settings_deploy_file
    

    別のオプションは、環境変数を使用してホストを検出することです。

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

    これは、すべての構成を単一のファイルに配置できるため、少し単純です。ホストの別のホストが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デプロイメントに興味がある人のために、 my github の例があります。特に、deploy.shスクリプトとそれがデプロイするプロジェクトprojects/elearnをチェックしてください。 。

Mohanndの答えは完璧ですが、他の誰かがそれを必要とする場合に備えて、完全なソリューションを要約したいと思います:

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

これを行うには、「all」という名前のリモートを追加し、それに2つのプッシュURLを追加します。

git remote add all ssh://[email protected]/~/git/yourapp.git
git remote set-url openshift-git-repo --Push --add ssh://[email protected]/~/git/yourapp.git
git remote set-url github-repo --Push --add [email protected]: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 [email protected]: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://[email protected]/~/git/myapp.git/
   a036a44..3fc96b2  master -> master
MyLaptop:myapp User$

お役に立てれば

4
Akram Ben Aissi

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

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

リモートGitリポジトリは、OpenShiftの初期アプリケーションを提供します。

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

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

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

4
stefankolb

あなたがしたいことをする方法があります、すなわち、Openshiftのレポをスキップします。あなたがする必要があるのは、ジェンキンを設定し、それをあなた自身のリポジトリにポーリングさせることです。

ここから最初から設定する方法を説明するリンクがあります: http://blog.anthavio.net/2014/01/deploy-to-openshift-from-github.html

2
Axel

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

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

1
alexzm1

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

それを修正したのは、既存のソースツリーに.openshiftフォルダーを含めることと、maven pom.xmlファイルにopenshiftプロファイルを含めることでした。

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

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

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

1
Bram Luyten

リラックスして!

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

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

OpenShift gitリポジトリにコードをコミットする代わりに、warファイルを指定するだけです。 OpenShift gitリポジトリをローカルマシンにクローンします。次に、アプリケーションソースから戦争を構築し、この戦争をOpenShift gitリポジトリ(クローン)内のdeploymentsフォルダーに配置します。次に、ローカルクローンをOpenShiftに追加、コミット、プッシュします。プッシュが正常に実行されると、JBoss AS7は戦争を選択して展開します。

0
adietisheim