- Overview
- UiPath CLI
- About UiPath CLI
- Downloading UiPath CLI
- Compatibility matrix
- Running UiPath CLI
- Managing NuGet feeds
- Packing projects into a package
- Analyzing a project
- Deploying a package to Orchestrator
- Running a job inside Orchestrator
- Testing a package or running a test set
- Testing multiple packages
- Deploying assets to Orchestrator
- Deleting assets from Orchestrator
- Running tasks using JSON configuration
- Restoring automation dependencies
- Troubleshooting UiPath CLI
- Azure DevOps extension
- Jenkins plugin

CI/CD integrations user guide
Uploading and Deleting Solution Packages
After packing a solution, you can upload the package to Solutions in Orchestrator. You can also delete packages when they're no longer needed.
Uploading a package
The upload-package command pushes a solution .zip file to Solutions.
Command syntax
uipcli solution upload-package <package-path> [options]uipcli solution upload-package <package-path> [options]Parameters:
| Parameter | Description | Required |
|---|---|---|
<package-path> | Path to the .zip package file | Yes |
-U | Orchestrator URL | Yes |
-T | Tenant name | Yes |
-A | Organization name | Yes |
-I | External App ID | Yes |
-S | External App secret | Yes |
--applicationScope | Required scopes | Yes |
--traceLevel | Logging level | No |
Authentication
See Authentication and scopes for required scopes and External App setup.
Example
uipcli solution upload-package C:\Output\MySolution.1.2.3.zip \ -U https://cloud.uipath.com/ \ -T DefaultTenant \ -A myorg \ -I 12345678-xxxx-xxxx-xxxx-xxxxxxxxxxxx \ -S **** \ --applicationScope "AutomationSolutions Solutions.Deployments Solutions.Deployments.Read Solutions.Deployments.Write Solutions.Packages Solutions.Packages.Read Solutions.Packages.Write" \ --traceLevel Informationuipcli solution upload-package C:\Output\MySolution.1.2.3.zip \ -U https://cloud.uipath.com/ \ -T DefaultTenant \ -A myorg \ -I 12345678-xxxx-xxxx-xxxx-xxxxxxxxxxxx \ -S **** \ --applicationScope "AutomationSolutions Solutions.Deployments Solutions.Deployments.Read Solutions.Deployments.Write Solutions.Packages Solutions.Packages.Read Solutions.Packages.Write" \ --traceLevel InformationUsing CI/CD secrets
Never hardcode credentials in scripts. Use your platform's secret management:
Azure DevOps:
- script: | uipcli solution upload-package $(Build.ArtifactStagingDirectory)\MySolution.$(Build.BuildId).zip \ -U $(orchestratorUrl) \ -T $(orchestratorTenant) \ -A $(organizationName) \ -I $(externalAppId) \ -S $(externalAppSecret) \ --applicationScope "AutomationSolutions Solutions.Deployments Solutions.Deployments.Read Solutions.Deployments.Write Solutions.Packages Solutions.Packages.Read Solutions.Packages.Write" \ --traceLevel Information displayName: 'Upload Solution Package'- script: | uipcli solution upload-package $(Build.ArtifactStagingDirectory)\MySolution.$(Build.BuildId).zip \ -U $(orchestratorUrl) \ -T $(orchestratorTenant) \ -A $(organizationName) \ -I $(externalAppId) \ -S $(externalAppSecret) \ --applicationScope "AutomationSolutions Solutions.Deployments Solutions.Deployments.Read Solutions.Deployments.Write Solutions.Packages Solutions.Packages.Read Solutions.Packages.Write" \ --traceLevel Information displayName: 'Upload Solution Package'GitHub Actions:
- name: Upload Solution Package run: | uipcli solution upload-package ${{ runner.temp }}/packages/MySolution.${{ github.run_number }}.zip \ -U ${{ secrets.ORCHESTRATOR_URL }} \ -T ${{ secrets.ORCHESTRATOR_TENANT }} \ -A ${{ secrets.ORG_NAME }} \ -I ${{ secrets.EXTERNAL_APP_ID }} \ -S ${{ secrets.EXTERNAL_APP_SECRET }} \ --applicationScope "AutomationSolutions Solutions.Deployments Solutions.Deployments.Read Solutions.Deployments.Write Solutions.Packages Solutions.Packages.Read Solutions.Packages.Write" \ --traceLevel Information- name: Upload Solution Package run: | uipcli solution upload-package ${{ runner.temp }}/packages/MySolution.${{ github.run_number }}.zip \ -U ${{ secrets.ORCHESTRATOR_URL }} \ -T ${{ secrets.ORCHESTRATOR_TENANT }} \ -A ${{ secrets.ORG_NAME }} \ -I ${{ secrets.EXTERNAL_APP_ID }} \ -S ${{ secrets.EXTERNAL_APP_SECRET }} \ --applicationScope "AutomationSolutions Solutions.Deployments Solutions.Deployments.Read Solutions.Deployments.Write Solutions.Packages Solutions.Packages.Read Solutions.Packages.Write" \ --traceLevel InformationWhat happens after upload
Once uploaded, the package:
- Appears in Solutions in Orchestrator.
- Can be deployed to any target folder.
- Is versioned and tracked.
- Can be downloaded by other pipelines or users.
Deleting a package
The delete-package command removes a solution package from Solutions.
Command syntax
uipcli solution delete-package <package-name> [options]uipcli solution delete-package <package-name> [options]Parameters:
| Parameter | Description | Required |
|---|---|---|
<package-name> | Name of the package (without .zip extension) | Yes |
-v or --version | Version number to delete | Yes |
-U | Orchestrator URL | Yes |
-T | Tenant name | Yes |
-A | Organization name | Yes |
-I | External App ID | Yes |
-S | External App secret | Yes |
--applicationScope | Required scopes | Yes |
--traceLevel | Logging level | No |
Authentication
See Authentication and scopes for required scopes and External App setup.
Example
uipcli solution delete-package MySolution \ -v 1.2.3 \ -U https://cloud.uipath.com/ \ -T DefaultTenant \ -A myorg \ -I 12345678-xxxx-xxxx-xxxx-xxxxxxxxxxxx \ -S **** \ --applicationScope "AutomationSolutions Solutions.Deployments Solutions.Deployments.Read Solutions.Deployments.Write Solutions.Packages Solutions.Packages.Read Solutions.Packages.Write" \ --traceLevel Informationuipcli solution delete-package MySolution \ -v 1.2.3 \ -U https://cloud.uipath.com/ \ -T DefaultTenant \ -A myorg \ -I 12345678-xxxx-xxxx-xxxx-xxxxxxxxxxxx \ -S **** \ --applicationScope "AutomationSolutions Solutions.Deployments Solutions.Deployments.Read Solutions.Deployments.Write Solutions.Packages Solutions.Packages.Read Solutions.Packages.Write" \ --traceLevel InformationWhen to delete packages
Common scenarios for deleting packages:
- Cleanup pipelines - Remove old versions after successful deployment.
- Failed builds - Delete invalid packages that shouldn't be deployed.
- Retention policies - Enforce package lifecycle rules (e.g., keep only last 10 versions).
- Storage management - Free up space in Solutions.
Pipeline example - cleanup old versions
# Delete old version after deploying new oneuipcli solution delete-package MySolution \ -v 1.2.2 \ -U https://cloud.uipath.com/ \ -T DefaultTenant \ -A myorg \ -I $(externalAppId) \ -S $(externalAppSecret) \ --applicationScope "AutomationSolutions Solutions.Deployments Solutions.Deployments.Read Solutions.Deployments.Write Solutions.Packages Solutions.Packages.Read Solutions.Packages.Write"# Delete old version after deploying new oneuipcli solution delete-package MySolution \ -v 1.2.2 \ -U https://cloud.uipath.com/ \ -T DefaultTenant \ -A myorg \ -I $(externalAppId) \ -S $(externalAppSecret) \ --applicationScope "AutomationSolutions Solutions.Deployments Solutions.Deployments.Read Solutions.Deployments.Write Solutions.Packages Solutions.Packages.Read Solutions.Packages.Write"Package naming
The package name used in upload and delete operations is derived from the solution name, not the filename.
Example:
- Pack command creates:
MySolution.1.2.3.zip - Package name for delete:
MySolution - Version:
1.2.3
Next steps
After uploading a package, you can:
- Download deployment configurations.
- Deploy the Solution to a target environment.