ホームページ > バックエンド開発 > PHPチュートリアル > ジェンキンスでPHPプロジェクトの準備と構築

ジェンキンスでPHPプロジェクトの準備と構築

Christopher Nolan
リリース: 2025-02-19 10:48:11
オリジナル
702 人が閲覧しました

ジェンキンスでPHPプロジェクトの準備と構築

前の記事では、Jenkinsのインストールを行って、すべてを準備しました。この記事では、実際にプロジェクトを準備することで継続します。以前からジェンキンスのセットアップを準備している場合は、前の部分を通過する必要はありません。これを非常にうまくフォローできます。

キーテイクアウト

    JenkinsでPHPプロジェクトを準備するには、PHPunitやPHP-Codesnifferなどのツールを利用できるようにすることをお勧めします。これは、Jenkinsサーバーにグローバルにパッケージをインストールするか、Composer.jsonファイルで依存関係を定義することで実現できます。
  • JenkinsサーバーでANTを使用して、ソフトウェアビルドプロセスを自動化します。ターゲットは構成ファイルで定義され、ANTはこれらのターゲットに基づいてアクションを実行します。 build.xmlファイルは、Jenkinsサーバーでタスクを実行するためにANTのプロジェクトに追加されます。
  • build.xmlファイルには、特定のプロジェクトに合わせて変更が必要になる場合があります。これには、phpunitのようなツールがどこにあるかを定義し、プロジェクトに正しく一致するようにいくつかのコマンドをクリーンアップすることが含まれます。 すべてのQAツールが予想どおりに実行されるようにするために、
  • 新しいターゲットを作成する必要があります。これには、コンポーザーやバウアーによって規制されている依存関係など、ジェンキンスでプロジェクトを正しくセットアップするための要件を扱うことが含まれます。
  • プロジェクトを準備した後、ジェンキンスでプロジェクトを作成して構成する必要があります。手順には、Jenkins内にGitHubプラグインのインストール、新しいアイテムの作成、ソース管理の構成が含まれます。その後、プロジェクトのサイドメニューで「今すぐビルド」をクリックしてビルドを開始できます。
  • 作曲家の準備
  • 最初にプロジェクトを準備します。 Sebastian Bergmannが提供するプロジェクトを使用できますが、それはむしろ基本的なプロジェクトであり、Jenkinsで問題なく実行されます。この記事では、いくつかのハードルを克服する必要がある別のリポジトリを使用します。私たちは私たちの基礎としてジャンフのフォークを使用します。
  • 何よりもまず、PHPunitやPHP-Codesnifferなどのツールが利用可能であることを確認する必要があります。これを2つの異なる方法で行うことができます。 Pearを介してJenkinsサーバーにパッケージをグローバルにインストールするか、Composer.jsonファイルの依存関係を定義します。後者の方法を使用することにしたので、これらのツールのバージョンを独自のローカルマシンとJenkinsで簡単に制御できます。そのため、次の行をComposer.jsonファイルに追加し、Composer Updateを実行することから始めます。

各パッケージが何をしているのかについてもっと知りたい場合は、PHP QAツールに関するブルーノの記事をご覧ください。

Ant

を準備します

Jenkinsサーバーでは、ANTを使用します。したがって、ANTがサーバーにまだインストールされていない場合は、次のコマンドを実行してください。

"require-dev": {
    "squizlabs/php_codesniffer": "~1.5.*",
    "phpmd/phpmd": "~2.1.*",
    "sebastian/phpcpd": "~2.0.*",
    "pdepend/pdepend": "~2.0.*",
    "phploc/phploc": "~2.0.*",
    "phpunit/phpunit": "~4.3.*",
    "theseer/phpdox": "~0.7.*",
},
ログイン後にコピー
ログイン後にコピー

Antは、ソフトウェアビルドプロセスを自動化するのに役立ちます。構成ファイルで、ターゲットと呼ばれるタスクを定義します。 ANTはこのファイルを読み取り、適切なアクションを実行します。依存関係を定義して、ANTがこれらのタスクを実行する順序を示すことができます。構成ファイルは、いわゆるbuild.xmlファイルです。これをプロジェクトに追加するので、AntはJenkinsサーバーでこれらのタスクを実行できます。ここで見つけることができるSebastian Bergmannが提供するテンプレートを使用します。これをプロジェクトのルートに追加します

アリを実行するには、コマンドラインでアリのビルドをキックオフできます。これは、ANTがビルドターゲットを実行することを意味します。パラメーターが指定されていない場合、ANTはデフォルトとして構成に示されているようにターゲットを実行します。この場合、これもビルドされます。

ビルドターゲットを詳しく見てみましょう。

ターゲットは空ですが、他の多くのターゲットに依存します。最初に準備ターゲットを実行し、すべてのターゲットが実行されるまでLINTターゲットを続行します。 たとえば、phploc-ciターゲットを見てみましょう。
sudo apt-get install ant
ログイン後にコピー
ログイン後にコピー

このターゲットはかなり理解しやすいです。準備ターゲットに依存することに気付くでしょう。それはすでにビルドターゲットによって実行されていたため、再び実行されません。次に、ANTによって実行されるPHPLOCである実行可能ファイルを取得します。これを以前に作曲家にインストールしました。最後に、PHPLOC固有の引数が表示されます。 ANTは、このターゲット構成に基づいて次のコマンドライン入力を実行します。
<span><span><span><target</span> name<span>="build"</span> depends<span>="prepare,lint,phploc-ci,pdepend,phpmd-ci,phpcs-ci,phpcpd-ci,phpunit,phpdox"</span> description<span>=""</span>/></span></span>
ログイン後にコピー
ログイン後にコピー

$ {toolsdir}および$ {bedistir}は2つの変数です。それらがどのように構成されているかによって、それらは全体的なコマンドライン出力に影響を与える可能性があります<span><span><span><target</span> name<span>="phploc-ci"</span> depends<span>="prepare"</span> description<span>="Measure project size using PHPLOC and log result in CSV and XML format. Intended for usage within a continuous integration environment."</span>></span> </span> <span><span><span><exec</span> executable<span>="${toolsdir}phploc"</span>></span> </span> <span><span><span><arg</span> value<span>="--count-tests"</span>/></span> </span> <span><span><span><arg</span> value<span>="--log-csv"</span>/></span> </span> <span><span><span><arg</span> path<span>="${basedir}/build/logs/phploc.csv"</span>/></span> </span> <span><span><span><arg</span> value<span>="--log-xml"</span>/></span> </span> <span><span><span><arg</span> path<span>="${basedir}/build/logs/phploc.xml"</span>/></span> </span> <span><span><span><arg</span> path<span>="${basedir}/src"</span>/></span> </span> <span><span><span><arg</span> path<span>="${basedir}/tests"</span>/></span> </span> <span><span><span></exec</span>></span> </span><span><span><span></target</span>></span></span>このphplocコマンドは、phploc.csvファイルとphploc.xmlファイルを出力することに注意してください。以前にJenkinsにインストールされたプラグインは、これらのファイルを読み取り、たとえばグラフに変換します。次の記事では、このトピックをさらに深く掘り下げます。

build.xmlファイル全体を調べると、特定のツールの他の3つの個別の構成ファイルに依存していることがわかります。 build/phpmd.xml、build/phpdox.xml、build/phpunit.xml。これらの構成ファイルは、実際のツールによって要求されます。詳細については、それぞれのドキュメントをご覧ください。 build.xmlファイルの変更

それで、私たちは終わりましたか?残念ながら、まだ。 build.xmlファイルは非常に一般的であり、プロジェクトに完全に適していません。まず、phpunitのようなツールを見つけることができる場所を定義する必要があります。私たちの作曲家は、これらをプロジェクトのルートにあるBinディレクトリに自動的にインストールしました。 ToolsDirプロパティを正しい値に変更する必要があります。

"require-dev": {
    "squizlabs/php_codesniffer": "~1.5.*",
    "phpmd/phpmd": "~2.1.*",
    "sebastian/phpcpd": "~2.0.*",
    "pdepend/pdepend": "~2.0.*",
    "phploc/phploc": "~2.0.*",
    "phpunit/phpunit": "~4.3.*",
    "theseer/phpdox": "~0.7.*",
},
ログイン後にコピー
ログイン後にコピー

いくつかのコマンドをクリーンアップすることもできます。現在のbuild.xmlファイルは、一方でSRCディレクトリがあり、一方でテストディレクトリがあることを定義しています。 Symfony2にはSRCディレクトリにテストが含まれているため、この例のようなテストディレクトリへのすべてのパスを削除できます。

sudo apt-get install ant
ログイン後にコピー
ログイン後にコピー

必須ではありませんが、プロジェクトを正しく一致させるために、すべてをできるだけきれいに保つことを好みます。 最後に、この記事を書いているときにbuild.xmlファイルに示されているPHPDoxの現在の構成は、私の場合の最新バージョンでは機能しません。以下のようにターゲットを変更したため、構成ファイルを正しく読み取ります。

新しいターゲットの作成

すべてのQAツールが予想どおりに実行されるようにするために、すべてがセットアップされています。しかし、私たちのプロジェクトはもう少し複雑です。リポジトリを分析した場合、依存関係は作曲家とBowerによって規制されていることに気付くでしょう。 Symfonyプロジェクトであるため、デフォルトのパラメーター.ymlファイルも必要です。ジェンキンスでプロジェクトを正しくセットアップできるようにするには、これらの要件に対処する必要があります。

パラメーター.ymlファイルから始めましょう。パラメーターのデフォルトコンテンツを使用できます。Iml.Distなので、そのファイルをコピーするだけです。 CPコマンドを実行するコピーパラメーターという名前の新しいターゲットを作成することから始めます。
<span><span><span><target</span> name<span>="build"</span> depends<span>="prepare,lint,phploc-ci,pdepend,phpmd-ci,phpcs-ci,phpcpd-ci,phpunit,phpdox"</span> description<span>=""</span>/></span></span>
ログイン後にコピー
ログイン後にコピー

次は作曲家とバウアーです。次のコマンドを実行して、これらをジェンキンスサーバーにグローバルにインストールすることにしました。

[ed:WindowsでホストされているVMでこれをすべて実行している場合、BowerphpはBowerよりもはるかに優れた選択肢になることに注意してください。

次に、作曲家のターゲットを作成します。

<span><span><span><target</span> name<span>="phploc-ci"</span> depends<span>="prepare"</span> description<span>="Measure project size using PHPLOC and log result in CSV and XML format. Intended for usage within a continuous integration environment."</span>></span>
</span>    <span><span><span><exec</span> executable<span>="${toolsdir}phploc"</span>></span>
</span>        <span><span><span><arg</span> value<span>="--count-tests"</span>/></span>
</span>        <span><span><span><arg</span> value<span>="--log-csv"</span>/></span>
</span>        <span><span><span><arg</span> path<span>="${basedir}/build/logs/phploc.csv"</span>/></span>
</span>        <span><span><span><arg</span> value<span>="--log-xml"</span>/></span>
</span>        <span><span><span><arg</span> path<span>="${basedir}/build/logs/phploc.xml"</span>/></span>
</span>        <span><span><span><arg</span> path<span>="${basedir}/src"</span>/></span>
</span>        <span><span><span><arg</span> path<span>="${basedir}/tests"</span>/></span>
</span>    <span><span><span></exec</span>></span>
</span><span><span><span></target</span>></span></span>
ログイン後にコピー

Symfony_Envをテストするように設定することが重要です。Symfonyは、テストキャッシュディレクトリをクリアする必要があることを知っています。

bowerを続けましょう。
phploc --count-tests --log-csv /build/logs/phploc.csv --log-xml /build/logs/phploc.xml /src /tests
ログイン後にコピー

最後にする必要があることは、これらのターゲットが実行されることを確認することです。したがって、ビルドターゲットを変更し、それらを実行する順に新しく作成された3つのターゲットを追加します。

git

最後に行う必要があるのは、.gitignoreファイルを準備することです。ローカルマシンでANTターゲットを実行したい場合は、ビルドディレクトリにはリポジトリにコミットしたくないログファイルが充填されます。したがって、.gitignoreファイルに次の行を追加します。
<span><span><span><property</span> name<span>="toolsdir"</span> value<span>="bin/"</span> /></span></span>
ログイン後にコピー

おそらく、私たちが行ったすべての変更に少し混乱したでしょう。あなたの便利さのために、上記のすべての変更を伴うコミットへの直接的なリンクを次に示します。

ジェンキンス

でプロジェクトを作成します

私たちのプロジェクトの準備ができました。ジェンキンスに戻って構成しましょう。これは、この記事で最も簡単な部分になります。
<span><span><span><arg</span> path<span>="${basedir}/tests"</span>/></span></span>
ログイン後にコピー

プロジェクトはGitHubにあるため、Jenkins内にGitHubプラグインをインストールすることをお勧めします。独自のGitサーバーを使用している場合は、通常のGitプラグインをインストールできます。プラグインのインストール方法が不明な場合は、前の記事を確認してください。

概要に戻るときは、左メニューで新しいアイテムをクリックする必要があります。アイテム名として、ジャンフに記入します。次に、既存のアイテムをコピーするオプションを選択し、プロジェクトとしてPHP-Templateを入力します。

ジェンキンスでPHPプロジェクトの準備と構築このプロジェクトの構成ページにすぐに移動します。最初に、ビルドのチェックを外して、ビルドがSAVEで有効になるようにします。 GitHubプロジェクト入力フィールド内で、URLをGitHubプロジェクトに記入します。

私たちがしなければならない最後のことは、ソース管理を選択することです。私たちの場合、これはgitです。次に、リポジトリリンクに記入する必要があります。 HTTPSリンクを使用する場合、追加の資格情報を提供する必要はありません。どのブランチを構築するかを決定できますが、マスターブランチしか持っていないので、そのままにしておきます。

構成が完了しました。事前定義されたテンプレートを使用したため、とても簡単です。下にスクロールすると、テンプレートが設定したものが正確に表示されます。継続する前に構成を保存することを忘れないでください

ビルドを開始

これまでのすべての手順に従った場合、ビルドを開始できるようになりました。プロジェクトの左側のメニューで今すぐビルドをクリックして、ビルドを開始できます。左下のテーブルにビルドが表示されていることに気付くでしょう。

ビルド自体をクリックすると、この特定のビルドのオプションを備えた新しいサイドメニューが表示されます。コンソール出力をクリックして、何が起こっているのかを正確に確認してください。私の場合、最初のビルドは、いくつかのPHP拡張機能が欠落しているために失敗しました。

ジェンキンスでPHPプロジェクトの準備と構築

コンソール出力は、プロジェクトが失敗している理由を見つけるのに非常に便利です。私の場合、私はsudo apt-getインストールphp5-curl php5-xsl php5-sqlite php5-xdebugを実行して、必要なパッケージをインストールする必要がありました。何が欠落しているかを把握するのにいくつかのビルドが必要でしたが、コンソール出力を使用すると、何がうまくいかないかを簡単に把握できます。最終的に、これは私のビルド履歴がどのように見えるかです。

ジェンキンスでPHPプロジェクトの準備と構築

赤はビルドが失敗したことを意味し、青はビルドが成功したことを意味します。障害は、以前に見たように構成に何か問題が発生したことを意味しますが、単体テストが失敗したことも意味します。 build.xmlファイルを再度開くと、一部のターゲットがTrueに設定されているrailonerrorという名前の属性を取得していることに気付くでしょう。何らかの理由でそのターゲットが失敗した場合、アリは自動的に停止し、ビルドを壊れたと報告します。

おそらく、ビルドが成功したときに青いボールの代わりに緑色のボールを期待していたでしょう。青いボールの代わりにグリーンボールを表示できるプラグインがあります。 結論

この記事では、ビルドを成功させるために取り組みました。私たちはプロジェクトを準備し、ジェンキンス内で仕事を作らなければなりませんでした。最後に、いくつかのライブラリをインストールするのを忘れていたので、最初の数回のビルドをデバッグする必要がありました。

次の部分では、ジェンキンスが返すすべての結果を見てみましょう。 Jenkinsを使用したPHPプロジェクトの構築に関するよくある質問(FAQ) PHPプロジェクトのためにJenkinsをセットアップするにはどうすればよいですか?

​​ PHPプロジェクトにJenkinsのセットアップには、いくつかのステップが含まれます。まず、サーバーにJenkinsをインストールする必要があります。 Jenkinsの公式Webサイトからダウンロードして、インストール手順に従うことができます。インストールしたら、PHPで動作するようにJenkinsを構成する必要があります。これには、プロジェクトの要件に応じて、PHPプラグイン、Gitプラグインなどの必要なプラグインをインストールすることが含まれます。プラグインをインストールした後、新しいJenkinsジョブを作成し、PHPプロジェクトを構築するように構成できます。プロジェクトのソースコードの場所、ビルドトリガー、ビルドステップを指定する必要があります。 PHPプロジェクト。 PHPアプリケーションの構築、テスト、展開のプロセスを自動化します。これにより、多くの時間と労力を節約できます。また、コードが常に展開可能な状態にあることを確認するのに役立ち、ソフトウェアの品質を向上させることができます。さらに、Jenkinsは継続的な統合と継続的配信をサポートしています。これにより、ユーザーに更新をより迅速かつ頻繁に配信するのに役立ちます。 Jenkinsは、さまざまなテストツールと統合することにより、PHPプロジェクトのテストを自動化するために使用できます。たとえば、Phpunitプラグインを使用してユニットテストを実行したり、Seleniumプラグインを実行して機能テストを実行できます。 Jenkinsのジョブでこれらのプラグインを構成するだけで、プロジェクトを構築するたびにテストを自動的に実行します。これは、バグを早期にキャッチし、コードが常に良好な状態にあることを保証するのに役立ちます。 PHP以外のプログラミング言語。これには、Java、Python、Ruby、C#などが含まれます。 Jenkinsを使用して、適切なプラグインをインストールし、それに応じてJenkinsジョブを構成することにより、これらの言語で記述されたアプリケーションを構築、テスト、展開できます。

Jenkinsを使用してPHPアプリケーションを展開するにはどうすればよいですか?

​​

Jenkinsを使用して、さまざまな展開ツールと統合してPHPアプリケーションを展開できます。たとえば、SSHプラグインを使用してアプリケーションをリモートサーバーに展開するか、DockerプラグインをDockerコンテナとして展開できます。 Jenkinsジョブでこれらのプラグインを構成する必要があります。プロジェクトを構築するたびにアプリケーションを自動的に展開します。統合は、開発者がコードを頻繁に共有リポジトリに統合するソフトウェア開発慣行です。通常は1日に複数回です。これにより、統合の問題を早期にキャッチし、ソフトウェアの更新を提供するために必要な時間と労力を短縮するのに役立ちます。 Jenkinsは、リポジトリに変更をコミットするたびにソフトウェアの構築、テスト、展開のプロセスを自動化することにより、継続的な統合をサポートします。配信は、コードの変更が自動的に構築、テストされ、生産のリリースのために準備されるソフトウェア開発慣行です。リリースのリスクを減らし、より頻繁にすることを目指しています。 Jenkinsは、統合やテストから配信と展開まで、ソフトウェアリリースプロセス全体を自動化することにより、継続的配信をサポートしています。これにより、Gitリポジトリに変更をプッシュするたびに、ソフトウェアを自動的に構築、テスト、展開できます。これを構成して、GITプラグインをインストールし、GITリポジトリにWebhookを設定して、変更がプッシュされるたびにJenkinsビルドをトリガーします。 Jenkinsは、問題のトラブルシューティングに役立ついくつかのツールを提供しています。これには、ビルドログが含まれます。これには、ビルド中に起こったことに関する詳細情報と、Jenkinsサーバーの全体的な動作に関する情報を提供できるシステムログが含まれます。 Jenkins CLIまたはREST APIを使用してJenkinsサーバーと対話して問題を診断することもできます。まず、Jenkinsサーバーが最新バージョンを実行していることを確認する必要があります。これには、最新のセキュリティパッチが含まれるためです。また、Jenkinsサーバーとユーザー間で通信を暗号化するHTTPSを使用するようにJenkinsを構成する必要があります。さらに、認証と承認メカニズムを使用してJenkinsサーバーへのアクセスを制限し、Jenkinsユーザーの許可をタスクを実行するために必要なもののみに制限する必要があります。

以上がジェンキンスでPHPプロジェクトの準備と構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
関連するチュートリアル
人気のおすすめ
最新のコース
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート