- Visão geral
- Introdução
- Conceitos
- Usando o UiPath CLI
- UiPath para agentes de codificação
- Guias de instruções
- Receitas de CI/CD
- Referência de comando
- Visão geral
- Códigos de saída
- Opções globais
- Agente de código uip
- Documento da UIP
- adicionar-tipo-dados-de-teste
- adicionar-dados-de-teste-fila
- adicionar-teste-variação de dados
- Analisar
- Criar
- criar projeto
- Comparação
- encontrar atividades
- obter-analisador-regras
- obter-padrão-atividade-xaml
- obter-erros
- obter-casos-de-teste-manuais
- obter-etapas-de-teste-manual
- Obter versões
- obter-fluxo-de-trabalho-exemplo
- indicar aplicativo
- indicar elemento
- inspecionar pacote
- instalar-data-fabric-entities
- instalar-ou-atualizar pacotes
- listar-data-fabric-entities
- listar-exemplos-de-fluxo-de-trabalho
- Empacotar
- restore
- arquivo de execução
- modelos-pesquisar
- Iniciar Studio
- interromper a execução
- UIA
- Traces da UIP
- Migração
- Referência e suporte
Guia do usuário da UiPath CLI
Esta página coleta os padrões que facilitam o script de uip — no shell, PowerShell e pipelines de CI. Nada aqui é específico a uma única ferramenta; cada padrão baseia-se no contrato que o código de saída e o envelope JSON expõem de forma consistente entre comandos.
Padrões úteis
Três decisões de design tornam o script simples:
- JSON é a saída padrão. Nenhum
--output jsoné necessário, esteja você em um terminal ou um pipeline. - stdout é somente JSON; todo o resto é stderr. Os logs, as barras de progresso e o texto de erro legível por humanos vão para o stderr, portanto, a captura do stdout fornece dados limpos.
- Os códigos de saída são estreitos e estáveis. Cinco valores (
0,1,2,3,4) cobrem cada modo de falha documentado, mais130para cancelamento do usuário. Os scripts podem se ramificar sem analisar strings.
Opções de shell estritas
Para bash / zsh, inicie scripts com:
#!/usr/bin/env bash
set -euo pipefail
#!/usr/bin/env bash
set -euo pipefail
-eanular em qualquer comando que saia diferente de zero.-uanular em uma variável indefinida.-o pipefailpropagar uma falha de qualquer estágio de um pipeline, não apenas do último.
Para o PowerShell:
$ErrorActionPreference = 'Stop'
$ErrorActionPreference = 'Stop'
Ramificação em códigos de saída
O valor Result no envelope mapeia um a um para o código de saída do processo. Ramifique o código de saída para decisões rápidas; abra o envelope para obter detalhes (consulte Códigos de saída para ver a tabela completa).
if uip or folders list --output-filter "Data[?Name=='Shared'] | [0]" > shared.json; then
echo "Shared folder found"
else
case $? in
2) echo "re-authenticating"; uip login --client-id env.UIPATH_CLIENT_ID --client-secret env.UIPATH_CLIENT_SECRET --tenant "$UIPATH_TENANT" ;;
3) echo "bad flag — aborting"; exit 3 ;;
*) echo "unexpected failure"; exit 1 ;;
esac
fi
if uip or folders list --output-filter "Data[?Name=='Shared'] | [0]" > shared.json; then
echo "Shared folder found"
else
case $? in
2) echo "re-authenticating"; uip login --client-id env.UIPATH_CLIENT_ID --client-secret env.UIPATH_CLIENT_SECRET --tenant "$UIPATH_TENANT" ;;
3) echo "bad flag — aborting"; exit 3 ;;
*) echo "unexpected failure"; exit 1 ;;
esac
fi
Lendo valores fora do envelope
Use --output-filter (JmesPath) para extrair valores na origem, em vez de canalizar através de jq:
FOLDER_KEY=$(uip or folders list --all --name Shared --output-filter "Data[0].Key" --output plain)
FOLDER_KEY=$(uip or folders list --all --name Shared --output-filter "Data[0].Key" --output plain)
--output plain o valor simples (sem aspas) de um resultado de filtro escalar. Para arrays e objetos, --output json mantém a estrutura:
PROCESS_KEYS=$(uip or processes list --folder-path Shared --output-filter "Data[*].Key")
echo "$PROCESS_KEYS" | jq -r '.[]' | while read -r key; do
uip or jobs start "$key"
done
PROCESS_KEYS=$(uip or processes list --folder-path Shared --output-filter "Data[*].Key")
echo "$PROCESS_KEYS" | jq -r '.[]' | while read -r key; do
uip or jobs start "$key"
done
Se você preferir jq de ponta a ponta, capture JSON bruto e encadee:
FOLDER_KEY=$(uip or folders list --all --name Shared | jq -r '.Data[0].Key')
FOLDER_KEY=$(uip or folders list --all --name Shared | jq -r '.Data[0].Key')
Ambas as abordagens produzem o mesmo valor. é --output-filter rápido e valida no tempo de análise de CLI; jq oferece o JmesPath completo e construções específicas do jq, como [-1] (último elemento) e to_entries.
Reautenticação em AuthenticationError (saída 2)
Os tokens de acesso expiram. Em um script de execução longa, o padrão é: execute o comando, volte para uip login se o token estiver perdido, tente novamente uma vez, então falhe.
uip_retry() {
uip "$@" && return 0
local code=$?
if [[ $code -eq 2 ]]; then
uip login \
--client-id env.UIPATH_CLIENT_ID \
--client-secret env.UIPATH_CLIENT_SECRET \
--tenant "$UIPATH_TENANT" >/dev/null
uip "$@"
else
return $code
fi
}
uip_retry or folders list --all
uip_retry() {
uip "$@" && return 0
local code=$?
if [[ $code -eq 2 ]]; then
uip login \
--client-id env.UIPATH_CLIENT_ID \
--client-secret env.UIPATH_CLIENT_SECRET \
--tenant "$UIPATH_TENANT" >/dev/null
uip "$@"
else
return $code
fi
}
uip_retry or folders list --all
Manter repetições limitadas — uma única tentativa de autenticação lida com a expiração do token; outras tentativas mascarariam uma credencial incorreta e gravariam limites de taxa.
Pesquisa de operações de longa duração
Algumas operações são concluídas de forma assíncrona no lado do Orchestrator:
- Execução de trabalho — use
uip or jobs start --wait-for-completionpara ter a pesquisa da CLI para você. O tempo limite padrão é de 300 segundos, configurável com--timeout. O intervalo de pesquisa é de 5 segundos, configurável com--poll-interval. - Implantação da solução —
uip solution deploy runpesquisa internamente com um tempo limite padrão de 360 segundos. - Execução de testes —
uip tm testsets runinicia a execução, retorna umExecutionIde sai imediatamente com0. Para bloquear até que a execução seja concluída, encadeeuip tm wait(que pesquisa e sai de2no tempo limite). Para ler o veredicto de aprovação/falha após aguardar, inspecioneData.Failedemuip tm report get. Consulte uip tm testessets, uip tm execuções e uip tm Wait.
Quando a pesquisa integrada for muito bruta ou quando o estado terminal precisar de tratamento personalizado, pesquise você mesmo:
JOB_KEY=$(uip or jobs start "$PROCESS_KEY" --output-filter "Data.Jobs[0].Key" --output plain)
while :; do
STATE=$(uip or jobs get --job-key "$JOB_KEY" --output-filter "Data.State" --output plain)
case "$STATE" in
Successful) echo "done"; break ;;
Faulted|Stopped) echo "job $STATE"; exit 1 ;;
*) sleep 10 ;;
esac
done
JOB_KEY=$(uip or jobs start "$PROCESS_KEY" --output-filter "Data.Jobs[0].Key" --output plain)
while :; do
STATE=$(uip or jobs get --job-key "$JOB_KEY" --output-filter "Data.State" --output plain)
case "$STATE" in
Successful) echo "done"; break ;;
Faulted|Stopped) echo "job $STATE"; exit 1 ;;
*) sleep 10 ;;
esac
done
Sempre limite o loop no tempo — um trabalho com falha que termina em um loop Pendente será bloqueado para sempre:
DEADLINE=$(( SECONDS + 1800 ))
while (( SECONDS < DEADLINE )); do
# … as above …
done
[[ $SECONDS -ge $DEADLINE ]] && { echo "timed out"; exit 1; }
DEADLINE=$(( SECONDS + 1800 ))
while (( SECONDS < DEADLINE )); do
# … as above …
done
[[ $SECONDS -ge $DEADLINE ]] && { echo "timed out"; exit 1; }
Pipelines idempotentes
Muitos comandos uip são idempotentes por design — reexecutá-los com os mesmos argumentos retorna o recurso existente ou não faz nada:
uip solution publisha republicação de um pacote com o mesmo nome e versão retorna a versão existente.uip tools installum não operacional se a ferramenta já estiver instalada.uip or processes create— falhará no nome-na-pasta duplicado; useuip or processes update-versionouuip or processes editnesse caso.- —
uip resource assets deploy --from-fileupserts por chave.
Combine esses com set -e para criar pipelines seguros para serem executados novamente após uma falha parcial sem etapas de limpeza.
Separando dados de logs
stdout é JSON. stderr é todo o resto. Redirecione-os de forma independente:
uip or folders list > folders.json 2> uip.log
uip or folders list > folders.json 2> uip.log
Isso é especialmente importante no CI: um trabalho que imprime indicadores de progresso ou saída npm em linha com o fluxo de dados produzirá JSON fragmentado para etapas posteriores o consumirem.
Tratamento de resultados vazios
Um comando que é bem-sucedido com zero linhas em Data sai de 0 — a consulta da lista funcionava, mas não havia correspondência. Detectar isso com --output-filter:
COUNT=$(uip or folders list --all --name DoesNotExist --output-filter "length(Data)" --output plain)
if [[ "$COUNT" -eq 0 ]]; then
echo "no match"
exit 1
fi
COUNT=$(uip or folders list --all --name DoesNotExist --output-filter "length(Data)" --output plain)
if [[ "$COUNT" -eq 0 ]]; then
echo "no match"
exit 1
fi
Não faça a correspondência padrão na ausência de um Name na saída da tabela; não é um formato analisável.
Fixação de versões no CI
Os pipelines reprodutíveis exigem a conexão da CLI e (opcionalmente) das ferramentas. Como as versões da ferramenta rastreiam a linha MAJOR.MINOR da CLI por padrão, fixar a CLI isoladamente geralmente é suficiente:
npm install -g @uipath/cli@1.0.0
uip tools install @uipath/orchestrator-tool # resolves to latest 1.0.x
npm install -g @uipath/cli@1.0.0
uip tools install @uipath/orchestrator-tool # resolves to latest 1.0.x
Para reprodutibilidade rigorosa entre níveis de patch, fixe também ferramentas:
uip tools install @uipath/orchestrator-tool@1.0.2
uip tools install @uipath/orchestrator-tool@1.0.2
Consulte Ferramentas ( plugins ) — resolução de versão para os detalhes.
Supressão de prompts interativos
Alguns comandos uip são interativos por padrão quando stdout é um TTY:
uip login— solicita a seleção do tenant se--tenantnão for passado.uip skills install/update/uninstallsolicita o agente de destino se--agentnão for aprovado.uip completionsolicita a confirmação do caminho de instalação.uip tools searchsolicita uma consulta se nenhuma for aprovada.
No CI, esses prompts podem travar um trabalho. Evite-os sempre passando os sinalizadores relevantes (--tenant, --agent, shell --print/explicit em completion) ou garantindo que o stdout não seja um TTY (a maioria dos executores de CI já cuidam disso).
Desabilitando a telemetria no CI
A telemetria anônima é enviada para o Application Insights da UiPath por padrão. Para ambientes isolados ou estritos:
export UIPATH_TELEMETRY_DISABLED=1
export UIPATH_TELEMETRY_DISABLED=1
...ou aponte-o para sua própria instância por meio de UIPATH_AI_CONNECTION_STRING. Consulte Instalação do UiPath CLI — Telemetria.
Veja também
- Códigos de saída — a tabela autorizada.
- Formatos de saída — o envelope e os quatro formatos.
- Opções globais —
--output,--output-filter,--log-level,--log-file. - Autenticação — os três fluxos de autenticação referenciados no padrão de nova tentativa acima.
- Receitas de CI/CD — pipelines completos específicos da plataforma.
- Padrões úteis
- Opções de shell estritas
- Ramificação em códigos de saída
- Lendo valores fora do envelope
- Reautenticação em AuthenticationError (saída 2)
- Pesquisa de operações de longa duração
- Pipelines idempotentes
- Separando dados de logs
- Tratamento de resultados vazios
- Fixação de versões no CI
- Supressão de prompts interativos
- Desabilitando a telemetria no CI
- Veja também