UiPath Documentation
uipath-cli
latest
false
重要 :
このコンテンツは機械翻訳によって処理されています。 新しいコンテンツの翻訳は、およそ 1 ~ 2 週間で公開されます。

UiPath CLI ユーザー ガイド

終了コード

すべての uip 呼び出しは、数字の終了コードで終わります。スクリプトと CI パイプラインは、これらのコードに基づいて分岐し、成功、再試行する価値のある一時的なエラー、人間の注意が必要な資格情報の問題、およびコマンド ラインの誤用を区別します。

コントラクト

終了コードは、コマンドの出力エンベロープの Result フィールドによって決まります。ホストは、各 Result 値を 1 つの終了コードにマッピングします。

終了コードResult意味
0Success命令は完了し、その意図は達成された。
1Failure, ConfigError一般的な障害またはCLIがサーバーに到達する前に検出できる設定の問題(テナントの欠落、ディスク上のファイルの欠落など)。
2AuthenticationErrorセッションが認証されていないか、トークンの有効期限が切れているか、Orchestrator が資格情報を拒否しました (401/403)。
3ValidationErrorコマンドが無効な入力 (不明なフラグ、間違った値を持つフラグ、相互に排他的なフラグ、不正な形式の --output-filterなど) で呼び出されました。
4TimeoutError実行時間の長い操作が期限を超過しました。将来の使用のために予約されています — 現在、これを出力するコマンドはありませんが、コントラクトは安定しているため、コントラクトに対して書かれたスクリプトは機能し続けます。

さらに、以下が追加されました。

終了コードソース意味
130シェル規則 (128 + SIGINT)ユーザーが対話型プロンプトをキャンセルしました ( uip login中に Ctrl+C、 uip skills installuip completionなど)。

UiPath CLI によって他の終了コードは出力されません。この表以外の値は、異常終了 (キャッチされないクラッシュ、暴走した子プロセス、またはシグナルを報告するシェル) を示しており、パターン マッチングではなく、調査する必要があります。

安定 性

  • 0123 はメジャーリリース内で安定版です。特定の入力の 3 (検証)で終了するコマンドは、MINORおよびPATCHバンプ全体で 3 で終了し続けます。
  • 4 は予約済みです。将来の MINOR リリースでは、長期実行コマンドからの出力が開始される可能性があります。すでに 4 を「タイムアウト」として処理しているスクリプトは、引き続き機能します。
  • 新しいコードは、リリース ノートに事前の通知とともに、メジャー リリースで追加される場合があります。現在のセットは、UiPath CLI 1.x で必要なすべての障害モードをカバーしています。

より広範な semver コントラクトについては、「 バージョン管理と安定性 」を参照してください。

スクリプトで終了コードを読み取る

bash / sh / zsh

uip or folders list
case $? in
  0)   echo "ok" ;;
  1)   echo "command failed" ;;
  2)   echo "not authenticated — run uip login" ;;
  3)   echo "bad input — check flags" ;;
  4)   echo "timed out" ;;
  130) echo "cancelled by user" ;;
  *)   echo "unexpected exit: $?" ;;
esac
uip or folders list
case $? in
  0)   echo "ok" ;;
  1)   echo "command failed" ;;
  2)   echo "not authenticated — run uip login" ;;
  3)   echo "bad input — check flags" ;;
  4)   echo "timed out" ;;
  130) echo "cancelled by user" ;;
  *)   echo "unexpected exit: $?" ;;
esac

set -e (または set -o errexit) は、0 以外の終了時にスクリプトを中止します。これは CI の一般的なデフォルトです。コードを区別する必要がある場合は、 trap またはコマンドごとの処理と組み合わせてください。

set -euo pipefail

if ! uip or folders list --output json > folders.json; then
  case $? in
    2)  uip login ; uip or folders list --output json > folders.json ;;
    *)  exit $? ;;
  esac
fi
set -euo pipefail

if ! uip or folders list --output json > folders.json; then
  case $? in
    2)  uip login ; uip or folders list --output json > folders.json ;;
    *)  exit $? ;;
  esac
fi

PowerShell

uip or folders list
switch ($LASTEXITCODE) {
    0   { Write-Host "ok" }
    1   { Write-Host "command failed" }
    2   { Write-Host "not authenticated" }
    3   { Write-Host "bad input" }
    4   { Write-Host "timed out" }
    130 { Write-Host "cancelled" }
    default { Write-Host "unexpected exit: $LASTEXITCODE" }
}
uip or folders list
switch ($LASTEXITCODE) {
    0   { Write-Host "ok" }
    1   { Write-Host "command failed" }
    2   { Write-Host "not authenticated" }
    3   { Write-Host "bad input" }
    4   { Write-Host "timed out" }
    130 { Write-Host "cancelled" }
    default { Write-Host "unexpected exit: $LASTEXITCODE" }
}

GitHub Actions

run:ステップで 0 以外の終了を行うと、ジョブは既定で失敗します。特定のコードで分岐するには、コードを明示的にキャプチャします。

- name: Query Orchestrator
  id: folders
  run: |
    uip or folders list --output json > folders.json
    echo "exit_code=$?" >> "$GITHUB_OUTPUT"
  continue-on-error: true

- name: Re-authenticate if expired
  if: steps.folders.outputs.exit_code == '2'
  run: uip login --client-id env.UIPATH_CLIENT_ID --client-secret env.UIPATH_CLIENT_SECRET --tenant "$TENANT"
  env:
    UIPATH_CLIENT_ID: ${{ secrets.UIPATH_CLIENT_ID }}
    UIPATH_CLIENT_SECRET: ${{ secrets.UIPATH_CLIENT_SECRET }}
    TENANT: ${{ vars.UIPATH_TENANT }}
- name: Query Orchestrator
  id: folders
  run: |
    uip or folders list --output json > folders.json
    echo "exit_code=$?" >> "$GITHUB_OUTPUT"
  continue-on-error: true

- name: Re-authenticate if expired
  if: steps.folders.outputs.exit_code == '2'
  run: uip login --client-id env.UIPATH_CLIENT_ID --client-secret env.UIPATH_CLIENT_SECRET --tenant "$TENANT"
  env:
    UIPATH_CLIENT_ID: ${{ secrets.UIPATH_CLIENT_ID }}
    UIPATH_CLIENT_SECRET: ${{ secrets.UIPATH_CLIENT_SECRET }}
    TENANT: ${{ vars.UIPATH_TENANT }}

終了コードを JSON エンベロープに一致させる

--output jsonが有効(デフォルト)の場合、エンベロープには終了コードと同じ情報に加えて、人間が判読できるメッセージが表示されます。

{
  "Result": "ValidationError",
  "Message": "Unknown option '--folder-pth'. Did you mean '--folder-path'?",
  "Instructions": "Run 'uip or folders list --help' to see valid options."
}
{
  "Result": "ValidationError",
  "Message": "Unknown option '--folder-pth'. Did you mean '--folder-path'?",
  "Instructions": "Run 'uip or folders list --help' to see valid options."
}

パイプラインは、迅速な意思決定 (2 でリトライ、3 で中止) のために $? で分岐し、エンベロープを解析してエラーの全体像を把握できます (Slack Webhook で Message を表示する、失敗したステップと一緒に Instructions にチケットを発券するなど)。

コマンド固有のセマンティクス

終了コードは ステータス コードであり、成功コードではありません。「結果が見つかりません」を示すDataペイロードを含むSuccessを報告するコマンドは、引き続き0終了します。たとえば、uip or folders list --all --name DoesNotExist{"Data": [], …}を返し、リストクエリが成功したため、0終了します。一致がないことは、失敗ではなく、正当な結果です。

コマンドが「操作が成功しました」と「ドメインの結果が肯定的である」を区別する必要がある場合、そのリファレンスページでそのように述べています。

  • uip tm testsets run — Orchestrator がテスト実行要求を受け入れてExecutionIdを返すと、常に0終了します。合格/不合格の判定は、別の uip tm wait + uip tm report get チェーンから取得されます。レポート出力の Data.Failed で分岐します。uip tm wait タイムアウト時に終了コード 2 を出力します( uip tm wait および uip tmの実行に記載された認証エラースロットのドメイン固有の再利用)。
  • uip or jobs start --wait-for-completion — ジョブがターミナル Faulted または Stopped 状態に達すると、0 以外の状態を終了します。--wait-for-completionを使用しない場合、コマンドは Orchestrator が要求を受け入れるとすぐに0終了します。これは、その後のジョブの結果に関係なく関係ありません。

「成功」の意味が曖昧なコマンドについては、リファレンス ページを確認してください。

参照

このページは役に立ちましたか?

接続

ヘルプ リソース サポート

学習する UiPath アカデミー

質問する UiPath フォーラム

最新情報を取得