2012-02-28 8 views
2

私は、テスト目的でSVNサーバーをセットアップする予定です。 今は私の質問です。 開発/ステージングWebサイトのパスにコミットされたファイルを自動的に展開する方法はありますか?Webサイトにコミットを自動的にどのように展開できますか?

私はSVNにコミット後のフックを使うことができますが、どうすれば設定できますか? /ホーム/ WWWの/ dev /ステージング/

とリポジトリは次の場所にあります:

コミットされたファイルのすべての

はパスで http://dev.staging.mywebsite.comに展開する必要があります /ホーム/ SVN/mytestscript/

どうすればいいですか?

+0

Webサイトを展開するためのポスト・コミット・フックは、ステージング・サーバーであっても悪い考えです。展開のためのビルドツールがあります。私はMavenだけを使用しましたが、Antのような他の多くのものがあります。 – StuR

+1

悪い考えかどうか、これについて考えていますか? – Aar

+0

あなたはこのリンクを試すことができますが、とにかく展開スクリプトを書く必要があると思います。 https://mikewest.org/2006/06/subversion-post-commit-hooks-101 – mpm

答えて

0

デプロイメントのためにポスト・コミット・フックを書くのは本当に良い考えです。

より良いソリューションはCapistrano(Ruby)やFabric(Python)のようなツールを使用しています。

+0

あなたの理由は何ですか?サイトをチェックするのはそれほど悪くはありませんが、あなたがコミットしたことはありますか? あなたの主張は何ですか? – Aar

+0

ニコラスが正しいです。私の[応答](http://stackoverflow.com/a/9489149/368630)を参照してください。 –

0
  1. svn diff --summarizeコミット後のフック。 Details here

  2. 代替選択肢1(大きな転送、より多くの時間と停止) - svnの輸出+ +すべての古いデータを削除し、ツリー

  3. 代替選択肢2エクスポートされたコピー - ステージングサイトが追加WCあり、コミット後のフックだけをそれ

9

ニコラス丁svn upを開始:それは、展開のためのポストコミットフックを書くために本当に悪い考えです。

Aar:あなたの理由は何ですか?サイトをチェックするのはそれほど悪くはありませんが、あなたがコミットしたことはありますか?あなたの議論は何ですか?

私はNicholas Dingに同意する必要があります。問題は、ポスト・コミット・フックでデプロイメントをしている間に、開発者がコミットが完了するのを待っていることです。デプロイメントの完了に30秒しかかからない場合、開発者はポスト・コミット・フックが完了するのを30秒待っています。

開発者がファイルをコミットするたびに、コミットが完了するまで30秒待たなければならないと思いますか?あなたはSubversion、一般的な開発プロセス、そしてあなたはCMだと思いますか?デプロイメントをポスト・コミット・フックとして行うことは、まさにキャリア強化の動きではありません。


私はあなたがJenkinsで見てください。ジェンキンスは、連続ビルドシステムと呼ばれるものです。 Jenkinsは、開発者がコミットするたびにビルドを実行するように、Jenkinsを設定できます。この方法では、デプロイメントが行われている間にSubversionを縛らないでください。

素晴らしいことは、Jenkinsも展開を実行できることです。また、デプロイメントが失敗した場合、コミットした開発者に電子メールで送信できます。ジェンキンスもあなたのためにいくつかのテストを実行することができます。たとえば、デプロイメントはうまくいったかもしれませんが、変更されたコードはエラーになります。それは検出するのがいいかもしれません。展開前にJenkinsで展開可能な成果物をテストする場合は、Jenkinsで展開可能な成果物を保存できます。テストがうまくいけば、Jenkinsのビルドに戻り、ボタンをクリックしてデプロイメントを行うことができます。

さらに、Jenkinsは、開発者がすべての変更、ビルド、および展開の履歴を確認できるようにします。また、テスト開始後、すべてのテストの履歴を表示することもできます。 Jira、Bugzilla、MantisBF、Trackなどの一般的な問題追跡システムを使用する場合、Jenkinsはそれらのシステムと統合して、特定の問題がどのビルドで処理されたかを追跡するのに役立ちます。

何かをコンパイルする必要がない場合でも(Webページ全体が単なるPHPファイルとJavaScriptだとします)、Jenkinsをデプロイメントとテストのために使用するだけで、多くのメリットが得られます。

Jenkinsは、Subversionの処理速度を落とさずに、開発プロセスを改善して問題を処理できる素晴らしいソフトウェアです。さらに、Jenkinsはとても使いやすく、とにかくポスト・コミット・フックで何をしたいのかを理解するよりもJenkinsを使う方が速いでしょう。

+0

デプロイメントプロセスからフックフォークすることでコミットの遅延を回避できますが、デプロイメントが失敗した場合にはコミットを拒否する能力は失われます。ジェンキンスを使うことは、はるかに堅牢で分かりやすい解決策だと思います。 – TMN

1

解決策(2008年以降)はにあり、コメントに~~DEPLOY~~が含まれている場合にのみ展開されます。これは、@David W.が言及した問題を否定するわけではありませんが、の時間遅延はとなり、すべてのコミットで展開することができなくなります。良いか悪いかは、チームとプロジェクトによって異なります。

0

Springloopsは自動展開ソフトウェアを使用してください。私はそれを使用し、BamBamタスク管理システムと統合された素晴らしいツールです。これをチェックしてくださいhttp://www.springloops.io

関連する問題