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

CI/CD integrations user guide

Last updated Nov 5, 2025

Deploying and Activating Solutions

After uploading a solution package to Solutions, you can deploy it to a target folder and activate it to make it operational.

Deployment workflow

Deploying a solution is a two-step process:

  1. Deploy: Create a deployment configuration and associate the package with a target folder.
  2. Activate: Make the deployment live and operational.

This separation allows you to prepare deployments in advance and activate them during maintenance windows or after manual approval.

Deploying a solution

The deploy command creates a deployment of a solution package in a specific environment.

Command syntax

uipcli solution deploy <package-name> [options]uipcli solution deploy <package-name> [options]

Parameters:

ParameterDescriptionRequired
<package-name>Name of the uploaded packageYes
-v or --versionPackage version to deployYes
-d or --deploymentNameName for this deploymentYes
-f or --deploymentFolderNameTarget folder name in OrchestratorYes
-UOrchestrator URLYes
-TTenant nameYes
-AOrganization nameYes
-IExternal App IDYes
-SExternal App secretYes
--applicationScopeRequired scopesYes
--deploymentParentFolderParent folder name in Orchestrator where the solution will be deployed (if omitted solutuion will be deployed under Tenant)No
--configPathLocal path to solution configuration file; needed in scenarios with overwriting bindingsNo
--traceLevelLogging levelNo

Authentication

See Authentication and scopes for required scopes and External App setup.

Example

uipcli solution deploy MySolution \  -v 1.2.3 \  -d MySolution-Prod-v1.2.3 \  -f Production \  -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 deploy MySolution \  -v 1.2.3 \  -d MySolution-Prod-v1.2.3 \  -f Production \  -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

Deployment naming conventions

Choose meaningful deployment names that include:

  • Solution name
  • Environment identifier
  • Version or date

Examples:

MySolution-Dev-v1.2.3MySolution-Test-2025-01-15MySolution-Prod-Release-1.2.3InvoiceProcessing-Production-v2.0.0MySolution-Dev-v1.2.3MySolution-Test-2025-01-15MySolution-Prod-Release-1.2.3InvoiceProcessing-Production-v2.0.0

This makes it easier to track and manage deployments across environments.

What happens during deployment

When you run the deploy command:

  1. The package is validated in Solutions.
  2. A deployment configuration is created.
  3. The deployment is associated with the target folder.
  4. Environment-specific bindings are initialized.
  5. The deployment is prepared but not yet active.

The Solution does not start executing processes until you activate it.

Activating a deployment

The deploy-activate command makes a deployment live and operational.

Command syntax

uipcli solution deploy-activate <deployment-name> [options]uipcli solution deploy-activate <deployment-name> [options]

Parameters:

ParameterDescriptionRequired
<deployment-name>Name of the deployment to activateYes
-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 deploy-activate MySolution-Prod-v1.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 deploy-activate MySolution-Prod-v1.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

What happens during activation

When you activate a deployment:

  1. The deployment becomes the active version in the target folder.
  2. Triggers are activated.
  3. Any previously active deployment in the same folder is deactivated.

CI/CD pipeline integration

Complete deployment workflow

steps:  # 1. Pack the Solution  - name: Pack Solution    run: |      uipcli solution pack ./MySolution \        --output ./packages \        --version "1.0.${{ github.run_number }}"  # 2. Upload to Solutions Management  - name: Upload Package    run: |      uipcli solution upload-package ./packages/MySolution.1.0.${{ 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.Packages Solutions.Packages.Write"  # 3. Deploy to target environment  - name: Deploy Solution    run: |      uipcli solution deploy MySolution \        -v "1.0.${{ github.run_number }}" \        -d "MySolution-Prod-v1.0.${{ github.run_number }}" \        -f Production \        -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"  # 4. Activate the deployment  - name: Activate Deployment    run: |      uipcli solution deploy-activate "MySolution-Prod-v1.0.${{ github.run_number }}" \        -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"steps:  # 1. Pack the Solution  - name: Pack Solution    run: |      uipcli solution pack ./MySolution \        --output ./packages \        --version "1.0.${{ github.run_number }}"  # 2. Upload to Solutions Management  - name: Upload Package    run: |      uipcli solution upload-package ./packages/MySolution.1.0.${{ 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.Packages Solutions.Packages.Write"  # 3. Deploy to target environment  - name: Deploy Solution    run: |      uipcli solution deploy MySolution \        -v "1.0.${{ github.run_number }}" \        -d "MySolution-Prod-v1.0.${{ github.run_number }}" \        -f Production \        -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"  # 4. Activate the deployment  - name: Activate Deployment    run: |      uipcli solution deploy-activate "MySolution-Prod-v1.0.${{ github.run_number }}" \        -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"

Gated deployments with manual approval

You can separate deploy and activate steps to implement approval workflows:

# Stage 1: Deploy (automated)- stage: DeployToProduction  jobs:  - job: Deploy    steps:    - script: |        uipcli solution deploy MySolution -v $(version) -d MySolution-Prod-$(version) -f Production ...      displayName: 'Prepare Production Deployment'# Stage 2: Activate (requires approval)- stage: ActivateProduction  dependsOn: DeployToProduction  # Manual approval gate configured in Azure DevOps  jobs:  - deployment: Activate    environment: 'Production'    steps:    - script: |        uipcli solution deploy-activate MySolution-Prod-$(version) ...      displayName: 'Activate Production Deployment'# Stage 1: Deploy (automated)- stage: DeployToProduction  jobs:  - job: Deploy    steps:    - script: |        uipcli solution deploy MySolution -v $(version) -d MySolution-Prod-$(version) -f Production ...      displayName: 'Prepare Production Deployment'# Stage 2: Activate (requires approval)- stage: ActivateProduction  dependsOn: DeployToProduction  # Manual approval gate configured in Azure DevOps  jobs:  - deployment: Activate    environment: 'Production'    steps:    - script: |        uipcli solution deploy-activate MySolution-Prod-$(version) ...      displayName: 'Activate Production Deployment'

Multi-environment promotion

Deploy the same version to multiple environments sequentially:

# Deploy to Devuipcli solution deploy MySolution -v 1.2.3 -d MySolution-Dev-1.2.3 -f Dev ...uipcli solution deploy-activate MySolution-Dev-1.2.3 ...# Deploy to Testuipcli solution deploy MySolution -v 1.2.3 -d MySolution-Test-1.2.3 -f Test ...uipcli solution deploy-activate MySolution-Test-1.2.3 ...# Deploy to Production (after approval)uipcli solution deploy MySolution -v 1.2.3 -d MySolution-Prod-1.2.3 -f Production ...uipcli solution deploy-activate MySolution-Prod-1.2.3 ...# Deploy to Devuipcli solution deploy MySolution -v 1.2.3 -d MySolution-Dev-1.2.3 -f Dev ...uipcli solution deploy-activate MySolution-Dev-1.2.3 ...# Deploy to Testuipcli solution deploy MySolution -v 1.2.3 -d MySolution-Test-1.2.3 -f Test ...uipcli solution deploy-activate MySolution-Test-1.2.3 ...# Deploy to Production (after approval)uipcli solution deploy MySolution -v 1.2.3 -d MySolution-Prod-1.2.3 -f Production ...uipcli solution deploy-activate MySolution-Prod-1.2.3 ...

Rollback strategy

To roll back to a previous version:

  1. Deploy the previous version with a new deployment name.
  2. Activate the previous version deployment.
  3. Optionally uninstall the newer deployment.
# Roll back to v1.2.2uipcli solution deploy MySolution -v 1.2.2 -d MySolution-Prod-Rollback-1.2.2 -f Production ...uipcli solution deploy-activate MySolution-Prod-Rollback-1.2.2 ...# Roll back to v1.2.2uipcli solution deploy MySolution -v 1.2.2 -d MySolution-Prod-Rollback-1.2.2 -f Production ...uipcli solution deploy-activate MySolution-Prod-Rollback-1.2.2 ...

Next steps

After deploying and activating Solutions, you can:

  1. Monitor execution in Orchestrator.
  2. Uninstall deployments when no longer needed.
  3. Deploy new versions following the same workflow.

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.