CMake: CTEST_SUBMIT_URL の代替手段 - カスタムスクリプト、CI ツール、手動アップロード


CTEST_SUBMIT_URL は、CMake 3.14 以降で使用できます。

使い方

CTEST_SUBMIT_URL 変数は、ctest(1) コマンドラインツールまたは CMakeLists.txt ファイル内で設定できます。

例:ctest(1) コマンドラインツール

ctest -D CTEST_SUBMIT_URL="https://my-ctest-dashboard.com"

例:CMakeLists.txt ファイル

set(CTEST_SUBMIT_URL "https://my-ctest-dashboard.com")

CTEST_SUBMIT_URL 変数が設定されていない場合、CTest ダッシュボードへの送信は行われません。

CTEST_SUBMIT_URL 変数が設定されている場合、CTest ダッシュボードへの送信は、以下の順序で行われます。

  1. テスト結果ファイル (ctest_test_results.xml) が作成されます。
  2. テスト結果ファイルが CTEST_SUBMIT_URL で指定された URL に送信されます。

CTEST_SUBMIT_URL 変数を使用する際には、以下の点に注意する必要があります。

  • CTEST_SUBMIT_URL 変数を使用するには、CTest ダッシュボードが有効になっている必要があります。
  • CTEST_SUBMIT_URL 変数が設定されている場合、CTest ダッシュボードへの送信には時間がかかる場合があります。

CTEST_SUBMIT_URL 変数は、テスト結果を CTest ダッシュボードに送信して共有したい場合に役立ちます。

CTEST_SUBMIT_URL 変数は、以下の目的で使用できます。

  • テスト結果を自動化されたワークフローに統合する
  • テスト結果を継続的に監視する
  • テスト結果をチームメンバーと共有する

CTEST_SUBMIT_URL 変数を使用することで、テスト結果をより効果的に活用することができます。



ctest -D CTEST_SUBMIT_URL="https://my-ctest-dashboard.com"

例 2:テスト結果を CTest ダッシュボードに送信し、XML ファイルを生成する

この例では、CMakeLists.txt ファイルを使用して、テスト結果を CTest ダッシュボードに送信し、XML ファイルを生成します。

cmake_minimum_required(VERSION 3.14)

project(MyProject)

add_executable(my_test my_test.cpp)

ctest_test(my_test
  COMMAND ${CMAKE_EXE} -P <SOURCE_DIR>/my_test.cmake
)

set(CTEST_SUBMIT_URL "https://my-ctest-dashboard.com")

例 3:テスト結果を CTest ダッシュボードに送信し、カスタム送信スクリプトを使用する

この例では、CMakeLists.txt ファイルを使用して、テスト結果を CTest ダッシュボードに送信し、カスタム送信スクリプトを使用します。

cmake_minimum_required(VERSION 3.14)

project(MyProject)

add_executable(my_test my_test.cpp)

ctest_test(my_test
  COMMAND ${CMAKE_EXE} -P <SOURCE_DIR>/my_test.cmake
)

set(CTEST_SUBMIT_URL "https://my-ctest-dashboard.com")
set(CTEST_SUBMIT_SCRIPT "<SOURCE_DIR>/my_submit_script.sh")

上記の例で使用されている変数とコマンドの説明

  • CTEST_SUBMIT_SCRIPT:テスト結果を送信するために使用するカスタムスクリプトのパスを指定します。
  • COMMANDctest_test コマンドを実行する際に使用するコマンドを指定します。
  • ctest_test:テストを実行するための CMake コマンドです。
  • CTEST_SUBMIT_URL:テスト結果を送信する URL を指定します。

注意事項

  • CTest ダッシュボードを使用するには、CTest ダッシュボードが有効になっている必要があります。

CTEST_SUBMIT_URL 変数は、テスト結果を CTest ダッシュボードに送信して共有したい場合に役立ちます。



カスタムスクリプトを使用する

CTEST_SUBMIT_URL 変数の代わりに、テスト結果を送信するためのカスタムスクリプトを作成できます。この方法は、テスト結果の処理方法をより細かく制御したい場合に役立ちます。

例:カスタムスクリプトを使用する

cmake_minimum_required(VERSION 3.14)

project(MyProject)

add_executable(my_test my_test.cpp)

ctest_test(my_test
  COMMAND ${CMAKE_EXE} -P <SOURCE_DIR>/my_test.cmake
)

set(CTEST_SUBMIT_SCRIPT "<SOURCE_DIR>/my_submit_script.sh")

Jenkins などの CI ツールを使用する

Jenkins などの CI ツールを使用すると、テスト結果を CTest ダッシュボードに自動的に送信できます。この方法は、継続的インテグレーションと継続的デリバリー (CI/CD) パイプラインの一部としてテストを実行したい場合に役立ちます。

例:Jenkins を使用する

  1. Jenkins サーバーに CTest ダッシュボードプラグインをインストールします。
  2. Jenkins ジョブを作成し、ctest(1) コマンドを実行するビルドステップを追加します。
  3. ビルドステップで、CTEST_SUBMIT_URL 変数を Jenkins サーバーの CTest ダッシュボードプラグインの URL に設定します。

手動でテスト結果をアップロードする

CTEST_SUBMIT_URL 変数やカスタムスクリプトを使用せずに、テスト結果を手動で CTest ダッシュボードにアップロードすることもできます。この方法は、テスト結果を送信する簡単な方法ですが、時間がかかります。

例:手動でテスト結果をアップロードする

  1. テストを実行します。
  2. テスト結果ファイル (ctest_test_results.xml) を CTest ダッシュボードにアップロードします。

どの代替方法が最適かは、プロジェクトの要件によって異なります。

CTEST_SUBMIT_URL 変数は、テスト結果を送信する最も簡単な方法ですが、カスタムスクリプト、CI ツール、手動アップロードなどの代替方法も検討する必要があります。