Jenkins は主要なオープン ソースの自動化サーバーであり、プロジェクトのビルド、デプロイ、自動化をサポートする多数のプラグインを提供しています。Jenkins は単に CI サーバーとして使用することも、継続的デリバリーのハブとすることもでき、Web インターフェイスを使用したセットアップと設定が容易です。
Jenkins のよくある使用方法は、コードの変更がサブミットされるたびにアプリケーションのビルドとテストを行うというものです。TestRail の利点を最大限に活用し、手動のものも自動化されたものも含めてすべてのテスト ケースおよびテスト結果を管理するため、Jenkins から直接 TestRail に自動テストの結果を送信できます。このセクションでは、Jenkins のスクリプト パイプライン ジョブ と TestRail CLI を利用して簡単にこのタスクを達成する方法を説明します。
TestRail CLI は、テスト自動化フレームワークによって、互換性のある JUnit レポートが生成されることを必要とします。
前提条件
このマニュアルの手順は、Python 3.10 がインストールされた Jenkins エージェントを使用し、python3.10
というエイリアスを使用して Python を呼び出せることを前提としています。すでに適切に設定された Jenkins インスタンスがある場合は、次のセクションに進むことができます。
手順に従ってすばやく Jenkins インスタンスをセットアップしたい場合は、次の Dockerfile (公式の Jenkins Docker イメージを基にしています) をビルドし、以下の手順に従って実行できます。
-
- 次の内容を Dockerfile という名前のファイルに保存します。
FROM jenkins/jenkins:lts USER root RUN apt-get update RUN apt-get install -y \ build-essential \ zlib1g-dev \ libncurses5-dev \ libgdbm-dev \ libnss3-dev \ libssl-dev \ libreadline-dev \ libffi-dev \ libsqlite3-dev \ wget \ libbz2-dev RUN wget https://www.python.org/ftp/python/3.10.0/Python-3.10.0.tgz && \ tar -xvf Python-3.10.0.tgz && \ cd Python-3.10.0 && \ ./configure --enable-optimizations && \ make -j 2 && \ make altinstall && \ python3.10 --version USER jenkins
- ファイルを保存したディレクトリでコマンド ラインを開きます。
- 次のコマンドを実行します。
docker build -t jenkins:local . docker run -p 8080:8080 -p 50000:50000 jenkins:local
- コンソールのキーをコピーし、ブラウザーで http://localhost:8080 を開きます。
- インストール ウィザードに従います。
- 次の内容を Dockerfile という名前のファイルに保存します。
新規 Jenkins パイプライン ジョブの作成
パイプラインの設定
[Pipeline] セクションのスクロール ダウンし、下記のスクリプトを追加します。
Jenkins スクリプト パイプラインはステージで構成され、ステージ内には実行対象のコマンドを含むステップがあります。次に、パイプライン スクリプトをステージごとに見ていきますが、Jenkins パイプランの基本になじみがない場合、Jenkins パイプライン構文のドキュメントで詳しく学ぶことができます。
pipeline { agent any stages { stage('Checkout') { steps { git url: 'https://github.com/gurock/automation-frameworks-integration.git', branch: 'main' } } stage('Setup virtual environment') { steps { sh """ # Go to test project folder cd samples/python/pytest # Setup virtual environment python3.10 -m venv ./venv """ } } stage('Execute automated tests') { steps { sh """ # Go to test project folder and activate virtual environment cd samples/python/pytest . ./venv/bin/activate # Install and run test project pip install -r requirements.txt pytest --junitxml "reports/junit-report.xml" "./tests" """ } post { always { junit '**/reports/junit-report.xml' archiveArtifacts 'reports/*' sh """ # Go to test project folder and activate virtual environment cd samples/python/pytest . ./venv/bin/activate # Install TestRail CLI and upload test results pip install trcli trcli -y \ -h "https://YOUR_INSTANCE.testrail.io/" \ -u "USER_EMAIL" \ -p "USER_PASSWORD" \ --project "PROJECT" \ parse_junit \ --title "Automated Test Run" \ --run-description "CI Build: ${BUILD_URL}" \ -f "reports/junit-report.xml" """ } } } } }
-
- stage(‘Checkout’)
- リポジトリ URL およびチェックアウト対象のブランチを指定した
git
コマンドを使用してリポジトリからコードをチェックアウトします。
- リポジトリ URL およびチェックアウト対象のブランチを指定した
- stage(‘Setup virtual environment’)
- プロジェクト専用の Python 仮想環境を作成します。仮想環境を作成するのは、確実に一貫性のあるベースラインから始めるのに良いプラクティスです。スクリプトの次のステージでは、仮想環境をアクティベートし、シェルがグローバルな Python ではなく仮想環境を使用できるようにします。
- stage(‘Execute automated tests’)
- このステージの最初のステップは、仮想環境のアクティベートであり、Pytest テスト プロジェクトを直接インストールして実行できます。次に、pytest コマンドを使用してテスト プロジェクトを実行します。–junitxml “reports/junit-report.xml” オプションに注目してください。これは、TestRail CLI で使用可能な JUnit 形式のレポートを生成するよう Pytest に指示します。詳細な説明は Pytest との統合マニュアルにあります。このステージには、
post { }
という内部ブロックがあり、その中にalways { }
ブロックがあります。このブロックには、steps { }
結果にかかわらず、ブロックが完了した後に常に実行するコマンドがあります。これは、テスト結果を TestRail に送信するのに最適な状況です。結果をアップロードするには、もう一度仮想環境をアクティベートし、pip
を使用して TestRail CLI をインストールし、TestRail インスタンスの情報を指定して実行します。-h
、-u
、-p
および--project
のプレースホルダーを置き換える必要があります。もう 1 つ、このスクリプトでのtrcli
の呼び出しで、ささいですが役に立つ情報は、--run-description "CI Build: ${BUILD_URL}"
オプションです。このオプションは、現在の Jenkins ビルド URL を TestRail のテスト ランに追加し、簡単にビルドに戻れるようにします。最後に、推奨事項として、パスワードや API トークンをスクリプトで直接使用せず、Jenkins credentials manager を使用します。
- このステージの最初のステップは、仮想環境のアクティベートであり、Pytest テスト プロジェクトを直接インストールして実行できます。次に、pytest コマンドを使用してテスト プロジェクトを実行します。–junitxml “reports/junit-report.xml” オプションに注目してください。これは、TestRail CLI で使用可能な JUnit 形式のレポートを生成するよう Pytest に指示します。詳細な説明は Pytest との統合マニュアルにあります。このステージには、
- stage(‘Checkout’)
ジョブの実行
-
- 上で設定したジョブを保存したら、ジョブを実行します。それには、左パネルの [Build Now] アクションをクリックします。
- ジョブが完了したら、ビルドの [Pipeline Steps] ページのログをざっと見て、スクリプトが期待どおり実行されたことを確認できます。テスト実行が問題なく完了し、TestRail CLI が適切に設定されており、指定された場所でテスト結果の JUnit レポートを発見できた場合、TestRail CLI がテスト結果を TestRail インスタンスにサブミットしたことがログで確認できるはずです。
- TestRail CLI を実行するステップの [Console Output ] ボタンをクリックすると、実行に関するより詳しい情報を確認できます。コンソール出力には、TestRail CLI の出力が表示されます。これには、TestRail で作成されたテスト ランへのリンクが含まれており、非常に便利です。
- 最後に、リンクをクリックすると、TestRail インスタンスでテスト ランが開きます。テスト ランは Automated Test Run という名前で、テスト結果とともに、テスト ランを生成した Jenkins ジョブ ビルドへのリンクが含まれます。
次のステップ
テスト結果が TestRail に集約されたので、失敗したテストのエラー メッセージも含めて自動テスト実行の結果を確認できるだけでなく、手動テストと自動テストをレポート上で集約し、アプリケーションに関する完全なテスト カバレッジを表示したり、テスト自動化プロセスを追跡したりすることも可能です。また、手動テストの結果だけでなく、自動テストの結果から任意の課題トラッカーに直接バグをレポートすることもできます。
TestRail のレポート機能を活用する方法については、TestRail のレポートおよびテスト メトリクスの動画を参照してください。