- Overview
- Get started
- Concepts
- Using UiPath CLI
- How-to guides
- CI/CD recipes
- Command reference
- Overview
- Exit codes
- Global options
- uip codedagent
- uip coder
- uip context-grounding
- uip docsai
- uip function
- uip guardrails
- uip llm-configuration
- uip llm-gateway
- uip model-hub
- add-test-data-entity
- add-test-data-queue
- add-test-data-variation
- analyze
- build
- create-project
- diff
- find-activities
- get-analyzer-rules
- get-default-activity-xaml
- get-errors
- get-manual-test-cases
- get-manual-test-steps
- get-library-object-repository
- get-object-repository
- get-versions
- get-workflow-example
- indicate-application
- indicate-element
- inspect-package
- install-data-fabric-entities
- install-or-update-packages
- list-data-fabric-entities
- list-instances
- list-workflow-examples
- pack
- publish
- remote
- restore
- run, debug & execution
- run-file
- search-templates
- start-studio
- stop-execution
- tm
- uia
- uip tasks
- uip traces
- uip traces feedback
- Migration
- Reference & support
Syntax and options for `uip solution publish`, which uploads a solution `.zip` to a solution feed.
uip solution publish uploads a solution .zip — produced by uip solution pack — to a solution feed. By default the package lands in the tenant feed; pass --personal-workspace to target the current user's Personal Workspace feed instead, or --feed <name-or-key> to target a specific folder feed. Once a package is published, it is visible to uip solution packages list and can be deployed with uip solution deploy run.
Publish is an authenticated operation. Run uip login first.
A published package is not yet deployed. Publishing only uploads the .zip to a feed — it does not create an Orchestrator folder, provision resources, or make the package runnable. Deploy it with uip solution deploy run before it appears in the processes list or can be started as a job.
Synopsis
uip solution publish <packagePath> \
[--personal-workspace | --feed <name-or-key>] \
[--package-name <name>] [--package-version <version>] \
[--wait] [--timeout <seconds>] [--poll-interval <ms>] \
[--login-validity <minutes>]
uip solution publish <packagePath> \
[--personal-workspace | --feed <name-or-key>] \
[--package-name <name>] [--package-version <version>] \
[--wait] [--timeout <seconds>] [--poll-interval <ms>] \
[--login-validity <minutes>]
The command honours the global options and returns the standard exit codes.
Arguments
<packagePath>(required) — Path to a.zippackage produced byuip solution pack. The file must exist and have a.zipextension; anything else fails with aFailureresult. A.nupkg(a single project's package, e.g. fromuip maestro flow pack) is explicitly rejected — pack the enclosing solution instead.
Options
| Long | Value | Default | Description |
|---|---|---|---|
--personal-workspace | flag | off | Upload into the current user's Personal Workspace feed instead of the tenant feed. Resolves the workspace folder key from Orchestrator automatically. Mutually exclusive with --feed. |
--feed <name-or-key> | text | — | Publish into a feed by its name or folder key (from solution feeds list) instead of the tenant feed. Mutually exclusive with --personal-workspace. |
--package-name <name> | text | name from the .zip | Publish under this name instead of the one the .zip was packed with. Rewrites the archive's solutionMetadata.json in memory (with a fresh package version key) — the file on disk is untouched, and bundled project packages keep their own names/versions. Only works on a package produced by uip solution pack. |
--package-version <version> | text | version from the .zip | Publish under this version instead of the one the .zip was packed with. Use it to clear a "version already exists" rejection when you have the packed .zip but not the solution source, without re-packing. Same in-memory rewrite as --package-name. |
--wait | flag | off | Wait until the published package reaches Ready or Active state before returning. |
--timeout <seconds> | seconds | 360 | Package-state polling timeout (only relevant with --wait). |
--poll-interval <ms> | ms | 5000 | Milliseconds between package state polls. |
--login-validity <minutes> | minutes | 10 | Minimum minutes before token expiration to trigger a refresh. |
Examples
Minimal
uip solution publish ./dist/my-solution_1.0.0.zip
uip solution publish ./dist/my-solution_1.0.0.zip
Republish the same .zip under a new version
uip solution publish ./dist/my-solution_1.0.0.zip --package-version 1.0.1
uip solution publish ./dist/my-solution_1.0.0.zip --package-version 1.0.1
Use this when the feed rejected the package because its name+version already exists and you have the .zip but not the solution source. --package-name works the same way for the name.
Publish to the current user's Personal Workspace
uip solution publish ./dist/my-solution_1.0.0.zip --personal-workspace
uip solution publish ./dist/my-solution_1.0.0.zip --personal-workspace
Publish into a named feed
uip solution publish ./dist/my-solution_1.0.0.zip --feed Finance
uip solution publish ./dist/my-solution_1.0.0.zip --feed Finance
Scripting — chain pack → publish and capture the package version key
uip solution pack ./my-solution ./dist --version 1.2.0
KEY=$(uip solution publish ./dist/my-solution_1.2.0.zip --output-filter "Data.PackageVersionKey" --output plain)
echo "Published version key: $KEY"
uip solution pack ./my-solution ./dist --version 1.2.0
KEY=$(uip solution publish ./dist/my-solution_1.2.0.zip --output-filter "Data.PackageVersionKey" --output plain)
echo "Published version key: $KEY"
Data shape (--output json)
{
"Code": "SolutionPublish",
"Data": {
"Status": "Package is published to Orchestrator but not yet deployed",
"PackageVersionKey": "a1b2c3d4-0000-0000-0000-000000000001",
"PackageName": "my-solution",
"PackageVersion": "1.0.0",
"State": "Ready",
"NextSteps": "Package is published to Orchestrator but not yet deployed. Deploy/activate it into an Orchestrator folder before it appears in the processes list or can be started as a job."
}
}
{
"Code": "SolutionPublish",
"Data": {
"Status": "Package is published to Orchestrator but not yet deployed",
"PackageVersionKey": "a1b2c3d4-0000-0000-0000-000000000001",
"PackageName": "my-solution",
"PackageVersion": "1.0.0",
"State": "Ready",
"NextSteps": "Package is published to Orchestrator but not yet deployed. Deploy/activate it into an Orchestrator folder before it appears in the processes list or can be started as a job."
}
}
PackageVersionKey— GUID identifying this specific version of the package in the feed.PackageName/PackageVersion— the values from the package (or the--package-name/--package-versionoverride); re-use them ondeploy run --package-name --package-version.State— only present when--waitwas used; the terminal package state (ReadyorActive).
Version conflicts
Publishing a package whose name + version already exists in the target feed fails with a descriptive error. Either:
- Increment the version and re-pack:
uip solution pack <solution-path> <output-path> --version <new-version>, or - Republish the same
.zipunder a new version without re-packing:uip solution publish <package-path> --package-version <new-version>.
Related commands
uip solution pack— produces the.zipto publish.uip solution feeds list— find a feed's name or key for--feed.uip solution packages list— see published versions.uip solution packages delete— remove a published version.uip solution deploy run— deploy the published package to Orchestrator.
See also
- Your first pipeline — pack → publish → deploy run walkthrough.
- Authentication — session management.
uip solutionoverview.
- Synopsis
- Arguments
- Options
- Examples
- Minimal
- Republish the same .zip under a new version
- Publish to the current user's Personal Workspace
- Publish into a named feed
- Scripting — chain pack → publish and capture the package version key
- Data shape (--output json)
- Version conflicts
- Related commands
- See also