回答:
まだGitを使い慣れていない印象です。私はあなたのコードをオープンシフトにプッシュする方法を完全に理解するために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 repoのマスターブランチをローカルのgit repoとマージするように指示します。再帰的なマージ戦略を使用してマージし、競合がある場合は(「ours」)バージョンを選択するように指示します。
マージが実行されると、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 。上記の手順は、最後の段落「もうすぐ終わりです」にあります。
--allow-unrelated-histories
では、無関係な履歴をマージできないようにgitのデフォルトが変更されているため、追加する必要があります。
質問は2歳で、@ adietisheimの回答は受け入れられました。OpenShiftリポジトリをパブリックリポジトリのマスターブランチに混在させたくないので、個人的にはOpenShiftリポジトリをローカルクローンにマージしたくありません。
を使用してリモートを追加したと仮定するとgit remote add openshift <openshift-git-repo-url>
、ここに私がするでしょう:
ブランチにopenshift
基づいて新しいローカルブランチを作成しますmaster
。
git checkout -b openshift
openshift
アプリの展開構成など、ブランチでいくつかのコミットを行うことができます。次に、現在のブランチをOpenShiftリポジトリー内のリモート参照マッチングマスター-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
1つのリポジトリから2つのgitリモートオリジンへのプッシュとgitリモートオリジンの変更を読むことができます。
git push -u all
デフォルトのリモートに「すべて」。するとgit push
、続いて2つのリポジトリにプッシュされます!
@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
ありません。ホストの別の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のデプロイメントに興味がある人のために、私はgithubにサンプルを用意していdeploy.sh
ます。特に、projects/elearn
それがデプロイするスクリプトとプロジェクトを確認してください。
既存の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リポジトリにマージします。
Mohanndの答えは完璧ですが、他の人がそれを必要とする場合に備えて、完全なソリューションを要約したいと思います。
Openshfitはgitフックを使用してコミットに基づいてデプロイまたは再デプロイをトリガーするため、githubリポジトリをOpenshiftリポジトリとして使用するための完璧なソリューションはありません。ただし、最も賢い方法は、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$
お役に立てれば
Openshiftのリポジトリをスキップするなど、やりたいことを行う方法があります。あなたがする必要があるのはジェンキンスをセットアップし、それがあなた自身のリポジトリをポーリングするようにすることです。
ゼロから設定する方法を説明するリンクがここにあります:http : //blog.anthavio.net/2014/01/deploy-to-openshift-from-github.html
既存のコードリポジトリをOpenshiftにデプロイするときに問題が発生しました。Tomcat webappをデプロイしようとした私の特定のコンテキストでは、.openshiftフォルダーに含まれているOpenshift tomcat構成ファイルが重要でした。
私にとってそれを修正したのは、既存のソースツリーに.openshiftフォルダーが含まれていることと、maven pom.xmlファイルにopenshiftプロファイルが含まれていることです。
これは、リポジトリを新しいオープンシフトアップストリームリポジトリにマージすることで発生する可能性と同じです。私にとって、これはadietisheimのすばらしい答えで次の文の背後にある「理由」です。
「ローカルgitリポジトリからopenshiftにコードをプッシュできるようにするには、まずopenshiftリポジトリをローカルのbitbucketクローンとマージする必要があります。」
私の場合、.openshiftディレクトリから設定ファイルを取得するには、このマージが必要でした。.openshiftディレクトリなしでプッシュしても、アプリのビルドとデプロイが成功したため、理解に時間がかかりました。私が見た唯一の動作は、欠落しているjspファイルに関するレポートでした。そのため、問題は自分のweb.xmlおよびサーブレット構成に関連していると思いました。
githubを使用している場合は、githubリポジトリに変更を加えるたびにデプロイを行うようにtravisを構成できます
Javaを使用している場合は、別の方法があります。ただし、このアプローチでも、OpenShift gitリポジトリを使用します。OpenShiftが提供するgitリポジトリは、OpenShiftにコードとデプロイ可能なコードを提供する方法です。
OpenShift gitリポジトリにコードをコミットする代わりに、単純にwarファイルを与えることができます。OpenShift gitリポジトリをローカルマシンに複製します。次に、アプリケーションソースからwarをビルドし、このwarをOpenShift gitリポジトリ(クローン)内のデプロイメントフォルダーに配置します。次に、ローカルクローンを追加してコミットし、OpenShiftにプッシュします。プッシュが正常に実行されると、JBoss AS7が戦争を選択してデプロイします。
楽に行けよ!
ステップ1:アプリを作成します。お好みの方法(gitRepository、プリメーカーOpenshiftなどから)。コンソールメソッドを使用する場合
ステップ2:rhc git-clone nameApp
ステップ3:rhc app-configure nameApp --auto-deploy
ステップ4:楽しむ!