0

変更がSubversionリポジトリにコミットされるシステムを実装しています。これらの変更はすぐにリモートサーバーにプッシュされることが望まれます(できれば.svn litterなしで)。

コミット後のフックでsvnexportコマンドを見ていますが、これは変更のみをプッシュしますか?また、リモートサーバーでどのように認証しますか?

4

2 に答える 2

3

Subversionのすべてのリビジョンをサーバーに自動的にプッシュしますか?いくつかのテストを行い、展開するリビジョンを選択してください。

コミット後のフックを機能させることができたとしても、それは良い考えではありません。ユーザーは、Subversionを続行する前に、フックが完了するのを待って立ち往生します。基本的に、Subversionはコミットごとに10〜20秒かかるように見えます(つまり、リポジトリ全体をわずか10〜20秒でデプロイできる場合です!)

これを処理する最良の方法は、Jenkinsを使用することです。Jenkinsをインストールして稼働させるには、約30分かかります。(これはWebサービスなので、ブラウザーからアクセスします)。展開が機能するようになるまで、さらに30分かかります。

はい、まったく新しいWebサーバーをインストールするようにお願いしていますが、すべてが希望どおりに機能するようになるまでに1、2時間以上かかることはありません。これは、テストしてコミット後のフックを機能させるよりもはるかに高速になります。

JenkinsはSubversionリポジトリを監視します。変更を検出すると、展開スクリプトを実行できます。たとえば、サーバーへのrsyncを実行します。おそらく、変更を実装する前にサーバーを停止することさえあります。

そして、これにも多くの利点があります。

  • Jenkinsは、すべての展開の完全な記録を保持します。
  • Jenkinsは、デプロイが成功したかどうかを通知できます。
  • 変更履歴の記録に簡単にアクセスできます。

そして、この機能を拡張することができます。たとえば、変更のたびに展開を行うのは素晴らしいアイデアではないかもしれないと述べました。たぶん、テストサーバーをセットアップして、Jenkinsをそのサーバーにデプロイしてテストを実行することができます。Jenkinsは、Jenkins内でテスト結果を報告できます。すべてのテストに合格したら、Jenkinsを本番サーバーにデプロイします。

または、本番サーバーではなくテストサーバーにデプロイすることについて話しているかもしれません。了解しました。Jenkinsにテストサーバーへのデプロイを実行してもらい、テストを実行してもらいます。次に、テストを調べて、Jenkins内の本番サーバーにボタン1つでデプロイできます。

サーバーがそれほどビジーでない特定の時間にのみデプロイしたい場合があります。システムにあまり多くのユーザーがいない場合、午前2時にのみ実行される2番目のジョブをJenkinsでセットアップできます。


また、Jenkinsを使用する必要はありません。他にも多くの継続的ビルドシステムがあります。いくつかのオープンソースのものですが、かなり優れたプロプライエタリ(つまりお金がかかる)システムもあります

于 2012-08-02T13:46:44.320 に答える
2
  • svnexportは変更を送信するだけではありません。ただし、ローカルディレクトリにエクスポートして、rsync(変更のみを送信する)を使用することはできます。
  • 認証はrsyncによって処理されます。パスフレーズなしでキーを使用してこれを自動化できますが、可能な限り少ない権限を持つユーザーを使用することをお勧めします。
于 2012-08-02T09:28:26.580 に答える