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

CI/CD integrations user guide

Last updated Dec 10, 2025

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:

ParameterDescriptionRequired
<package-path>Path to the .zip package fileYes
-UOrchestrator URLYes
-TTenant nameYes
-AOrganization nameYes
-IExternal App IDYes
-SExternal App secretYes
--applicationScopeOptional scopes (defaults applied)No
--traceLevelLogging levelNo

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

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

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

ParameterDescriptionRequired
<package-name>Name of the package (without .zip extension)Yes
-v or --versionVersion number to deleteYes
-UOrchestrator URLYes
-TTenant nameYes
-AOrganization nameYes
-IExternal App IDYes
-SExternal App secretYes
--applicationScopeOptional scopes (defaults applied)No
--traceLevelLogging levelNo
Note:

When using external application authentication without specifying the --applicationScope parameter, the CLI automatically applies these default AutomationSolution scopes:

Solutions.Packages Solutions.Deployments OR.Execution

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

When 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 one
uipcli 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 one
uipcli 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:

  1. Download deployment configurations.
  2. Deploy the Solution to a target environment.

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.