UiPath Documentation
uipath-cli
latest
false
Important :
Ce contenu a été traduit à l'aide d'une traduction automatique. La localisation du contenu nouvellement publié peut prendre 1 à 2 semaines avant d’être disponible.

Guide de l'utilisateur de UiPath CLI

Codes de sortie

Chaque uip invocation se termine par un code de sortie numérique. Les scripts et les pipelines CI se ramifient sur ces codes pour distinguer le succès, une Error temporaire qui méritent d'être réessayées, un problème d'identifiants qui nécessite une attention humaine et une mauvaise utilisation de la ligne de commande.

Contrat

Le code de sortie est déterminé par le champ Result dans l'enveloppe de sortie de la commande. L'hôte mappe chaque valeur Result à un seul code de sortie:

Code de sortieResult valeur(s)Signification
0SuccessLa commande est terminée et son objectif a été atteint.
1Failure, ConfigErrorÉchec générique ou problème de configuration que la CLI peut détecter avant d'atteindre le serveur (locataire manquant, fichier disque manquant, etc.).
2AuthenticationErrorLa session n’est pas authentifiée, le jeton a expiré ou Orchestrator a rejeté les informations d’identification (401/403).
3ValidationErrorLa commande a été invoquée avec une entrée non valide — indicateur inconnu, indicateur avec une valeur incorrecte, indicateurs mutuellement exclusifs, --output-filter incorrect, etc.
4TimeoutErrorUne opération de longue durée a dépassé son échéance. Réservé pour usage futur — aucune commande ne l'émet aujourd'hui, mais le contrat est stable, de sorte que les scripts écrits dans son contexte continueront de fonctionner.

En outre :

Code de sortieSourceSignification
130Convention Shell (128 + Signint)L’utilisateur a annulé une invite interactive (Ctrl+C pendant uip login, uip skills install, uip completion, etc.).

Aucun autre code de sortie n'est émis par la UiPath CLI. Une valeur en dehors de ce tableau indique une fin normale (crash non détecté, processus enfant en run- été ou le shell signalant un signal) et doit faire l’objet d’un examen et non d’une correspondance de modèle.

Stabilité

  • 0, 1, 2, 3 sont stables dans une version majeure. Une commande qui se termine avec 3 (validation) pour une entrée donnée continuera à se fermer avec 3 entre les sauts Minor et PATCH.
  • 4 est réservé. Une version mineure future peut commencer à l'émettre à partir de commandes longue durée; les scripts qui gèrent déjà 4 comme « délai d'attente» continueront de fonctionner.
  • De nouveaux codes peuvent être ajoutés dans une version majeure, avec un avis préalable dans les notes de version. L’ensemble actuel couvre chaque mode de défaillance requis par UiPath CLI 1.x.

Voir Contrôle des versions et stabilité pour le contrat du serveur plus large.

Lecture du code de sortie dans les scripts

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 (ou set -o errexit) abandonne le script sur n'importe quelle sortie non nulle. Il s'agit de la valeur par défaut pour CI; combinez-le avec trap ou avec la gestion par commande lorsque vous devez faire la distinction entre les codes:

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" }
}

Actions de GitHub

Toute sortie non-zéro dans une étape run: échoue la tâche par défaut. Pour ramifier sur des codes spécifiques, capturez le code explicitement:

- 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 }}

Faire correspondre les codes de sortie à l'enveloppe JSON

Lorsque --output json est en vigueur (par défaut), l'enveloppe contient les mêmes informations que le code de sortie, plus un message lisible par un humain:

{
  "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."
}

Un pipeline peut se ramifier sur $? pour des décisions rapides (réessayer sur 2, abandonner sur 3) et analyser l'enveloppe pour l'image complète de l'erreur (faire apparaître le Message dans un webhook Slack, ticketer le Instructions avec l'étape défaillante, etc.).

Sémantique spécifique à la commande

Les codes de sortie sont des codes de statut, et non des codes de réussite. Une commande qui signale Success avec une charge utile Data indiquant « aucun résultat trouvé» quitte toujours 0. Par exemple, uip or folders list --all --name DoesNotExist renvoie {"Data": [], …} et quitte 0 — car la requête de liste a réussi; l'absence de correspondances est un résultat valide, et non un échec.

Lorsqu'une commande doit distinguer « l'opération réussie» de « le résultat du domaine est positif», elle l'indique dans sa page de référence:

  • uip tm testsets runquitte toujours 0 une fois qu'Orchestrator a accepté la demande d'exécution de test et renvoie le fichier ExecutionId. Le score de réussite/d’échec provient d’une chaîne uip tm wait + uip tm report get distincte; branche sur Data.Failed dans la sortie du rapport. uip tm wait envoie le code de sortie 2 au moment de l’expiration (une réutilisation spécifique à un domaine de l’emplacement d’erreur d’authentification — notée dans les exécutions uip tm wait et uip tm).
  • uip or jobs start --wait-for-completion — se termine non-zéro lorsque la tâche atteint un état terminal Faulted ou Stopped . Sans --wait-for-completion, la commande se termine 0 dès qu'Orchestrator accepte la requête, quel que soit le résultat ultérieur de la tâche.

Consultez la page de référence pour toute commande où la sémantique de « réussite» est ambiguë.

Voir également

Cette page vous a-t-elle été utile ?

Connecter

Besoin d'aide ? Assistance

Vous souhaitez apprendre ? UiPath Academy

Vous avez des questions ? UiPath Forum

Rester à jour