- Visão geral
- UiPath CLI
- Sobre o UiPath CLI
- Baixando o UiPath CLI
- Matriz de compatibilidade
- Executando o UiPath CLI
- Gerenciando feeds do NuGet
- Suporte do Test Manager
- Empacotando projetos em um pacote
- Assinatura de pacotes de projetos
- Análise de um projeto
- Implantação de um pacote no Orchestrator
- Executando um trabalho dentro do Orchestrator
- Teste de um pacote ou execução de um conjunto de testes
- Teste de vários pacotes
- Implantação de ativos no Orchestrator
- Exclusão de ativos do Orchestrator
- Executando tarefas usando a configuração JSON
- Restaurando dependências de automação
- Solução de problemas do UiPath CLI
- Extensão do Azure DevOps
- Plug-in do Jenkins

Guia do usuário de integrações de CI/CD
Como assinar pacotes de soluções
Como assinar pacotes de soluções
A UiPath CLI 25.10 introduz a capacidade de assinar digitalmente pacotes de solução de automação durante a operação do pacote. A assinatura do pacote fornece verificação de autenticidade e garante que os pacotes de solução não tenham sido alterados após a criação, aumentando a segurança no seu pipeline CI/CD.
Quando você assina um pacote de solução, a CLI:
- Cria o arquivo de pacote
.zipda solução - Aplica uma assinatura digital usando seu certificado a todos os pacotes Nuget dentro do arquivo
.zip. - Opcionalmente, carimbo de data/hora a assinatura para validade de longo prazo
Tipos de certificado suportados
A CLI é compatível com o formato de certificado PKCS#12 (.pfx).
O certificado deve:
- Incluir uma chave privada para assinatura
- Ser válido (não expirado)
- Ter recursos de assinatura de código
Parâmetros
O comando solution pack suporta os seguintes parâmetros de assinatura:
| Parâmetro | Description | Required |
|---|---|---|
--certificatePath | Caminho para o arquivo do certificado (.pfx) | Sim (se estiver assinando) |
--certificatePassword | Senha do arquivo do certificado | Não |
--timestampServerUrl | URL do servidor de carimbo de data/hora RFC 3161 | Não |
Exemplos de uso
Assinatura básica com certificado
# Windows
uipcli solution pack "C:\Solutions\MyAutomationSolution" `
-v "1.0.0" `
-o "C:\Packages" `
--certificatePath "C:\Certificates\codesign.pfx" `
--certificatePassword "YourPassword123"
# Linux/macOS
uipcli solution pack "./MyAutomationSolution" \
-v "1.0.0" \
-o "./packages" \
--certificatePath "./certificates/codesign.pfx" \
--certificatePassword "YourPassword123"
# Windows
uipcli solution pack "C:\Solutions\MyAutomationSolution" `
-v "1.0.0" `
-o "C:\Packages" `
--certificatePath "C:\Certificates\codesign.pfx" `
--certificatePassword "YourPassword123"
# Linux/macOS
uipcli solution pack "./MyAutomationSolution" \
-v "1.0.0" \
-o "./packages" \
--certificatePath "./certificates/codesign.pfx" \
--certificatePassword "YourPassword123"
Como assinar com o servidor de carimbo de data/hora
Adicionar um carimbo de data/hora garante que a assinatura permaneça válida mesmo após a expiração do certificado.
uipcli solution pack "./MyAutomationSolution" \
-v "1.0.0" \
-o "./packages" \
--certificatePath "./certificates/codesign.pfx" \
--certificatePassword "YourPassword123" \
--timestampServerUrl "http://timestamp.digicert.com"
uipcli solution pack "./MyAutomationSolution" \
-v "1.0.0" \
-o "./packages" \
--certificatePath "./certificates/codesign.pfx" \
--certificatePassword "YourPassword123" \
--timestampServerUrl "http://timestamp.digicert.com"
Como assinar com as dependências da biblioteca do Orchestrator
uipcli solution pack "./MyAutomationSolution" \
-v "1.0.0" \
-o "./packages" \
--libraryOrchestratorUrl "https://cloud.uipath.com/" \
--libraryOrchestratorTenant "Default" \
-A "myorg" \
-I "becc663c-8f1e-409a-a75f-c00330d80bc8" \
-S '********' \
--libraryOrchestratorApplicationScope "OR.Folders OR.Execution" \
--libraryOrchestratorFolder "Shared" \
--certificatePath "./certificates/codesign.pfx" \
--certificatePassword "YourPassword123" \
--timestampServerUrl "http://timestamp.digicert.com"
uipcli solution pack "./MyAutomationSolution" \
-v "1.0.0" \
-o "./packages" \
--libraryOrchestratorUrl "https://cloud.uipath.com/" \
--libraryOrchestratorTenant "Default" \
-A "myorg" \
-I "becc663c-8f1e-409a-a75f-c00330d80bc8" \
-S '********' \
--libraryOrchestratorApplicationScope "OR.Folders OR.Execution" \
--libraryOrchestratorFolder "Shared" \
--certificatePath "./certificates/codesign.pfx" \
--certificatePassword "YourPassword123" \
--timestampServerUrl "http://timestamp.digicert.com"
Assinatura com certificado sem senha
uipcli solution pack "./MyAutomationSolution" \
-v "1.0.0" \
-o "./packages" \
--certificatePath "./certificates/codesign.pfx"
uipcli solution pack "./MyAutomationSolution" \
-v "1.0.0" \
-o "./packages" \
--certificatePath "./certificates/codesign.pfx"
Exemplo de pipeline CI/CD (Ações do GitHub)
- name: Pack and sign solution package
env:
CERT_PASSWORD: ${{ secrets.CERTIFICATE_PASSWORD }}
APP_SECRET: ${{ secrets.UIPATH_APP_SECRET }}
run: |
uipcli solution pack "./src/MyAutomationSolution" \
-v "1.0.${{ github.run_number }}" \
-o "./output" \
--libraryOrchestratorUrl "https://cloud.uipath.com/" \
--libraryOrchestratorTenant "Default" \
-A "myorg" \
-I "becc663c-8f1e-409a-a75f-c00330d80bc8" \
-S "$APP_SECRET" \
--libraryOrchestratorApplicationScope "OR.Folders OR.Execution" \
--certificatePath "./certs/codesign.pfx" \
--certificatePassword "$CERT_PASSWORD" \
--timestampServerUrl "http://timestamp.digicert.com"
- name: Pack and sign solution package
env:
CERT_PASSWORD: ${{ secrets.CERTIFICATE_PASSWORD }}
APP_SECRET: ${{ secrets.UIPATH_APP_SECRET }}
run: |
uipcli solution pack "./src/MyAutomationSolution" \
-v "1.0.${{ github.run_number }}" \
-o "./output" \
--libraryOrchestratorUrl "https://cloud.uipath.com/" \
--libraryOrchestratorTenant "Default" \
-A "myorg" \
-I "becc663c-8f1e-409a-a75f-c00330d80bc8" \
-S "$APP_SECRET" \
--libraryOrchestratorApplicationScope "OR.Folders OR.Execution" \
--certificatePath "./certs/codesign.pfx" \
--certificatePassword "$CERT_PASSWORD" \
--timestampServerUrl "http://timestamp.digicert.com"
Exemplo de pipeline do Azure DevOps
- task: PowerShell@2
displayName: 'Pack and Sign Solution'
env:
CERT_PASSWORD: $(CertificatePassword)
APP_SECRET: $(UiPathAppSecret)
inputs:
targetType: 'inline'
script: |
uipcli solution pack "$(Build.SourcesDirectory)\MyAutomationSolution" `
-v "$(Build.BuildNumber)" `
-o "$(Build.ArtifactStagingDirectory)" `
--libraryOrchestratorUrl "https://cloud.uipath.com/" `
--libraryOrchestratorTenant "Default" `
-A "myorg" `
-I "becc663c-8f1e-409a-a75f-c00330d80bc8" `
-S "$env:APP_SECRET" `
--libraryOrchestratorApplicationScope "OR.Folders OR.Execution" `
--certificatePath "$(Build.SourcesDirectory)\certs\codesign.pfx" `
--certificatePassword "$env:CERT_PASSWORD" `
--timestampServerUrl "http://timestamp.digicert.com"
- task: PowerShell@2
displayName: 'Pack and Sign Solution'
env:
CERT_PASSWORD: $(CertificatePassword)
APP_SECRET: $(UiPathAppSecret)
inputs:
targetType: 'inline'
script: |
uipcli solution pack "$(Build.SourcesDirectory)\MyAutomationSolution" `
-v "$(Build.BuildNumber)" `
-o "$(Build.ArtifactStagingDirectory)" `
--libraryOrchestratorUrl "https://cloud.uipath.com/" `
--libraryOrchestratorTenant "Default" `
-A "myorg" `
-I "becc663c-8f1e-409a-a75f-c00330d80bc8" `
-S "$env:APP_SECRET" `
--libraryOrchestratorApplicationScope "OR.Folders OR.Execution" `
--certificatePath "$(Build.SourcesDirectory)\certs\codesign.pfx" `
--certificatePassword "$env:CERT_PASSWORD" `
--timestampServerUrl "http://timestamp.digicert.com"
Servidores de carimbo de data/hora recomendados
Usar um servidor de carimbo de data/hora é recomendado para garantir que as assinaturas permaneçam válidas após a expiração do certificado:
http://timestamp.digicert.com- DigiCerthttp://timestamp.comodoca.com- Sectigo (Comodo)http://timestamp.globalsign.com— GlobalSignhttp://timestamp.sectigo.com– Sectigo
Melhores práticas
Armazenamento seguro do certificado
- Nunca confirmar certificados para o controle de versões
- Use soluções de armazenamento seguras:
- Azure Key Vault
- AWS Secrets Manager
- HashiCorp Vault
- Segredos do GitHub /Arquivos seguros do Azure DevOps
- Gerenciamento de segredos da plataforma de CI/CD
Uso do carimbo de data/hora
- Sempre use um servidor de carimbo de data/hora em ambientes de produção
- Os carimbos de data/hora garantem a validade da assinatura além da expiração do certificado
Gerenciamento de certificados
- Use os certificados de assinatura de código dedicados
- Rotacionar certificados antes da expiração
- Mantenha os backups dos certificados com segurança