コアポイント
アプリケーションがより複雑になるにつれて、作曲家の依存関係、Webpackビルドスクリプト、およびすべての環境変数を含む - これらすべての異なる複雑さをテストすることが遅くなり、特にすべてのテストですべてのテストが削除され、再構成が必要な場合に面倒になります。環境全体。同様に、コードスタイルは時間の経過とともに歪む可能性があり、生産に使用できる展開アーカイブを作成するには、特定の一連のステップが必要です。
アプリケーションをテストするために、次の手順が必要です。
composer install
php -l
この問題を克服するために、ビルドサーバーを開発ワークフローに導入できます。ビルドサーバーは、一連のステップを繰り返し実行できるソフトウェアを実行し、そのうちの1つが失敗した場合、ビルドサーバーは問題を通知できます。オープンソースプロジェクトに参加している場合は、TravisciやCircleciなどのサーバーを構築するための実用的なアプリケーションを見たことがあるかもしれません。たとえば、Laravelプロジェクトの各プル要求はTravisciによってテストされ、変更がテストを破らないようにし、Styleciがコードの変更がプロジェクトコードスタイルと一致するようにします。
パイプラインは、コードをテストおよびビルドするために順次実行できる完全にカスタマイズ可能なステップのセットです。パイプラインはグルーヴィーなスクリプト言語で書かれており、非常にシンプルな構文を備えており、簡単に開始できます。たとえば、前述のテストステップをパイプラインとして説明したい場合は、次のように見えるかもしれません。
node { stage("composer_install") { sh 'composer install' } stage("php_lint") { sh 'find . -name "*.php" -print0 | xargs -0 -n1 php -l' } stage("phpunit") { sh 'vendor/bin/phpunit' } stage("codeception") { sh 'vendor/bin/codecept run' } }
ブロックには複数の段階があり、各ステージは特定の操作を実行します。 Jenkinsは各ステージを順番に実行し、ステージが失敗した場合、ビルド全体が失敗し、Jenkinsが実行を停止します。 node
この簡単な例から、他のテストの追加フェーズを簡単に追加して、Jenkinsに成功したビルドスラック通知を送信するように指示することができます。 node
をインストールします
Jenkinsはインストールが非常に簡単です。このチュートリアルでは、Laravel Homesteadを使用して、Jenkinsをローカルで使用できるように、一貫した仮想環境を提供します。ファイル内のサイトを構成する必要はありません。
起きてホームステッドの仮想マシンを実行したら、homestead.yaml
を使用してログインします。
Homesteadには、必要なすべての依存関係、つまりGit、PHP、およびComposerが付属しているため、Jenkins自体をインストールするだけです。 Jenkins Debianパッケージガイドに従って、次の手順を実行する必要があります。 vagrant ssh
。このコマンドは、このリポジトリのJenkinsパッケージが信頼されるように、コード署名キーを適性に追加します。
次に、Jenkinsパッケージリポジトリについて適性が知るように、パッケージソースリストを更新する必要があります。実行wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
。
最後に、利用可能なパッケージのキャッシュを更新してからJenkinsをインストールする必要があります。
node { stage("composer_install") { sh 'composer install' } stage("php_lint") { sh 'find . -name "*.php" -print0 | xargs -0 -n1 php -l' } stage("phpunit") { sh 'vendor/bin/phpunit' } stage("codeception") { sh 'vendor/bin/codecept run' } }
Jenkinsをインストールした後、ブラウザに
(または構成した仮想ホストURL)を開いた後、「Jenkinsのロック」というタイトルのページが表示されるはずです。
http://192.168.10.10:8080
homestead.app
仮想マシンで、次のコマンドを実行すると、乱数とアルファベット文字列がコンソールに印刷されます。ブラウザのテキストフィールドに文字列をコピーして貼り付け、[続行]を押します。
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
次の画面で、管理者ユーザーの詳細を入力し、「保存と完了」を押します。
ジェンキンスがインストールされ、構成されました!
最初のジョブを作成します
ジェンキンスをセットアップした後、次のことを行う新しいビルドジョブを作成します。
laravel/framework
phpunit 名前を入力し、
、「パイプライン」を選択し、[OK]を押します。
laravel
「保存」を押します。ジョブの概要ページにリダイレクトされ、数秒後にジョブが開始されます。起動しない場合は、左メニューの[今すぐビルド]リンクをクリックしてください。
sudo apt-get update && sudo apt-get install jenkins
パイプラインスクリプトで定義するときに、各フェーズが起動および終了すると、フェーズビューが更新されます。
ステージをクリックすると、そのステージのログ出力とともにオーバーレイが表示されます。これはデバッグに非常に役立ちます。または、左側のメニューのジョブをクリックして、コンソールをクリックすることもできます。
すべてのJenkinsのジョブには独自のワークスペースがあります。これは、ビルドゾーンで必要な一時ファイルを安全に作成できるゾーンです。このジョブのワークスペースの場所は、/var/lib/jenkins/workspace/laravel
にあります。デフォルトでは、Jenkinsはすべてのビルドのこのワークスペースをクリアしません。これを行う必要がある場合は、次のようにパイプラインスクリプトの先頭にフェーズを追加できます。
node { stage("composer_install") { sh 'composer install' } stage("php_lint") { sh 'find . -name "*.php" -print0 | xargs -0 -n1 php -l' } stage("phpunit") { sh 'vendor/bin/phpunit' } stage("codeception") { sh 'vendor/bin/codecept run' } }
Jenkinsのパイプラインを使用して、パイプラインをコードリポジトリのルートディレクトリにJenkinsfileスクリプトとして記述すると、発見されて実行されます。その概念は、既によく知られている可能性のあるA
または.circleci.yml
githubプロジェクトページで、右上隅の[フォーク]ボタンをクリックし、ポップアップウィンドウのプロファイルをクリックします。 laravel/framework
jenkinsfile
という名前の新しいブランチを作成し、新しいファイルを作成します(これをGitHubで直接実行できます。必要に応じてリポジトリをクローンする必要はありません)。
次のスクリプトを入力して、ファイルを送信します:
sudo apt-get update && sudo apt-get install jenkins
ジェンキンスに戻り、左側のメニューの[構成]ボタンをクリックします。パイプラインセクションまでスクロールして、パイプラインスクリプトからSCMに定義ドロップダウンメニューを更新します。
フォークしたリポジトリの詳細を入力して、[保存]をクリックします。
ジョブの概要画面で、左側のメニューで[今すぐビルド]をクリックします。ビルドを成功させる必要があります。
ほとんどのソフトウェアプロジェクトは、リポジトリ内の複数のブランチを使用して、プロジェクトのさまざまな段階を定義しています。たとえば、
各ブランチについては、多くのカスタム操作を実行することをお勧めします。たとえば、マスターからのコミットがある場合や、完全なユニットと統合テストを実行する場合はいつでも、他のすべてのブランチでは、ユニットテストのみがテストのみです。十分。
Jenkinsfileはグルーヴィーなプログラミング言語で書かれています。つまり、使用する完全なスクリプト言語があります。
この例では、IFステートメントを追加してブランチ名を確認した場合、JenkinsはIntegration_Testsフェーズを実行する必要があります。
の後、別の展開アーカイブを作成し、ブランチ名に基づいてコード展開サービスに登録するスイッチステートメントがあります(この例では、これがAmazon CodeDeployサービスでどのように機能するかを示しました)。
node { stage("composer_install") { sh 'composer install' } stage("php_lint") { sh 'find . -name "*.php" -print0 | xargs -0 -n1 php -l' } stage("phpunit") { sh 'vendor/bin/phpunit' } stage("codeception") { sh 'vendor/bin/codecept run' } }
多分岐パイプラインジョブもセットアップしやすいです。プロジェクトを作成すると、「マルチブランチパイプライン」をタイプとして選択します。
「ブランドインデックス」オプションが実行されるたびに(ジョブ内の「今すぐビルド」メニュー項目を置き換える)、ジェンキンスはリポジトリ内の各ブランチを再帰的に反復的に繰り返し、各ブランチに対して最近変更されたジェンキンスファイルで、そのブランチの新しいビルドが実行されます。
さらに一歩進んでください
Jenkinsのホーム画面で、左側のメニューのJenkinsの管理をクリックし、[プラグインマネージャー]をクリックします。
たとえば、
チームがSlackを使用している場合、Slack通知プラグインを有効にすることができます。メインジェンキンス設定画面( "jenkins" - > "configure system")で構成されており、パイプラインスクリプトの一部としてSlackメッセージを送信できます。Jenkinsがサーバー上で稼働している場合、コミットがリポジトリにプッシュされるたびに、ジョブを自動的に構築するように簡単に構成できます。
sudo apt-get update && sudo apt-get install jenkins
githubプロジェクトの場合、Githubプラグインがインストールされ、有効になっていることを確認し、GitHubリポジトリ設定で「Jenkins(Githubプラグイン)」サービスとの統合を有効にします。
Bitbucketの場合、これはもう少し複雑で、ブログに必要な手順を詳しく説明しています。
また、Jenkinsサーバーが適切に保護されていることを確認する必要があります。ユーザーをJenkinsで手動で作成したり、Oauthを使用してGithubまたはBitbucketに認証を委任したり、Jenkinsを組織のLDAPディレクトリに接続したりできます。繰り返しになりますが、ジェンキンスは常にSSLを介して実行する必要があり、ジェンキンスへのアクセスを簡単に傍受できないようにします。Jenkinsのインストールには、すべての有効なパイプライン関数を表示できる「コードスニペットジェネレーター」も付属しています(たとえば、SH、SlackSend、Deletedir()、およびSCMを既に使用しています)。ジョブの概要画面の左メニューにリンクを見つけることができます。
要約
ジェンキンスは、ソフトウェアの信頼性を改善し、あなたとチームを多くの時間節約するのに役立つ非常に強力なツールです。人間は何度も何度も繰り返しのタスクを実行するのが非常に悪いですが、コンピューターはこれに優れています。
5分以上実行されるテストによりチームが減速している場合は、テストをJenkinsにアンインストールします。
新しい制作バージョンやステージングバージョンが利用可能になったときに、deployment Archivesを自動的に生成する場合は、Jenkinsがこれを行うことができます。顧客が発見する前にコードの品質に注目し、回帰を発見したい場合は、ジェンキンスがお手伝いします。
以下に質問やコメントを残して、最も創造的なジェンキンスのパイプラインをお知らせください!
この記事が気に入っている場合は、次のものも有用であることがあります。
サイプレステスト:Webアプリケーションの実行ガイド
JenkinsはPhpunitでどのようにテストしますか?
PHPunitを使用したJenkins PHPアプリケーションの正しいワークフローには、通常、次の手順が含まれます。まず、バージョン制御システムのソースコードをチェックしてください。次に、PHPプロジェクトのComposerなどの依存関係をインストールします。次に、phpunitテストを実行します。次に、テスト結果が収集され、Jenkinsダッシュボードに表示されます。いずれかのテストが失敗した場合、ビルドは失敗したとマークされます。それ以外の場合、ビルドは成功したとマークされています。このワークフローは、継続的な統合と配信のためにJenkins Pipelineを使用して自動化できます。
phpunitおよびjunitの結果を解析できます。 PHPunitテストを実行した後、Junit XMLレポートを生成できます。 JenkinsのJunitプラグインは、このレポートを解析できます。 Jenkinsジョブの建設後の操作では、「Junitテスト結果の公開レポート」操作を追加して、Junit XMLレポートの場所を指定できます。その後、ジェンキンスはレポートを解析し、ダッシュボードに結果を表示します。これには、実行、合格、失敗、スキップされたテストの数、およびテスト期間と傾向が含まれます。
以上がJenkinsの再紹介:パイプラインによる自動テストの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。