メインコンテンツまでスキップ

ハングしたStepsの検出と中止

一定時間ログ出力がないハングしたStepsを、No Output Timeout機能を使って検出し、中止できます。この機能を使うと、設定可能なタイムアウト期間の経過後にハングしたビルドを自動的に中止し、クレジットを節約するとともに、Bitriseがハングしたビルドに関するデータを収集できるようにします。

No Output Timeout機能は、次の2つの方法で使用できます。

No Output Timeout機能は、M1ハングしたビルドの問題ガイドで説明されている機能や、Stepsの時間制限の設定などの他のタイムアウト機能と併用できます。

すべてのStepsに対してNo Output Timeout機能をグローバルに有効にするClick to copy link​

Bitrise 1.50.0以降が必要です

No Output Timeout機能を使用するには、Bitrise 1.50.0以降のバージョンを使用する必要があります。

すべてのStepsに対してNo Output Timeoutをグローバルに有効にするには:

  1. Bitrise にアクセスして Log in、左側の Bitrise CI を選択し、プロジェクトを選択します。

  2. メインページの Workflows ボタンをクリックします。

  3. Secretsタブに移動します。

  4. 新しいシークレット環境変数BITRISE_NO_OUTPUT_TIMEOUTを追加し、出力ログを待ってからビルドを中止するまでの秒数を値に設定します。

    600秒(10分)に設定することをお勧めします。

    app-level-secret.png

    ハングしたビルドを自動的に中止する

    Stepsの時間制限の設定と比較すると、No Output Timeout機能は、設定した時間出力ログが生成されなかった場合にのみビルドを中止します。

    ログ出力があるとタイムアウトはリセットされます。そのため、BITRISE_NO_OUTPUT_TIMEOUTで設定した値よりもStepの実行時間が長くなる場合があります。

  5. Saveをクリックします。機能が有効になっているかどうかは、ビルドのビルドログで確認できます。

    step-force-output.png

これで設定は完了です。今後、StepがBITRISE_NO_OUTPUT_TIMEOUTで設定した秒数の間出力ログを生成しなかった場合、ビルドは次のメッセージとともに自動的に中止されます: Abort via Bitrise CLI (no output timeout)。

特定のStepに対してNo Output Timeout機能を無効にする

No Output Timeout機能をグローバルに有効にしていて、特定のStepsに対して無効にしたい場合は、bitrise.yml内で選択したStepのinputs:部分の直前にno_output_timeout: 0 Stepプロパティを追加します。

例:

steps:
- virtual-device-testing-for-ios@1:
no_output_timeout: 0
inputs:
- zip_path: "$BITRISE_PROJECT_PATH"

特定のStepsに対してNo Output Timeout機能を有効にするClick to copy link​

Bitrise 1.50.0以降が必要です

No Output Timeout機能を使用するには、Bitrise 1.50.0以降のバージョンを使用する必要があります。

bitrise.ymlファイル内のStepの下にno_output_timeout Stepプロパティを追加することで、特定のStepsに対してNo Output Timeout機能を有効にできます。

Workflow Editorを使用してこれを行うには:

  1. Bitrise にアクセスして Log in、左側の Bitrise CI を選択し、プロジェクトを選択します。

  2. メインページの Workflows ボタンをクリックします。

  3. bitrise.ymlタブに移動します。

  4. 機能を使用したいStepを検索します。

  5. 選択したStepのinputs:部分の直前にno_output_timeout: 12 Stepプロパティと値を挿入すると、Stepが12秒間出力ログを生成しなかった場合にビルドを自動的に中止できます。

    no_output_timeout Stepプロパティを0に設定する

    no_output_timeout Stepプロパティを0に設定すると、Stepに対してNo Output Timeout機能を無効にできます。

    常に自動的に中止されるScript Stepの例を見てみましょう:

    output_slows_down:
    steps:
    - script@1:
    title: Output is slower and slower
    no_output_timeout: 12
    inputs:
    - content: |-
    #!/usr/bin/env bash
    for i in {1..5}
    do
    DURATION=$((5*i))
    echo "🏃‍step output (sleeping ${DURATION}s)"
    sleep $DURATION
    done

これで設定は完了です。Stepがハングし、no_output_timeout Stepプロパティで指定した秒数の間、出力ログが1件も生成されない場合、ビルドは自動的に中止されます。