PHPの連続積分


PHPをWeb開発のためのどんな能力でも使ってきたので、それは非常に長い時間でした.そして、私は、再びいつでもすぐにそうすることを計画していません.しかし、私はPHPで非常に小さい、しかし、まだ役に立つスケールに適用する機会を持ちました.私が集めることができたものから、あなたは仕事のために適切なツールを使用して提供されました.
  • A simple project
  • A more complete project
  • 単純プロジェクト


    免責事項:私は違法な行動を容認しません…しかし、研究目的のために私はカスタム検索モジュールを作成しましたSynology Download Manager , そして、それが起こるように、これはPHPを必要とします.したがってsynology-dlm-rarbg プロジェクトララヴァルやシンフォニーは明らかにここには関与していない.しかし、私はこの概念がより従属するプロジェクトに関して同じであると信じたい.

    マッカピカ / シドニー


    モジュールのダウンロードモジュール


    プロジェクトの主な要素は以下の通りです.

  • The build file ( build.xml ).

  • The script file ( build.bat ) ビルドファイルをローカルで実行するのに役立ちます.

  • The CI configuration file ( .travis.yml ).
  • ビルドファイル


    私が技術の最近の経験の欠如を考えると、私は最初にPHPのソフトウェア開発の状態について少し心配しました.しかし、それは驚くほどかなりかなりわかりました:あなたは2010年にファイン依存性マネージャーを見つけることができますComposer そして非常にまともなビルドツールPhing . それは古いタイマーに基づいていますApache Ant そして、多分、同じ欠点(私は、後続のポストでカバーするという)から苦しみます.しかし、元のように:限り、あなたはそれを理解するのに役立つツールを尊重する限り、あなたはそれとかなり遠くに行くことができます.
    So Phing それは、そしてbuild.xml fileは以下のターゲットを定義しています(これまで見てきたものとほぼ一致します).

  • clean :ビルドをクリアします.tmp\ ディレクトリ).

  • ビルドランPHPLint ソースコードで、ソースコードと依存関係をコピーしますtmp\out\bin フォルダ.
  • 私が今日それをしなければならなかったならば、私は分析対象で最初の行動を隔離するでしょう.第2の動作はパッケージターゲットにおいて良好である.私自身の一貫性は時間とともに進化する.

  • test :使用するテストを実行するPHPUnit .

  • パッケージ:検索モジュール(ソースコードとその依存関係のアーカイブです)のパッケージを作成します.

  • 再構築:クリーンとビルドの組み合わせのショートカット.

  • リリース:クリーン、ビルド、およびパッケージの組み合わせのショートカット.
  • いくつかのコードを表示する前に、私はこのビルドのビットを構築した可能性があります dlm\build.xml これは最初に呼ばれます.明らかに私ははっきりと今なぜ覚えていないことができますが、私はそれが同じプロジェクトで複数の検索モジュールをパッケージ化の可能性と関係があると思います.とにかく、別のビルドファイルをどのように呼び出しますか?シンプル
    <target name="test" depends="prepare.build">
      <phing phingfile="build.xml" dir="./dlm" target="test" inheritAll="true" haltonfailure="true" />
    </target>
    
    テストターゲットは実行しなければならないPHPUnit テストファイルで、適切にダウンロードされる前に依存関係を持っている必要がありますComposer ):
    <target name="test" depends="test.prepare">
      <phpunit printsummary="true" bootstrap="vendor/autoload.php" haltonerror="true" haltonfailure="true">
        <formatter type="plain" usefile="false" />
        <batchtest>
          <fileset dir="./tests">
            <include name="**/*Test*.php"/>
          </fileset>
        </batchtest>
      </phpunit>
    </target>
    
    <target name="test.prepare">
      <composer command="update" composer="bin/composer.phar">
        <arg value="-q" />
        <arg value="-n" />
      </composer>
    </target>
    
    このプロジェクトのキーは、検索モジュールをパッケージ化することができますDownload Manager , これはa PDF document downloadable somewhere on the Synology website . 私は決して覚えていないでしょう、しかし、現在、それは2009年に記述されましたPhing それはとても簡単です.
    <target name="package" depends="package.prepare,build">
      <tar destfile="tmp/out/bin/mcartoixa_rarbg.dlm" compression="gzip">
        <fileset dir="tmp/bin/dlm">
          <include name=" **/**" />
          <exclude name="composer.*" />
        </fileset>
      </tar>
    </target>
    

    スクリプトファイル


    スクリプトファイルの要点 build.bat 単に依存関係をインストールするにはPhing , 次にビルドを実行します.
    CALL .\bin\composer.bat install -q -n
    CALL .\vendor\bin\phing.bat -f %PROJECT% %TARGET%
    
    ご覧の通りComposer それ自体は倉庫として倉庫に保管されますPHAR アーカイブ.選ぶことができたto download it instead . ここでのキーは、リポジトリが開発の準備ができていることです.

    CI設定ファイル


    私が再び選んだどんな理由のためにでもTravis CI 私の継続的な統合プラットフォームとして、設定は単純です.
    install:
      - php bin/composer.phar install -n
    
    script:
      - vendor/bin/phing -f build.xml prepare.version release
    

    より完全なプロジェクト


    ここでは何も見つからない.しかし、私は適切な基礎が上にレイアウトされていると思います.すべてのテクノロジと同様に、ビルドツールを理解し、それを理解し、それを最大限に活用することが不可欠です.例えば、Phing 何かApache Ant (と思われる)コア構造を理解するFileListFileSet sはとても重要です.
    また、私はグローバルにはなくあらゆる依存関係をローカルでインストールする傾向がありますLaravel 例えば).これは、簡単に処理することができます%PATH% 一貫して誰もが(あなたの継続的な統合プラットフォームを含む)とそれは別のプロジェクト(または分岐)別のバージョンを使用して簡単になります.