UiPath Documentation
uipath-cli
latest
false
重要 :
请注意,此内容已使用机器翻译进行了本地化。 新发布内容的本地化可能需要 1-2 周的时间才能完成。

UiPath CLI 用户指南

操作方法:打包并发布解决方案

此页面将选取您的第一个管道停止的位置。它假设您已经在单个租户上运行了三命令流程,现在希望在开发 → 阶段 → 产品阶段交付相同的解决方案,固定版本以提高可重复性,并确切知道如何撤销错误的版本。

如果您尚未端到端打包解决方案,请先阅读您的第一个管道— 此处的一切内容均基于uip solution pack / publish / deploy run构建。

本指南的涵盖内容

选择一个版本,然后冻结

uip solution pack --version同时控制.zip文件名和每个下游步骤消耗的packageVersion 。默认值为1.0.0 ;真实的管道应显式传递它。

语义版本控制 ( MAJOR.MINOR.PATCH ) 是 Orchestrator 订阅源的最佳排序方案。两个具体规则决定了干净历史记录与不可排序的历史记录的区别:

  1. 切勿重复使用版本。uip solution publish将拒绝订阅源中已存在的name+version对。将拒绝的发布视为构建错误,而不是通过重新运行pack来“修复”的问题。
  2. 在版本核心中使用内部版本元数据,而非时间戳。相对于1.2.0-rc.3优先使用1.2.0.20260424 。前者在订阅源中正确排序;后者在技术上是有效的 semver,但难以一目了然。

典型的 CI 配置:

# Build number from the pipeline, tag from git, combined for a valid pre-release
VERSION="1.2.0-ci.${BUILD_NUMBER}"

uip solution pack ./my-solution ./dist \
  --name my-solution \
  --version "$VERSION"

uip solution publish "./dist/my-solution.${VERSION}.zip"
# Build number from the pipeline, tag from git, combined for a valid pre-release
VERSION="1.2.0-ci.${BUILD_NUMBER}"

uip solution pack ./my-solution ./dist \
  --name my-solution \
  --version "$VERSION"

uip solution publish "./dist/my-solution.${VERSION}.zip"

.zip路径是确定性 ( <outputDir>/<name>.<version>.zip ) — 请参阅uip solution pack — 因此脚本无需解析 JSON 即可计算它。

跨租户提升一个包

每个版本打包并发布一次,然后将相同的工件重新部署到每个租户中。按环境风险重新打包;根据(name, version)重新发布相同版本也具有幂等性,因此,如果您错误地发布两次,也不会中断。即便如此,一次构建=一次发布是最简洁的合同。

uip solution publish和每个uip solution deploy *子命令接受--tenant <tenant-name> (简称: -t )以覆盖活动会话选择的租户。对于 CI 升级作业:

VERSION="$1"   # e.g. 1.2.0-ci.456

for tenant in dev stage prod; do
  uip solution publish "./dist/my-solution.${VERSION}.zip" --tenant "$tenant"

  uip solution deploy run \
    --name "my-solution-${tenant}" \
    --package-name my-solution \
    --package-version "$VERSION" \
    --folder-name MySolution \
    --folder-path Shared \
    --tenant "$tenant"
done
VERSION="$1"   # e.g. 1.2.0-ci.456

for tenant in dev stage prod; do
  uip solution publish "./dist/my-solution.${VERSION}.zip" --tenant "$tenant"

  uip solution deploy run \
    --name "my-solution-${tenant}" \
    --package-name my-solution \
    --package-version "$VERSION" \
    --folder-name MySolution \
    --folder-path Shared \
    --tenant "$tenant"
done

两个注意事项:

  • publish对租户而言具有幂等性。发布相同的(name, version)两次将返回现有的PackageVersionKey ,而不是复制 — 请参阅uip solution publish
  • 部署名称应在租户范围内。使用my-solution-prod而非my-solution可使uip solution deploy list具有可读性,并可防止意外的跨环境deploy uninstall调用。--name标识部署记录,而不是文件夹。

参数化每个环境的配置

如果您的解决方案包含因租户而异的资源(队列、资产),请生成一次配置文件,并使用deploy config set根据环境进行编辑:

uip solution deploy config get my-solution --package-version "$VERSION" -d ./deploy-config.json

# Production uses a bigger retry count
uip solution deploy config set ./deploy-config.json MyQueue maxNumberOfRetries 5

uip solution deploy run \
  --name my-solution-prod \
  --package-name my-solution \
  --package-version "$VERSION" \
  --folder-name MySolution \
  --folder-path Shared \
  --config-file ./deploy-config.json \
  --tenant prod
uip solution deploy config get my-solution --package-version "$VERSION" -d ./deploy-config.json

# Production uses a bigger retry count
uip solution deploy config set ./deploy-config.json MyQueue maxNumberOfRetries 5

uip solution deploy run \
  --name my-solution-prod \
  --package-name my-solution \
  --package-version "$VERSION" \
  --folder-name MySolution \
  --folder-path Shared \
  --config-file ./deploy-config.json \
  --tenant prod

使用deploy config link传递现有的 Orchestrator 资源,而不是新创建的资源:

uip solution deploy config link ./deploy-config.json MyQueue \
  --name SharedProductionQueue \
  --folder-path "Shared/Production"
uip solution deploy config link ./deploy-config.json MyQueue \
  --name SharedProductionQueue \
  --folder-path "Shared/Production"

固定 CLI 及其工具

可重现的管道会固定其所依赖的每个工具。CLI 在 npm 上作为@uipath/cli分发; uip solution …@uipath/solution-tool提供。两者都遵循语义化版本。

# Pin the CLI exactly
npm install -g @uipath/cli@1.0.0

# Pre-install tools explicitly so the first command is not slower than the rest
uip tools install @uipath/solution-tool @uipath/orchestrator-tool
# Pin the CLI exactly
npm install -g @uipath/cli@1.0.0

# Pre-install tools explicitly so the first command is not slower than the rest
uip tools install @uipath/solution-tool @uipath/orchestrator-tool

工具版本默认为跟踪 CLI 的 MAJOR.MINOR 行,因此通常单独固定 CLI 就足够了。为了严格遵循每个补丁,请也固定工具:

uip tools install @uipath/solution-tool@1.0.2
uip tools install @uipath/solution-tool@1.0.2

回滚

很少会出现中断生产的情况;在执行重要操作时回滚。回滚有两个级别 —重新部署已知良好的版本(快速)并删除损坏的工件(干净)。

快速:重新部署以前的版本

如果错误的部署处于活动状态,请安装以前的版本来覆盖之前的版本,而不是先卸载。部署名称保持不变;仅--package-version作出更改:

uip solution deploy run \
  --name my-solution-prod \
  --package-name my-solution \
  --package-version 1.1.9 \
  --folder-name MySolution \
  --folder-path Shared \
  --tenant prod
uip solution deploy run \
  --name my-solution-prod \
  --package-name my-solution \
  --package-version 1.1.9 \
  --folder-name MySolution \
  --folder-path Shared \
  --tenant prod

这是常见情况。Orchestrator 为配置密钥重新激活新部署,并保持文件夹资源不变。

清理:卸载部署

如果解决方案配置了您不需要的资源(队列、资产、触发器),请调用uip solution deploy uninstall

uip solution deploy uninstall my-solution-prod --tenant prod
uip solution deploy uninstall my-solution-prod --tenant prod

这将删除所有已配置的资源和“解决方案”文件夹。这是一项破坏性操作,在运行之前,请使用deploy list确认部署名称,尤其是在租户循环中。

停用工件

一旦没有任何内容引用错误版本,请使用uip solution packages delete从租户订阅源中将其删除:

uip solution packages delete my-solution 1.2.0-ci.456 --tenant prod
uip solution packages delete my-solution 1.2.0-ci.456 --tenant prod

无法软删除;这是永久性的。将删除操作保持在一个小窗口内 — 该命令一次仅接受一个packageVersion ,因此编写批量清理的脚本需要listfilterxargs模式。请参阅packages delete参考资料以获取完整示例。

正在检查您拥有的内容

在执行上述任何操作之前,请获取基本事实:

# What is in the feed?
uip solution packages list --take 50 \
  --output-filter "Data[?packageName=='my-solution']"

# What is deployed?
uip solution deploy list --folder-path Shared --take 50
# What is in the feed?
uip solution packages list --take 50 \
  --output-filter "Data[?packageName=='my-solution']"

# What is deployed?
uip solution deploy list --folder-path Shared --take 50

CI 就绪代码片段

组合这些步骤 — 任何 CI 系统都可以按原样运行的 Shell 脚本:

#!/usr/bin/env bash
set -euo pipefail

VERSION="$1"                          # e.g. 1.2.0-ci.456
SOLUTION_DIR="./my-solution"
OUT_DIR="./dist"

# 1. Log in (External App in CI)
uip login \
  --client-id env.UIPATH_CLIENT_ID \
  --client-secret env.UIPATH_CLIENT_SECRET \
  --tenant "$UIPATH_TENANT_DEV"

# 2. Pack once
uip solution pack "$SOLUTION_DIR" "$OUT_DIR" \
  --name my-solution \
  --version "$VERSION"

PKG="${OUT_DIR}/my-solution.${VERSION}.zip"

# 3. Publish + deploy to each tenant
for env_name in dev stage prod; do
  tenant_var="UIPATH_TENANT_$(echo "$env_name" | tr a-z A-Z)"
  tenant="${!tenant_var}"

  uip solution publish "$PKG" --tenant "$tenant"
  uip solution deploy run \
    --name "my-solution-${env_name}" \
    --package-name my-solution \
    --package-version "$VERSION" \
    --folder-name MySolution \
    --folder-path Shared \
    --tenant "$tenant"
done
#!/usr/bin/env bash
set -euo pipefail

VERSION="$1"                          # e.g. 1.2.0-ci.456
SOLUTION_DIR="./my-solution"
OUT_DIR="./dist"

# 1. Log in (External App in CI)
uip login \
  --client-id env.UIPATH_CLIENT_ID \
  --client-secret env.UIPATH_CLIENT_SECRET \
  --tenant "$UIPATH_TENANT_DEV"

# 2. Pack once
uip solution pack "$SOLUTION_DIR" "$OUT_DIR" \
  --name my-solution \
  --version "$VERSION"

PKG="${OUT_DIR}/my-solution.${VERSION}.zip"

# 3. Publish + deploy to each tenant
for env_name in dev stage prod; do
  tenant_var="UIPATH_TENANT_$(echo "$env_name" | tr a-z A-Z)"
  tenant="${!tenant_var}"

  uip solution publish "$PKG" --tenant "$tenant"
  uip solution deploy run \
    --name "my-solution-${env_name}" \
    --package-name my-solution \
    --package-version "$VERSION" \
    --folder-name MySolution \
    --folder-path Shared \
    --tenant "$tenant"
done

使用set -euo pipefail时,任何故障都会中止故障租户上的循环。之后的租户不受影响 — 部分升级可以重新运行或回滚。

后续步骤

此页面有帮助吗?

连接

需要帮助? 支持

想要了解详细内容? UiPath Academy

有问题? UiPath 论坛

保持更新