前の記事では、Jenkinsのインストールを行って、すべてを準備しました。この記事では、実際にプロジェクトを準備することで継続します。以前からジェンキンスのセットアップを準備している場合は、前の部分を通過する必要はありません。これを非常にうまくフォローできます。
キーテイクアウト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>
build.xmlファイル全体を調べると、特定のツールの他の3つの個別の構成ファイルに依存していることがわかります。 build/phpmd.xml、build/phpdox.xml、build/phpunit.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>
次に、作曲家のターゲットを作成します。
<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を入力します。
このプロジェクトの構成ページにすぐに移動します。最初に、ビルドのチェックを外して、ビルドがSAVEで有効になるようにします。 GitHubプロジェクト入力フィールド内で、URLをGitHubプロジェクトに記入します。
私たちがしなければならない最後のことは、ソース管理を選択することです。私たちの場合、これはgitです。次に、リポジトリリンクに記入する必要があります。 HTTPSリンクを使用する場合、追加の資格情報を提供する必要はありません。どのブランチを構築するかを決定できますが、マスターブランチしか持っていないので、そのままにしておきます。
構成が完了しました。事前定義されたテンプレートを使用したため、とても簡単です。下にスクロールすると、テンプレートが設定したものが正確に表示されます。継続する前に構成を保存することを忘れないでくださいビルドを開始
これまでのすべての手順に従った場合、ビルドを開始できるようになりました。プロジェクトの左側のメニューで今すぐビルドをクリックして、ビルドを開始できます。左下のテーブルにビルドが表示されていることに気付くでしょう。
ビルド自体をクリックすると、この特定のビルドのオプションを備えた新しいサイドメニューが表示されます。コンソール出力をクリックして、何が起こっているのかを正確に確認してください。私の場合、最初のビルドは、いくつかの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ユーザーの許可をタスクを実行するために必要なもののみに制限する必要があります。Jenkinsを使用してPHPアプリケーションを展開するにはどうすればよいですか?
以上がジェンキンスでPHPプロジェクトの準備と構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。