- Überblick
- UiPath-CLI
- Über UiPath-CLI
- Herunterladen der UiPath-CLI
- Kompatibilitätsmatrix
- Ausführen der UiPath-CLI
- Verwalten von NuGet-Feeds
- Test Manager-Support
- Packen von Projekten in ein Paket
- Signieren von Projektpaketen
- Analysieren eines Projekts
- Bereitstellen eines Pakets im Orchestrator
- Ausführen eines Auftrags im Orchestrator
- Testen eines Pakets oder Ausführen eines Testsatzes
- Testen mehrerer Pakete
- Bereitstellen von Assets im Orchestrator
- Löschen von Assets aus dem Orchestrator
- Ausführen von Aufgaben mithilfe der JSON-Konfiguration
- Wiederherstellen von Automatisierungsabhängigkeiten
- Überblick
- Wiederherstellen und Analysieren von Lösungen
- Eine Lösung wird gepackt
- Signieren von Lösungspaketen
- Hochladen und Löschen von Lösungspaketen
- Herunterladen von Lösungspaketen und Konfigurationen
- Bereitstellen und Aktivieren von Lösungen
- Deinstallieren von Bereitstellungen
- Authentifizierung und Scopes
- Fehlerbehebung bei der UiPath-CLI
- Azure DevOps-Erweiterung
- Jenkins-Plugin

Benutzerhandbuch zu CI/CD-Integrationen
Signieren von Lösungspaketen
UiPath CLI 25.10 führt die Möglichkeit ein, Pakete von Automatisierungslösungen während des Packvorgangs digital zu signieren. Die Paketsignatur ermöglicht die Überprüfung der Authentizität und stellt sicher, dass Lösungspakete nach der Erstellung nicht manipuliert wurden, wodurch die Sicherheit in Ihrer CI/CD-Pipeline erhöht wird.
Wenn Sie ein Lösungspaket signieren, führt die CLI Folgendes aus:
- Erstellt die Lösungspaketdatei
.zip - Wendet eine digitale Signatur mithilfe Ihres Zertifikats auf alle Nuget-Pakete in der Datei
.zip. - Optional mit Zeitstempeln für die Signatur für langfristige Gültigkeit
Unterstützte Zertifikatstypen
Die CLI unterstützt das Zertifikatsformat PKCS#12 (.pfx).
Das Zertifikat muss:
- Fügen Sie einen privaten Schlüssel zum Signieren ein
- Gültig sein (nicht abgelaufen)
- Funktionen zum Signieren von Code haben
Parameter
Der Befehl solution pack unterstützt die folgenden Signaturparameter:
| Parameter | Beschreibung | Erforderlich |
|---|---|---|
--certificatePath | Pfad zur Zertifikatsdatei (.pfx) | Ja (wenn Signierung) |
--certificatePassword | Kennwort für die Zertifikatsdatei | Nein |
--timestampServerUrl | URL des RFC 3161-Zeitstempelservers | Nein |
Anwendungsbeispiele
Grundlegende Signierung mit Zertifikat
# 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"
Signieren mit dem Zeitstempelserver
Durch Hinzufügen eines Zeitstempels wird sichergestellt, dass die Signatur auch nach Ablauf des Zertifikats gültig bleibt.
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"
Signieren mit Orchestrator-Bibliotheksabhängigkeiten
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"
Signieren mit einem kennwortlosen Zertifikat
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"
Beispiel für eine CI/CD-Pipeline (GitHub Actions)
- 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"
Beispiel für eine Azure DevOps-Pipeline
- 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"
Empfohlene Zeitstempelserver
Die Verwendung eines Zeitstempelservers wird empfohlen, um sicherzustellen, dass Signaturen nach dem Ablauf des Zertifikats gültig bleiben:
http://timestamp.digicert.com– DigiCerthttp://timestamp.comodoca.com– Sekiertgo (Comodo)http://timestamp.globalsign.com– GlobalSignhttp://timestamp.sectigo.com– Sekgo
Best Practices
Sicherer Zertifikatspeicher
- Commit niemals Zertifikate an die Versionskontrolle
- Verwenden Sie sichere Speicherlösungen:
- Azure Key Vault
- AWS Secrets Manager
- HashiCorp Vault
- GitHub-Geheimnisse/Sichere Azure DevOps-Dateien
- Verwaltung von geheimen Schlüsseln der CI/CD-Plattform
Zeitstempelnutzung
- Verwenden Sie in Produktionsumgebungen immer einen Zeitstempelserver
- Zeitstempel stellen die Gültigkeit der Signatur über den Ablauf des Zertifikats hinaus sicher
Zertifikatverwaltung
- Verwenden Sie dedizierte Codesignaturzertifikate
- Zertifikate vor ihrem Ablauf rotieren
- Bewahren Sie Zertifikatsicherungen sicher auf