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

CI/CD integrations user guide

Last updated Nov 12, 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
--applicationScopeRequired scopesYes
--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 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 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
--applicationScopeRequired scopesYes
--traceLevelLogging levelNo

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

  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.