19

2008 年 11 月号の php|architect マガジンで、ユニット テスト ( phpUnit )、ビルド ツール ( Phing )、および継続的インテグレーション ( Xinc ) について説明した記事「モダン PHP ワークフロー」を読んだ後、私はインスピレーションを受けて、いくつかのPHP、特に Phing で利用可能なツール。

過去に、ライブ サイトを Subversion 作業コピーとして実行し、運用ボックスで "svn update" を実行して最新バージョンのコードを展開することで、運用サーバーへの展開を処理することがよくありました。

PHPコードにビルドツールを使用していますか? Subversion から直接デプロイするよりも、どのような利点があると思いますか? 何に注意する必要がありますか、またはどのような落とし穴に直面する可能性がありますか?

4

4 に答える 4

7

Phingで私が目にする大きな問題は、それが不必要な間接層を作成することです。PHPはスクリプト言語であるため、直接実行できます。PhingによるXML構成の使用は、言語にはあまり適していません。より読みやすい宣言型構成を提供しますが、言語の柔軟性を犠牲にするという犠牲を払っています。Ant(そのルートのインスピレーション)では、Javaは動的性が低く、コンパイルが必要なため、その柔軟性がなかったため、理にかなっています。

残念ながら、PHPの分野で多くの優れた代替手段を見たことがありません。他の言語とは異なり、ビルドツールはそれほど重要ではなく、文化の一部でもないため、十分にサポートされている別のオプションの進化はすぐには起こらない可能性があります。

したがって、ビルドツールをより積極的にサポートするカルチャからPHPが実行できることに近いオプションに固執します。私は通常Gradleを使用します。Rakeは、チートしたい言語に応じて素晴らしい仕事もします(そして他の同様のオプションがあるかもしれません)。そのような種類のものに興味がある場合は、Webdriverサポートなども検討する必要があります。それ以外の場合は、PHPやBASHを使用して軽量ソリューションを作成することで、透明性を維持しながらすべてをカバーする必要があります

于 2012-10-16T12:13:50.830 に答える
7

私はPhingとAntの両方を使用しており、後者の方がはるかに好きです。PHPで書かれているため、最初はPhingを使用しましたが、正直なところ、Antほど成熟していません。結局、大規模なコミュニティを持つ成熟したビルドシステムを持つことは、より価値があります。

Ant / Phingで行われたこと:

  1. 基本チェックアウトから特定の言語へのローライズまで、依存関係が存在することを確認します(他のライブラリ、ディレクトリなど)
  2. それらがある場合は、テンプレートなどをコンパイルします
  3. チェックアウトされたコードバージョンに応じて、ターゲットデータベースを必要なバージョンにします
  4. ユニットテストなどを実行します
于 2009-03-08T08:39:29.487 に答える
2

私はそれがかなり素晴らしいように見えるPhingを見ました。私が取り組んでいるプロジェクトでは、実際にApacheのAntを使用しています。私はそれをいくつかのことをするために使用します:

  1. JavascriptとCSSを組み合わせて圧縮します(圧縮はYUICompressorを使用して行われます)
  2. 標準の構成ファイルを本番構成ファイルに置き換えます(例:config.php.productionの名前をconfig.phpに変更します)
  3. 不要なファイル(antビルドファイル、build.xmlなど)を削除します

PhingはネイティブPHPであるため、Antを検討する価値があると思います。また、ファイルをコピー/移動する以外のことをしている場合は、実稼働環境に移動するときにパフォーマンスの問題に注意してください。YUIコンプレッサーがローカルマシンで正常に動作するという問題がありましたが、比較的小さいVPSでは非常に低速でした。

于 2009-03-08T07:28:38.347 に答える
2

私が現在取り組んでいるプロジェクトでは、phpUnderControlを使用してテストを実行し、何かが壊れたときに迅速なフィードバックを取得しています。Watirで書かれたものなど、他のテストの実行にも使用する予定です。

于 2009-03-08T15:55:07.880 に答える