2011-07-27 8 views
2

現在、私たちは非常に簡単な(しかし効果的な)リリースプロセスを持っています。私たちはSVNで新しいバージョンをタグ付けします。このバージョンはテスト環境にエクスポートされます。そこから、受け入れ環境へのrsync、そしてそこから本番環境へのrsync。リリースプロセスでは、私のcssファイルとjsファイルを縮小する必要がありますか?

ここで、cssファイルとjsファイルのサイズを小さくしたいと考えています。私はAcceptanceにリリースする過程でテスト環境でこれを縮小したいと思っていました。そのためAcceptance環境とProduction環境の両方でファイルを縮小しました。しかし、そこでファイルを縮小するとタイムスタンプが変わり、縮小されたコンテンツは変更されていなくても、rsyncは毎回すべてのcssファイルとjsファイルを転送します。

私の質問です:これを解決するベストプラクティスは何ですか? 新しいバージョンをリリースするためにrsyncとは異なるメカニズムを使用する必要がありますか? 既にSVNにミニバージョンを置くべきですか?しかし、私は開発されたファイルを望んでいないので、それらを最小化する(そしておそらく組み合わせる)のは何ですか?

私たちはPHP 5.3.6を使用しています。私は簡単にスクリプトで使用できるので、Yui-compressorを調べ始めました。

+0

そして、これらのmifiedsファイルを同期する際に何が問題になりますか? –

+0

1つの問題は、リリースを遅くすることです。しかしもっと重要なのは、変更されたファイルのリストを見ることは、あなたが意図したものだけをリリースするという最後のチェックです。私たちが間違いを犯さないようにするには、複数の方法があります。 – Myrddin81

答えて

3

ソースファイルのタイムスタンプがすでに縮小されたファイルのタイムスタンプより新しい場合にのみ、ファイルを再度縮小する必要があります。これを行うと、rsyncはうまく動作し、変更されたファイルのみを転送します。

Apache AntやPhingのようなビルドソフトウェアを使用する場合は、これを実現するのは簡単です。タイムスタンプの変更を検出するためのテストが特にあります。

+0

SVNからテスト環境に新しいバージョンを取得すると、すべてのファイルが縮小されません。これは、この新しいバージョンで変更されたかどうかにかかわらず、すべてのファイルを最小化する必要があることを意味し、すべてのタイムスタンプが更新されます。 – Myrddin81

+0

rsyncには、コンテンツが変更されていない場合でもファイルを更新しない解決策がいくつかあると私は考えていました。または、私は、SVNで個別にリリースされたバージョンを作成して、それを縮小する必要があります。あるいは、Apacheを使ってオンザフライで実行する必要があるだけのものですか?私はベストプラクティスが何であるか分かりません – Myrddin81

+0

rsyncはファイルの変更を検出できますが、おそらくrsyncデーモンを使用しているときにのみ、通常のSSHを使用していないときにはそうでないと思います。 Rsyncは、トラフィックを最小限に抑えるためにローリングチェックサムを実行できます。 –

関連する問題