ジェンキンスで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を実行することから始めます。
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>
次は作曲家とバウアーです。次のコマンドを実行して、これらをジェンキンスサーバーにグローバルにインストールすることにしました。
[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を入力します。
このプロジェクトの構成ページにすぐに移動します。最初に、ビルドのチェックを外して、ビルドがSAVEで有効になるようにします。 GitHubプロジェクト入力フィールド内で、URLをGitHubプロジェクトに記入します。
私たちがしなければならない最後のことは、ソース管理を選択することです。私たちの場合、これはgitです。次に、リポジトリリンクに記入する必要があります。 HTTPSリンクを使用する場合、追加の資格情報を提供する必要はありません。どのブランチを構築するかを決定できますが、マスターブランチしか持っていないので、そのままにしておきます。
構成が完了しました。事前定義されたテンプレートを使用したため、とても簡単です。下にスクロールすると、テンプレートが設定したものが正確に表示されます。継続する前に構成を保存することを忘れないでくださいビルドを開始
これまでのすべての手順に従った場合、ビルドを開始できるようになりました。プロジェクトの左側のメニューで今すぐビルドをクリックして、ビルドを開始できます。左下のテーブルにビルドが表示されていることに気付くでしょう。
ビルド自体をクリックすると、この特定のビルドのオプションを備えた新しいサイドメニューが表示されます。コンソール出力をクリックして、何が起こっているのかを正確に確認してください。私の場合、最初のビルドは、いくつかのPHP拡張機能が欠落しているために失敗しました。
おそらく、ビルドが成功したときに青いボールの代わりに緑色のボールを期待していたでしょう。青いボールの代わりにグリーンボールを表示できるプラグインがあります。 結論
この記事では、ビルドを成功させるために取り組みました。私たちはプロジェクトを準備し、ジェンキンス内で仕事を作らなければなりませんでした。最後に、いくつかのライブラリをインストールするのを忘れていたので、最初の数回のビルドをデバッグする必要がありました。次の部分では、ジェンキンスが返すすべての結果を見てみましょう。 Jenkinsを使用したPHPプロジェクトの構築に関するよくある質問(FAQ) PHPプロジェクトのためにJenkinsをセットアップするにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。

php8.1の列挙関数は、指定された定数を定義することにより、コードの明確さとタイプの安全性を高めます。 1)列挙は、整数、文字列、またはオブジェクトであり、コードの読みやすさとタイプの安全性を向上させることができます。 2)列挙はクラスに基づいており、トラバーサルや反射などのオブジェクト指向の機能をサポートします。 3)列挙を比較と割り当てに使用して、タイプの安全性を確保できます。 4)列挙は、複雑なロジックを実装するためのメソッドの追加をサポートします。 5)厳密なタイプのチェックとエラー処理は、一般的なエラーを回避できます。 6)列挙は魔法の価値を低下させ、保守性を向上させますが、パフォーマンスの最適化に注意してください。

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

phpstormでCLIモードをデバッグする方法は? PHPStormで開発するときは、PHPをコマンドラインインターフェイス(CLI)モードでデバッグする必要がある場合があります。

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...
