OpenShiftでのみgitレポを使用する必要がありますか?私はすでにbitbucket/github git repoを持っているので、そこにプッシュすることを好みます。 openshiftが暗示されるように、単純にフックすることはできますか?
または、単純化するために、私はgithubでのみプッシュしますが、デプロイしたいときに、openshiftで何かをしますか?
this を確認しましたが、混乱しました:既存のgitと新しい(openshift)gitのマージについて話しているのですか?
あなたはまだ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 。上記の手順は、最後の段落「私たちはほとんどそこにいます」で見つけることができます。
質問は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
あなたのプロジェクトフォルダから、
git remote add backup user@server:/path/to/git/test.git
git Push backup master
1つのリポジトリから2つのgitリモートオリジンにプッシュする と gitリモートオリジンを変更する を読むことができます。
@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$
お役に立てれば
既存の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リポジトリにマージします。
あなたがしたいことをする方法があります、すなわち、Openshiftのレポをスキップします。あなたがする必要があるのは、ジェンキンを設定し、それをあなた自身のリポジトリにポーリングさせることです。
ここから最初から設定する方法を説明するリンクがあります: http://blog.anthavio.net/2014/01/deploy-to-openshift-from-github.html
Githubを使用している場合、githubリポジトリに変更を加えるたびにデプロイメントを行うようにtravisを構成できます
既存のコードリポジトリをOpenshiftにデプロイする際に問題が発生しました。 Tomcat Webアプリケーションをデプロイしようとした特定のコンテキストでは、.openshiftフォルダーに含まれるOpenshift Tomcat構成ファイルが重要でした。
それを修正したのは、既存のソースツリーに.openshiftフォルダーを含めることと、maven pom.xmlファイルにopenshiftプロファイルを含めることでした。
これは、リポジトリを新しいオープンシフトのアップストリームリポジトリとマージすることで発生する可能性が高いと考えられます。私にとって、これはadietisheimのすばらしい答えの次の文の背後にある「理由」です。
「ローカルgitリポジトリからopenshiftにコードをプッシュできるようにするには、まずopenshiftリポジトリをローカルのbitbucketクローンとマージする必要があります。」
私の場合、.openshiftディレクトリから設定ファイルを取得するには、このマージが必要でした。 .openshiftディレクトリを使用せずにプッシュしても、アプリのビルドとデプロイが正常に行われるため、私が考え出すのに長い時間がかかりました。私が見た唯一の動作は、不足しているjspファイルに関するレポートでした。これにより、問題が自分のweb.xmlとサーブレットの構成に関連していると思いました。
リラックスして!
ステップ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は戦争を選択して展開します。