- 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
Packing a Solution
The pack command creates a deployable Solution package (.zip archive) that can be uploaded to Solutions in Orchestrator.
Command syntax
uipcli solution pack <solution-path> [options]uipcli solution pack <solution-path> [options]Parameters:
| Parameter | Description | Required |
|---|---|---|
<solution-path> (pos. 0) | Path to Solution folder or .uipx file | Yes |
--output | Directory where the package will be created | Yes |
--version | Version number in x.y.z format | Yes |
-A, --libraryOrchestratorAccountForApp (*) | The Orchestrator CloudRPA account name(organization name). You must pair it with the Application ID,Application Secret, and Application scope for external application This is required if any Solution project depends on libraries from the Orchestrator feed or on another process deployed to Orchestrator. | No |
-I ,--libraryOrchestratorApplicationId (*) (Required if you use external application authentication) | The external Application ID. You must pair it with the Application Account, Application Secret, and Application scope. This is required if any Solution project depends on libraries from the Orchestrator feed or on another process deployed to Orchestrator. | No |
-S, --libraryOrchestratorApplicationSecret (*) (Required if you use external application authentication) | The external Application Secret. You must pair it with the Application Account, Application ID, and Application scope. This is required if any Solution project depends on libraries from the Orchestrator feed or on another process deployed to Orchestrator. | No |
--libraryOrchestratorApplicationScope (*) (Required if you use external application authentication) | The list of application scopes, separated by single spaces. You must pair it with the Application Account, Application ID, and Application Secret for external application. This is required if any Solution project depends on libraries from the Orchestrator feed or on another process deployed to Orchestrator. | No |
--libraryOrchestratorUrl (*) | The URL of the Orchestrator instance. This is required if any Solution project depends on libraries from the Orchestrator feed or on another process deployed to Orchestrator. | No |
--libraryOrchestratorTenant (*) | The tenant of the Orchestrator instance. This is required if any Solution project depends on libraries from the Orchestrator feed or on another process deployed to Orchestrator. | No |
--libraryIdentityUrl(Required for PaaS or MSI deployments) | The URL of your identity server. | No |
--libraryOrchestratorFolder (*) | The name of the target Orchestrator folder. To input subfolders make sure to input both the parent folder name and the name of the subfolder. For instance, use AccountingTeam\TeamJohn. | No |
--disableBuiltInNugetFeeds | Disable built in nuget feeds. | No |
--repositoryUrl | The repository URL where the project is versioned. | No |
--repositoryCommit | The repository commit where the project was built from. | No |
--repositoryBranch | The repository branch where the project was built from. | No |
--repositoryType | VCS system repository type. | No |
--projectUrl | Automation Hub idea URL. | No |
--releaseNotes | Add release notes. | No |
--traceLevel | Display the trace of the events. | No |
Example
uipcli solution pack C:\Solutions\MySolution \ --output C:\Output \ --version 1.2.3 \ --traceLevel Verboseuipcli solution pack C:\Solutions\MySolution \ --output C:\Output \ --version 1.2.3 \ --traceLevel VerboseThis creates a package file like:
C:\Output\MySolution.1.2.3.zipC:\Output\MySolution.1.2.3.zipFull parameter example
uipcli solution pack C:\Solutions\MySolution \ --output C:\Output \ --version 1.2.3 \ --libraryOrchestratorAccountForApp MyOrgAccount \ --libraryOrchestratorApplicationId ******* \ --libraryOrchestratorApplicationSecret ******* \ --libraryOrchestratorApplicationScope "OR.Assets OR.Folders OR.Projects" \ --libraryOrchestratorUrl https://cloud.uipath.com/myOrgName/myTenantName \ --libraryOrchestratorTenant myTenantName \ --libraryIdentityUrl https://identity.uipath.com \ --libraryOrchestratorFolder "AccountingTeam\TeamJohn" \ --disableBuiltInNugetFeeds \ --repositoryUrl https://github.com/my-org/my-repo \ --repositoryCommit 7f3a9c2 \ --repositoryBranch main \ --repositoryType git \ --projectUrl https://automationhub.uipath.com/ideas/1234 \ --releaseNotes "Initial packaged solution version" \ --traceLevel Verboseuipcli solution pack C:\Solutions\MySolution \ --output C:\Output \ --version 1.2.3 \ --libraryOrchestratorAccountForApp MyOrgAccount \ --libraryOrchestratorApplicationId ******* \ --libraryOrchestratorApplicationSecret ******* \ --libraryOrchestratorApplicationScope "OR.Assets OR.Folders OR.Projects" \ --libraryOrchestratorUrl https://cloud.uipath.com/myOrgName/myTenantName \ --libraryOrchestratorTenant myTenantName \ --libraryIdentityUrl https://identity.uipath.com \ --libraryOrchestratorFolder "AccountingTeam\TeamJohn" \ --disableBuiltInNugetFeeds \ --repositoryUrl https://github.com/my-org/my-repo \ --repositoryCommit 7f3a9c2 \ --repositoryBranch main \ --repositoryType git \ --projectUrl https://automationhub.uipath.com/ideas/1234 \ --releaseNotes "Initial packaged solution version" \ --traceLevel VerboseVersioning requirement
Unlike standalone projects, Solutions do not auto-increment their version number. You must explicitly provide a version using the --version parameter.
Typical versioning patterns in CI/CD
Most teams generate the version dynamically based on build metadata:
Using build ID:
--version "1.0.$BUILD_ID"--version "1.0.$BUILD_ID"Using Git commit SHA:
--version "2.1.${GIT_COMMIT_SHA:0:7}"--version "2.1.${GIT_COMMIT_SHA:0:7}"Using semantic versioning with date:
--version "$(date +%Y.%m.$BUILD_NUMBER)"--version "$(date +%Y.%m.$BUILD_NUMBER)"Version format
The version must follow semantic versioning:
- Format:
MAJOR.MINOR.PATCH - Example:
1.0.0,2.3.45,10.20.1234 - Must contain exactly three numeric components separated by dots
Pipeline integration
Azure DevOps example
- script: | uipcli solution pack $(Build.SourcesDirectory)\MySolution \ --output $(Build.ArtifactStagingDirectory) \ --version "1.0.$(Build.BuildId)" \ --traceLevel Information displayName: 'Pack Solution'- script: | uipcli solution pack $(Build.SourcesDirectory)\MySolution \ --output $(Build.ArtifactStagingDirectory) \ --version "1.0.$(Build.BuildId)" \ --traceLevel Information displayName: 'Pack Solution'GitHub Actions example
- name: Pack Solution run: | uipcli solution pack ${{ github.workspace }}/MySolution \ --output ${{ runner.temp }}/packages \ --version "1.0.${{ github.run_number }}" \ --traceLevel Information- name: Pack Solution run: | uipcli solution pack ${{ github.workspace }}/MySolution \ --output ${{ runner.temp }}/packages \ --version "1.0.${{ github.run_number }}" \ --traceLevel InformationWhat gets packaged
The pack command bundles:
- All projects included in the Solution
- Project-level dependencies
- Solution metadata and configuration
- Binding definitions for environment-specific settings
The resulting .zip file is self-contained and ready to be uploaded to Orchestrator.
Packaging after restore
For best results, run restore before pack to ensure all dependencies are resolved:
# 1. Restore dependenciesuipcli solution restore C:\Solutions\MySolution \ --restoreFolder C:\Output\Dependencies \ --traceLevel Information# 2. Pack with explicit versionuipcli solution pack C:\Solutions\MySolution \ --output C:\Output \ --version 1.2.3 \ --traceLevel Verbose# 1. Restore dependenciesuipcli solution restore C:\Solutions\MySolution \ --restoreFolder C:\Output\Dependencies \ --traceLevel Information# 2. Pack with explicit versionuipcli solution pack C:\Solutions\MySolution \ --output C:\Output \ --version 1.2.3 \ --traceLevel VerbosePackage output location
The packaged .zip file is placed in the directory specified by --output. If the directory doesn't exist, it will be created automatically.
Typical output paths
Azure DevOps:
--output $(Build.ArtifactStagingDirectory)--output $(Build.ArtifactStagingDirectory)GitHub Actions:
--output ${{ runner.temp }}/packages--output ${{ runner.temp }}/packagesJenkins:
--output ${WORKSPACE}/output--output ${WORKSPACE}/outputNext steps
After packing, you can:
- Upload the package to Solutions Management.
- Store it as a build artifact in your CI/CD platform.
- Version it in an artifact repository (Artifactory, Azure Artifacts, etc.).