変更がSubversionリポジトリにコミットされるシステムを実装しています。これらの変更はすぐにリモートサーバーにプッシュされることが望まれます(できれば.svn litterなしで)。
コミット後のフックでsvnexportコマンドを見ていますが、これは変更のみをプッシュしますか?また、リモートサーバーでどのように認証しますか?
変更がSubversionリポジトリにコミットされるシステムを実装しています。これらの変更はすぐにリモートサーバーにプッシュされることが望まれます(できれば.svn litterなしで)。
コミット後のフックでsvnexportコマンドを見ていますが、これは変更のみをプッシュしますか?また、リモートサーバーでどのように認証しますか?
Subversionのすべてのリビジョンをサーバーに自動的にプッシュしますか?いくつかのテストを行い、展開するリビジョンを選択してください。
コミット後のフックを機能させることができたとしても、それは良い考えではありません。ユーザーは、Subversionを続行する前に、フックが完了するのを待って立ち往生します。基本的に、Subversionはコミットごとに10〜20秒かかるように見えます(つまり、リポジトリ全体をわずか10〜20秒でデプロイできる場合です!)
これを処理する最良の方法は、Jenkinsを使用することです。Jenkinsをインストールして稼働させるには、約30分かかります。(これはWebサービスなので、ブラウザーからアクセスします)。展開が機能するようになるまで、さらに30分かかります。
はい、まったく新しいWebサーバーをインストールするようにお願いしていますが、すべてが希望どおりに機能するようになるまでに1、2時間以上かかることはありません。これは、テストしてコミット後のフックを機能させるよりもはるかに高速になります。
JenkinsはSubversionリポジトリを監視します。変更を検出すると、展開スクリプトを実行できます。たとえば、サーバーへのrsyncを実行します。おそらく、変更を実装する前にサーバーを停止することさえあります。
そして、これにも多くの利点があります。
そして、この機能を拡張することができます。たとえば、変更のたびに展開を行うのは素晴らしいアイデアではないかもしれないと述べました。たぶん、テストサーバーをセットアップして、Jenkinsをそのサーバーにデプロイしてテストを実行することができます。Jenkinsは、Jenkins内でテスト結果を報告できます。すべてのテストに合格したら、Jenkinsを本番サーバーにデプロイします。
または、本番サーバーではなくテストサーバーにデプロイすることについて話しているかもしれません。了解しました。Jenkinsにテストサーバーへのデプロイを実行してもらい、テストを実行してもらいます。次に、テストを調べて、Jenkins内の本番サーバーにボタン1つでデプロイできます。
サーバーがそれほどビジーでない特定の時間にのみデプロイしたい場合があります。システムにあまり多くのユーザーがいない場合、午前2時にのみ実行される2番目のジョブをJenkinsでセットアップできます。
また、Jenkinsを使用する必要はありません。他にも多くの継続的ビルドシステムがあります。いくつかのオープンソースのものですが、かなり優れたプロプライエタリ(つまりお金がかかる)システムもあります