正式なドキュメントは英語版であり、この日本語訳は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を表示 doc-text )を選択して、ジョブログの右上隅にある、アクセスされたrawジョブログを表示するときに表示されます。
    • \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

CI/CDジョブログの各行に、ISO 8601形式でタイムスタンプを生成できます。ジョブログのタイムスタンプを使用すると、ジョブ内の特定のセクションの期間を特定できます。デフォルトでは、ジョブログには各ログ行のタイムスタンプは含まれません。

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

前提要件:

  • GitLab Runner 17.0以降を使用している必要があります。

ジョブログでタイムスタンプを有効にするには、FF_TIMESTAMPS CI/CD変数をパイプラインに追加し、trueに設定します。

たとえば、変数を.gitlab-ci.ymlファイルに追加します:

variables:
  FF_TIMESTAMPS: true

job:
  script:
    - echo "This job's log has ISO 8601 timestamps!"

FF_TIMESTAMPSが有効になっているログ出力の例を次に示します:

各行のUTCタイムスタンプを表示するジョブログ

この機能に関するフィードバックを提供するには、issue 463391にコメントを残してください。

トラブルシューティング

ジョブログの更新が遅い

実行中のジョブのジョブログページにアクセスすると、ログが更新されるまでに最大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デプロイメントではデフォルトで有効になっていますが、手動で有効にすることもできます。

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