PHPビルド/統合ツール:それらを使用していますか? [閉まっている]
-
05-07-2019 - |
質問
「最新のPHPワークフロー」を読んだ後 php | architect magazineの2008年11月版の記事 単体テスト( phpUnit )、ビルドツール( Phing )および継続的統合( Xinc ) 、PHPで利用できるツールの一部、特にPhingについて詳しく学ぶことに触発されました。
過去、実稼働サーバーをSubversionの作業用コピーとして実行し、単に「svn update」を実行することで、運用サーバーへの展開を処理してきました。プロダクションボックスで最新バージョンのコードを展開します。
PHPコードのビルドツールを使用していますか? Subversionから直接デプロイする場合に比べて、どのような利点があると思いますか?何に注意する必要がありますか、または何に直面する可能性がありますか?
解決
PhingとAntの両方を使用しましたが、後者の方がずっと好みです。 PHPで記述されているため、最初はPhingを使いましたが、正直なところ、Antほど成熟していません。最終的に、大規模なコミュニティを備えた成熟したビルドシステムを持つことはより価値があります。
Ant / Phingの処理:
- ベースチェックアウトから特定の言語にロアライズし、依存関係(他のライブラリ、ディレクトリなど)があることを確認します
- テンプレートがある場合、テンプレートをコンパイルするなど
- チェックアウトされたコードバージョンに応じて、必要なバージョンまでターゲットデータベースを取得します
- 単体テストの実行など
他のヒント
Phingで見られる大きな問題は、不必要な間接層を作成することです。 PHPはスクリプト言語であるため、直接実行できます。 PhingのXML構成の使用は、言語にはあまり適していません。より読みやすい宣言的な構成を提供しますが、言語の柔軟性を犠牲にします。 Ant(そのルートのインスピレーション)を使用すると、Javaにはそれほど動的でなくコンパイルが必要になるため、その柔軟性がなかったため、それは理にかなっています。
残念ながら、PHPの分野では多くの優れた代替手段がありません。他の言語とは異なり、ビルドツールはそれほど重要ではなく、文化の一部でもないため、他のサポートオプションの進化はすぐには起こりません。
したがって、PHPが構築ツールをより積極的にサポートするカルチャから できることにより近いオプションに固執します。私は通常、 Gradle を使用します。 Rake も、チートしたい言語に応じて素晴らしい仕事をします(他の同様のオプションがあるかもしれません)。その種のことに興味がある場合は、Webdriverサポートのようなものも考慮する必要があります。それ以外の場合、PHPおよび/またはBASHを使用して軽量なソリューションを作成すると、透明性を維持しながらすべてをカバーできます
私はPhingを見て、すごいように見えました。私が取り組んでいるプロジェクトでは、実際に ApacheのAnt を使用しています。私はそれを使っていくつかのことをしています:
- JavascriptとCSSを組み合わせて圧縮します( YUI Compressor
- 標準の構成ファイルを本番用の構成ファイルに置き換えます(例:config.php.productionの名前をconfig.phpに変更します)
- 不要なファイル(antビルドファイル、build.xmlなど)を削除します
PhingはAntに注目する価値があると思います。なぜなら、それはネイティブPHPであるためです。また、単にファイルをコピー/移動する以外のことをしている場合は、実稼働環境に移動するときにパフォーマンスの問題に注意してください。 YUIコンプレッサーがローカルマシンで正常に動作する問題がありましたが、比較的小さなVPSでは超低速でした。
現在取り組んでいるプロジェクトでは、 phpUnderControl を使用してテストを実行し、何かが壊れたときの迅速なフィードバック。 Watir で書かれたテストなど、他のテストの実行にも使用する予定です。