正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

CI/CDジョブログ

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

ジョブログには、CI/CDジョブの完全な実行履歴が表示されます。

ジョブログの表示

ジョブログを表示するには、次の手順に従います:

  1. ジョブログを表示するプロジェクトを選択します。
  2. 左側のサイドバーで、CI/CD > パイプラインを選択します。
  3. 検査するパイプラインを選択します。
  4. パイプラインビューのジョブリストで、ジョブを選択してジョブログページを表示します。

ジョブとそのログ出力に関する詳細情報を表示するには、ジョブログページをスクロールします。

全画面モードでジョブログを表示

全画面表示するをクリックすると、ジョブログの内容を全画面モードで表示できます。

全画面表示モードを使用するには、Webブラウザもそれをサポートしている必要があります。Webブラウザが全画面表示モードをサポートしていない場合、そのオプションは使用できません。

ジョブログセクションを折りたたむ、展開する

ジョブログは、折りたたみまたは展開可能なセクションに分割されています。各セクションには期間が表示されます。

次の例では:

  • 3つのセクションが折りたたまれ、展開できます。
  • 3つのセクションが展開され、折りたたむことができます。

展開可能および折りたたみ可能なセクションを含むジョブログ

カスタム折りたたみ可能なセクション

GitLabが折りたたみ可能なセクションの区切りに使用する特別なコードを手動で出力することにより、ジョブログに折りたたみ可能なセクションを作成できます:

  • セクション開始マーカー:\e[0Ksection_start:UNIX_TIMESTAMP:SECTION_NAME\r\e[0K + TEXT_OF_SECTION_HEADER
  • セクション終了マーカー:\e[0Ksection_end:UNIX_TIMESTAMP:SECTION_NAME\r\e[0K

これらのコードをCI設定のスクリプトセクションに追加する必要があります。たとえば、echoを使用する場合は次のようになります。

job1:
  script:
    - echo -e "\e[0Ksection_start:`date +%s`:my_first_section\r\e[0KHeader of the 1st collapsible section"
    - echo 'this line should be hidden when collapsed'
    - echo -e "\e[0Ksection_end:`date +%s`:my_first_section\r\e[0K"

エスケープ構文は、Runnerが使用するシェルによって異なる場合があります。たとえば、Zshを使用している場合、特殊文字を\\eまたは\\rでエスケープする必要がある場合があります。

上記の例では、次のようになります:

  • date +%s: Unixタイムスタンプを生成するコマンド(たとえば、1560896352)。
  • my_first_section: セクションに付けられた名前。名前は、文字、数字、および_.、または-文字のみで構成できます。
  • \r\e[0K: レンダリングされた(色付きの)ジョブログにセクションマーカーが表示されないようにするエスケープシーケンス。これらはrawジョブログを表示するときに表示されます。ジョブログの右上隅にある完全なrawを表示 ( doc-text ) を選択してアクセスします。
    • \r:キャリッジリターン(カーソルを行の先頭に戻します)。
    • \e[0K: カーソル位置から行の末尾までをクリアするANSIエスケープコード。(\e[Kだけでは機能しません。0を含める必要があります)。

サンプルrawジョブログ:

\e[0Ksection_start:1560896352:my_first_section\r\e[0KHeader of the 1st collapsible section
this line should be hidden when collapsed
\e[0Ksection_end:1560896353:my_first_section\r\e[0K

サンプルジョブコンソールログ:

コンテンツが非表示の折りたたみセクションを示すジョブログ

スクリプトを使用して、折りたたみ可能なセクションの表示を改善する

ジョブの出力からセクションマーカーを作成するechoステートメントを削除するには、ジョブの内容をスクリプトファイルに移動して、ジョブから実行することができます:

  1. セクションヘッダーを処理できるスクリプトを作成します。例:

    # function for starting the section
    function section_start () {
      local section_title="${1}"
      local section_description="${2:-$section_title}"
    
      echo -e "section_start:`date +%s`:${section_title}[collapsed=true]\r\e[0K${section_description}"
    }
    
    # Function for ending the section
    function section_end () {
      local section_title="${1}"
    
      echo -e "section_end:`date +%s`:${section_title}\r\e[0K"
    }
    
    # Create sections
    section_start "my_first_section" "Header of the 1st collapsible section"
    
    echo "this line should be hidden when collapsed"
    
    section_end "my_first_section"
    
    # Repeat as required
  2. スクリプトを.gitlab-ci.ymlファイルに追加します:

    job:
      script:
        - source script.sh

セクションを事前に折りたたむ

セクションの開始にcollapsedオプションを追加することにより、ジョブログが折りたたみ可能なセクションを自動的に折りたたむようにすることができます。セクション名の後、\rの前に[collapsed=true]を追加します。セクション終了マーカーは変更されません:

  • [collapsed=true]付きのセクション開始マーカー:\e[0Ksection_start:UNIX_TIMESTAMP:SECTION_NAME[collapsed=true]\r\e[0K + TEXT_OF_SECTION_HEADER
  • セクション終了マーカー(変更なし):\e[0Ksection_end:UNIX_TIMESTAMP:SECTION_NAME\r\e[0K

更新されたセクション開始テキストをCI設定に追加します。たとえば、echoを使用する場合は次のようになります。

job1:
  script:
    - echo -e "\e[0Ksection_start:`date +%s`:my_first_section[collapsed=true]\r\e[0KHeader of the 1st collapsible section"
    - echo 'this line should be hidden automatically after loading the job log'
    - echo -e "\e[0Ksection_end:`date +%s`:my_first_section\r\e[0K"

ジョブログを削除

ジョブログを削除すると、ジョブ全体を消去します。

詳細については、ジョブログを削除を参照してください。

タイムスタンプ

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

デフォルトでは、ジョブログには各行のISO 8601形式のタイムスタンプが含まれています。タイムスタンプを使用して、パフォーマンスの問題のトラブルシューティング、ボトルネックの特定、特定のビルドステップにかかる時間の測定を行います。

タイムスタンプを有効にすると、ジョブログで使用するストレージ容量が約10%増加します。

以下は、タイムスタンプ付きのジョブログの例を示しています:

各行にUTCタイムスタンプが含まれるジョブログ

ジョブログのタイムスタンプを制御

前提条件:

  • GitLab Runner 18.7以降。

ジョブログにタイムスタンプを表示するかどうかを制御するには、FF_TIMESTAMPS CI/CD変数を使用します:

  • タイムスタンプを無効にするには、falseに設定します
  • タイムスタンプを明示的に有効にするには、trueに設定します

例:

variables:
  FF_TIMESTAMPS: false  # Disables timestamps

job:
  script:
    - echo "This job's log behavior depends on FF_TIMESTAMPS value"

詳細については、.gitlab-ci.ymlファイルでCI/CD変数を定義するを参照してください。

トラブルシューティング

ジョブログの更新が遅い

実行中のジョブのジョブログページにアクセスすると、ログが更新されるまでに最大60秒の遅延が発生する可能性があります。デフォルトの更新時間は60秒ですが、ログがUIで1回表示された後は、ログの更新が3秒ごとに実行されるはずです。

エラー:GitLab 18.0以降のThis job does not have a trace

GitLab Self-Managedインスタンスを18.0以降に移行すると、This job does not have a traceエラーが表示される場合があります。これは、次の両方を含むインスタンスでの移行の失敗が原因である可能性があります:

  • オブジェクトストレージが有効
  • 削除されたフィーチャフラグci_enable_live_traceで以前に有効にされたインクリメンタルロギング。このフィーチャフラグは、GitLab Environment ToolkitまたはHelm Chartデプロイでデフォルトで有効になっていますが、手動で有効にすることもできます。

影響を受けるジョブのジョブログを表示する機能を復元するには、増分ロギングを再度有効にします