cicd-integrations
2025.10
true
UiPath logo, featuring letters U and I in white

CI/CD integrations user guide

Last updated Nov 5, 2025

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:

ParameterDescriptionRequired
<solution-path> (pos. 0)Path to Solution folder or .uipx fileYes
--outputDirectory where the package will be createdYes
--versionVersion number in x.y.z formatYes
-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
--disableBuiltInNugetFeedsDisable built in nuget feeds.No
--repositoryUrlThe repository URL where the project is versioned.No
--repositoryCommitThe repository commit where the project was built from.No
--repositoryBranchThe repository branch where the project was built from.No
--repositoryTypeVCS system repository type.No
--projectUrlAutomation Hub idea URL.No
--releaseNotesAdd release notes.No
--traceLevelDisplay 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 Verbose

This creates a package file like:

C:\Output\MySolution.1.2.3.zipC:\Output\MySolution.1.2.3.zip

Full 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 Verbose

Versioning 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 Information

What 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 Verbose

Package 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 }}/packages

Jenkins:

--output ${WORKSPACE}/output--output ${WORKSPACE}/output

Next steps

After packing, you can:

  1. Upload the package to Solutions Management.
  2. Store it as a build artifact in your CI/CD platform.
  3. Version it in an artifact repository (Artifactory, Azure Artifacts, etc.).

Was this page helpful?

Get The Help You Need
Learning RPA - Automation Courses
UiPath Community Forum
Uipath Logo
Trust and Security
© 2005-2025 UiPath. All rights reserved.