ホームページ > バックエンド開発 > PHPチュートリアル > Jenkinsの再紹介:パイプラインによる自動テスト

Jenkinsの再紹介:パイプラインによる自動テスト

Christopher Nolan
リリース: 2025-02-10 15:01:09
オリジナル
730 人が閲覧しました

Re-Introducing Jenkins: Automated Testing with Pipelines

コアポイント

  • Jenkinsは、複雑なアプリケーションの自動テストをサポートし、展開前にエラーを発見および解決することでリリースプロセスを高速化する人気のあるオープンソースビルドサーバーです。
  • Jenkins Pipeline(バージョン2.0で導入)は、テストと構築コードのためのグルーヴィーなスクリプト言語で記述されたカスタマイズ可能な手順のセットです。 1つのステップが失敗した場合、ビルド全体が失敗し、ジェンキンスが実行を停止します。
  • ジェンキンスは、Laravel Homesteadを使用して簡単にインストールして構成できます。セットアップが完了したら、新しいビルドジョブを作成して、プロジェクトの最新バージョンをチェックし、依存関係をインストールし、ユニットテストを実行できます。
  • Jenkins Pipelineは、コードベースのルートディレクトリにJenkinsfileスクリプトとして記述でき、それによりバージョン制御を実装できます。また、マルチブランチパイプラインジョブを設定して、プロジェクトのさまざまなブランチでさまざまな操作を実行することもできます。
  • Jenkinsは、プラグインのテストやクラウドサービスとの統合など、機能を拡張するようにインストールおよび構成できるプラグインの幅広いエコシステムをサポートしています。コミットがリポジトリにプッシュされるたびに自動的に構築するように構成でき、正しく保護する必要があります。

アプリケーションがより複雑になるにつれて、作曲家の依存関係、Webpackビルドスクリプト、およびすべての環境変数を含む - これらすべての異なる複雑さをテストすることが遅くなり、特にすべてのテストですべてのテストが削除され、再構成が必要な場合に面倒になります。環境全体。同様に、コードスタイルは時間の経過とともに歪む可能性があり、生産に使用できる展開アーカイブを作成するには、特定の一連のステップが必要です。

アプリケーションをテストするために、次の手順が必要です。

    実行
  1. 依存関係がインストールされていることを確認するにはcomposer install
  2. コードベースの各PHPファイルで
  3. を実行して、構文エラーを確認しますphp -l
  4. 単体テストのためにphpunitを実行
  5. 機能テストのためのコード受容を実行

Re-Introducing Jenkins: Automated Testing with Pipelines

これらの手順のいずれかが失敗した場合、エラーが解決するまで、ソフトウェアは展開に適さないとみなされる必要があります。ソフトウェアがより複雑になり、テストの数が時間とともに増加するにつれて、完全なテストスイートを実行するのに数分かかる場合があります。これにより、開発者が遅くなり、リリースプロセスが遅くなります。

この問題を克服するために、ビルドサーバーを開発ワークフローに導入できます。ビルドサーバーは、一連のステップを繰り返し実行できるソフトウェアを実行し、そのうちの1つが失敗した場合、ビルドサーバーは問題を通知できます。オープンソースプロジェクトに参加している場合は、TravisciやCircleciなどのサーバーを構築するための実用的なアプリケーションを見たことがあるかもしれません。たとえば、Laravelプロジェクトの各プル要求はTravisciによってテストされ、変更がテストを破らないようにし、Styleciがコードの変更がプロジェクトコードスタイルと一致するようにします。

Re-Introducing Jenkins: Automated Testing with Pipelines

ジェンキンスは、今年バージョン2.0をリリースした人気のあるオープンソースビルドサーバーです。この新しいリリースの主な機能の1つは、(以前はオプションの)パイプラインプラグインをコア機能として含めることです。

パイプラインは、コードをテストおよびビルドするために順次実行できる完全にカスタマイズ可能なステップのセットです。パイプラインはグルーヴィーなスクリプト言語で書かれており、非常にシンプルな構文を備えており、簡単に開始できます。たとえば、前述のテストステップをパイプラインとして説明したい場合は、次のように見えるかもしれません。

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はシングルサーバーモードまたはマルチノード設定で実行できます)。

ブロックには複数の段階があり、各ステージは特定の操作を実行します。 Jenkinsは各ステージを順番に実行し、ステージが失敗した場合、ビルド全体が失敗し、Jenkinsが実行を停止します。 node この簡単な例から、他のテストの追加フェーズを簡単に追加して、Jenkinsに成功したビルドスラック通知を送信するように指示することができます。 node

jenkins

をインストールします

Jenkinsはインストールが非常に簡単です。このチュートリアルでは、Laravel Homesteadを使用して、Jenkinsをローカルで使用できるように、一貫した仮想環境を提供します。

最初のステップは、Laravel Homesteadをインストールすることです。これが便利なガイドです。仮想マシンを起動して実行する必要があります。

ファイル内のサイトを構成する必要はありません。

起きてホームステッドの仮想マシンを実行したら、homestead.yamlを使用してログインします。

Homesteadには、必要なすべての依存関係、つまりGit、PHP、およびComposerが付属しているため、Jenkins自体をインストールするだけです。 Jenkins Debianパッケージガイドに従って、次の手順を実行する必要があります。 vagrant ssh

run

。このコマンドは、このリポジトリの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のインストールには、インストールする必要がある多くの依存関係があるため、Jenkinsのインストールには約5分かかります。

Jenkinsをインストールした後、ブラウザに

(または構成した仮想ホストURL)を開いた後、「Jenkinsのロック」というタイトルのページが表示されるはずです。

http://192.168.10.10:8080 homestead.app

仮想マシンで、次のコマンドを実行すると、乱数とアルファベット文字列がコンソールに印刷されます。ブラウザのテキストフィールドに文字列をコピーして貼り付け、[続行]を押します。 Re-Introducing Jenkins: Automated Testing with Pipelines

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

2つのオプションが表示されます - 「提案されたプラグインのインストール」を選択し、プラグインがダウンロードされてインストールされるまで数分待ちます。

Re-Introducing Jenkins: Automated Testing with Pipelines

次の画面で、管理者ユーザーの詳細を入力し、「保存と完了」を押します。

Re-Introducing Jenkins: Automated Testing with Pipelines

ジェンキンスがインストールされ、構成されました!

Re-Introducing Jenkins: Automated Testing with Pipelines 最初のジョブを作成します

ジェンキンスをセットアップした後、次のことを行う新しいビルドジョブを作成します。

最新バージョンの

をチェックしてください
    コンポーザー依存関係のインストール
  1. laravel/frameworkphpunit
  2. を実行します
  3. [新しいジョブリンクの作成(または新しいプロジェクトリンクの作成)をクリックします。これらはすべて同じことをします)。

名前を入力し、

、「パイプライン」を選択し、[OK]を押します。 Re-Introducing Jenkins: Automated Testing with Pipelines

ジョブの構成エディターが表示されます。パイプラインセクションまでスクロールして、次のスクリプトを入力してください。

laravel「保存」を押します。ジョブの概要ページにリダイレクトされ、数秒後にジョブが開始されます。起動しない場合は、左メニューの[今すぐビルド]リンクをクリックしてください。

sudo apt-get update && sudo apt-get install jenkins
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

パイプラインスクリプトで定義するときに、各フェーズが起動および終了すると、フェーズビューが更新されます。

ステージをクリックすると、そのステージのログ出力とともにオーバーレイが表示されます。これはデバッグに非常に役立ちます。または、左側のメニューのジョブをクリックして、コンソールをクリックすることもできます。 Re-Introducing Jenkins: Automated Testing with Pipelines

すべての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'
    }
}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
jenkinsfile

最初のジョブでは、ジョブ設定インターフェイスでパイプラインスクリプトを編集しました。ただし、このスクリプトをコードでバージョンコントロールに保存する方が便利です。

Jenkinsのパイプラインを使用して、パイプラインをコードリポジトリのルートディレクトリにJenkinsfileスクリプトとして記述すると、発見されて実行されます。その概念は、既によく知られている可能性のあるA

または.travis.ymlファイルに似ています。 .circleci.yml

githubプロジェクトページで、右上隅の[フォーク]ボタンをクリックし、ポップアップウィンドウのプロファイルをクリックします。 laravel/framework

jenkinsfileという名前の新しいブランチを作成し、新しいファイルを作成します(これをGitHubで直接実行できます。必要に応じてリポジトリをクローンする必要はありません)。

Re-Introducing Jenkins: Automated Testing with Pipelines

次のスクリプトを入力して、ファイルを送信します:

sudo apt-get update && sudo apt-get install jenkins
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

ジェンキンスに戻り、左側のメニューの[構成]ボタンをクリックします。パイプラインセクションまでスクロールして、パイプラインスクリプトからSCMに定義ドロップダウンメニューを更新します。

Re-Introducing Jenkins: Automated Testing with Pipelines

フォークしたリポジトリの詳細を入力して、[保存]をクリックします。

Re-Introducing Jenkins: Automated Testing with Pipelines

ジョブの概要画面で、左側のメニューで[今すぐビルド]をクリックします。ビルドを成功させる必要があります。

マルチブランチパイプラインプロジェクト

ほとんどのソフトウェアプロジェクトは、リポジトリ内の複数のブランチを使用して、プロジェクトのさまざまな段階を定義しています。たとえば、

  • マスターブランチは、現在の生産バージョン
  • を表します
  • 開発ブランチは、現在の一時的なバージョンを表します
  • 機能/新しいプロファイルページブランチは、進行中の関数を表す場合があります

各ブランチについては、多くのカスタム操作を実行することをお勧めします。たとえば、マスターからのコミットがある場合や、完全なユニットと統合テストを実行する場合はいつでも、他のすべてのブランチでは、ユニットテストのみがテストのみです。十分。

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'
    }
}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

多分岐パイプラインジョブもセットアップしやすいです。プロジェクトを作成すると、「マルチブランチパイプライン」をタイプとして選択します。

Re-Introducing Jenkins: Automated Testing with Pipelines

次に、構成画面で、パイプライン定義ドロップダウンメニューをSCMのパイプラインスクリプトに設定し、リポジトリの詳細を入力します。

「ブランドインデックス」オプションが実行されるたびに(ジョブ内の「今すぐビルド」メニュー項目を置き換える)、ジェンキンスはリポジトリ内の各ブランチを再帰的に反復的に繰り返し、各ブランチに対して最近変更されたジェンキンスファイルで、そのブランチの新しいビルドが実行されます。

さらに一歩進んでください

ジェンキンスの人気は、主にその広範なプラグインエコシステムによるものです。

Jenkinsのホーム画面で、左側のメニューのJenkinsの管理をクリックし、[プラグインマネージャー]をクリックします。

Re-Introducing Jenkins: Automated Testing with Pipelines

プラグインからクラウドサービスとの統合まで、数十のプラグインをインストールして構成できます。

たとえば、

チームが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アプリケーションの実行ガイド
    Unittestおよびpytest
  • を使用して、Pythonユニットテストを導入します
  • jest
  • を使用して反応コンポーネントをテストする方法
  • 操り人形師でエンドツーエンドのテストを学びます
  • 3つのハンズフリーの連続テスト方法
  • 自動テストにパイプラインを使用しているジェンキンスについてのよくある質問
  • 自動テストにJenkinsを使用することの利点は何ですか?

ジェンキンスは、自動テストに多くの利点を提供する人気のあるオープンソースツールです。まず、継続的な統合と継続的配信(CI/CD)を提供し、開発者がプロ​​ジェクトに変化をより頻繁に統合できるようにします。これにより、潜在的な問題が早期に検出され、修理時間が短縮されます。第二に、Jenkinsはさまざまなプラグインをサポートしており、さまざまなプロジェクトニーズに非常にカスタマイズ可能で適応可能になります。第三に、リアルタイムのテスト結果と詳細なレポートを提供します。これは、問題を迅速に特定して解決するのに役立ちます。最後に、JenkinsはPipelineをサポートしています。これは、パイプラインドメイン固有言語(DSL)を介してパイプラインの「As Code」を簡単に複雑にすることを可能にする一連のツールをサポートしています。

PHPテストのためにジェンキンスをセットアップする方法は?

PHPテストのためにJenkinsのセットアップには、いくつかのステップが含まれます。まず、サーバーにJenkinsをインストールする必要があります。インストール後、PHPプラグイン、PHPunitプラグインなど、PHPテストに必要なプラグインをインストールできます。プラグインをインストールした後、新しいJenkinsジョブを作成し、PHPプロジェクト用に構成することができます。これには、ソースコード管理のセットアップ、ビルディングトリガー、および構築ステップが含まれます。ビルドステップでは、PHPテストを実行するコマンドを指定できます。構成が完了すると、ジョブを実行でき、ジェンキンスはテストを実行し、詳細なレポートを提供します。

JenkinsはPhpunitでどのようにテストしますか?

ジェンキンスは、ジェンキンスのジョブでphpunitテストを実行することにより、phpunitで動作します。 PHPunitコマンドは、Jenkinsジョブのビルドステップで指定できます。ジョブが実行されると、ジェンキンスはPHPunitテストを実行し、結果をキャプチャします。結果はJenkinsダッシュボードに表示され、テスト実行に関する詳細なレポートが提供されます。これには、実行、合格、失敗、スキップされたテストの数、およびコードカバレッジが含まれます。

PHPunitを使用したJenkins PHPアプリケーションの正しいワークフローは何ですか?

PHPunitを使用したJenkins PHPアプリケーションの正しいワークフローには、通常、次の手順が含まれます。まず、バージョン制御システムのソースコードをチェックしてください。次に、PHPプロジェクトのComposerなどの依存関係をインストールします。次に、phpunitテストを実行します。次に、テスト結果が収集され、Jenkinsダッシュボードに表示されます。いずれかのテストが失敗した場合、ビルドは失敗したとマークされます。それ以外の場合、ビルドは成功したとマークされています。このワークフローは、継続的な統合と配信のためにJenkins Pipelineを使用して自動化できます。

ジェンキンスでphpunitとjunitの結果を解析するにはどうすればよいですか?

Junitプラグインを使用して、Jenkinsでは、

phpunitおよびjunitの結果を解析できます。 PHPunitテストを実行した後、Junit XMLレポートを生成できます。 JenkinsのJunitプラグインは、このレポートを解析できます。 Jenkinsジョブの建設後の操作では、「Junitテスト結果の公開レポート」操作を追加して、Junit XMLレポートの場所を指定できます。その後、ジェンキンスはレポートを解析し、ダッシュボードに結果を表示します。これには、実行、合格、失敗、スキップされたテストの数、およびテスト期間と傾向が含まれます。

以上がJenkinsの再紹介:パイプラインによる自動テストの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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