- 概述
- UiPath CLI
- Azure DevOps 扩展程序
- Jenkins 插件
本页介绍三个 CLI 参数,这些参数用于控制uipcli在解决包依赖项时参考的 NuGet 订阅源,并展示每个参数的使用方法。
相同的参数适用于独立 RPA 项目和解决方案。
UiPath CLI 如何解析订阅源
默认情况下, uipcli解析三个来源的包,并按以下顺序合并:
- CLI 附带的内置订阅源:
https://pkgs.dev.azure.com/uipath/Public.Feeds/_packaging/UiPath-Official/nuget/v3/index.jsonhttps://gallery.uipath.com/api/v2https://api.nuget.org/v3/index.jsonC:\Program Files\Microsoft SDKs\NuGetPackages(如果此路径位于当前代理上)C:\Program Files (x86)\Microsoft SDKs\NuGetPackages(如果此路径位于当前代理上)
- 运行 CLI 的计算机上的主机级别 NuGet 配置,通常是
%AppData%\NuGet\NuGet.Config(用户级别)和%ProgramFiles(x86)%\NuGet\Config(计算机级别)。 - 您传递给
nuget.config的自定义--nugetConfigFilePath。
您可以使用三个参数自定义此默认分辨率:
| 参数 | 控制的内容 |
|---|---|
--nugetConfigFilePath | 从您提供的nuget.config文件中添加订阅源。 |
--disableBuiltInNugetFeeds | 丢弃第 1 层(内置订阅源)。 |
--excludeConfiguredSources | 丢弃第 1 层和第 2 层。仅保留--nugetConfigFilePath订阅源。 |
当使用配置文件运行uipcli时,每个参数都有 JSON 样式的等效项: "nugetConfigFilePath": "..." 、 "disableBuiltInNugetFeeds": true 、 "excludeConfiguredSources": true 。
添加自定义订阅源 --nugetConfigFilePath
--nugetConfigFilePath将 CLI 指向您希望您希望将其<packageSources>包含在依赖项解析中的nuget.config文件。这是添加私有订阅源(公司 ProGet、 ArtiFactory、Azure Artifacts、内部 Connection 等)的主要方法,而无需在构建代理上修改任何内容。
该文件遵循标准 NuGet 架构:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="MyCustomFeed" value="https://my.corp.example/nuget/v3/index.json" />
</packageSources>
</configuration>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="MyCustomFeed" value="https://my.corp.example/nuget/v3/index.json" />
</packageSources>
</configuration>
在命令行中传递路径:
uipcli package pack "C:\projects\MyProject\project.json" -o "C:\Output" \
--nugetConfigFilePath "C:\ci\nuget.config"
uipcli package pack "C:\projects\MyProject\project.json" -o "C:\Output" \
--nugetConfigFilePath "C:\ci\nuget.config"
从 2018 年 10 月 25 日起,系统将采用端到端文件格式。CLI 将其转发到工作流编译器,后者通过 NuGet 库直接加载该文件。以下指令均有效:
| 指令 | 效果 |
|---|---|
<clear /> 内部 <packageSources> | 在应用文件的其余部分之前,删除继承的源列表 (内置订阅源和主机级别配置)。 |
<packageSourceCredentials> | 每个源的凭据。私有订阅源(JF Robot、Sonnatype 关系、内部 Azure 工件等)的基本身份验证由 NuGet 的原生 HTTP 管道处理,包括 401 质询。 |
<packageSourceMapping> | 限制可以从哪些来源解析包 ID(或 ID 前缀)。 |
<fallbackPackageFolders> | 添加 NuGet 在连接到网络之前会查阅的本地文件夹。适用于离线构建。 |
经过身份验证的私人订阅源(JF Robot、CMS、内部 Azure Artifacts)
在同一文件中声明来源及其凭据。CLI 不需要任何额外参数 — NuGet 客户端会在找到匹配的来源时自动选取凭据:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="UiPath-Internal" value="https://artifactory.contoso.example/api/nuget/v3/uipath-feed/index.json" protocolVersion="3" />
</packageSources>
<packageSourceCredentials>
<UiPath-Internal>
<add key="Username" value="ci-bot" />
<add key="ClearTextPassword" value="%ARTIFACTORY_TOKEN%" />
</UiPath-Internal>
</packageSourceCredentials>
</configuration>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="UiPath-Internal" value="https://artifactory.contoso.example/api/nuget/v3/uipath-feed/index.json" protocolVersion="3" />
</packageSources>
<packageSourceCredentials>
<UiPath-Internal>
<add key="Username" value="ci-bot" />
<add key="ClearTextPassword" value="%ARTIFACTORY_TOKEN%" />
</UiPath-Internal>
</packageSourceCredentials>
</configuration>
通过 CI 密码注入密码,而不是直接注入文件。NuGet 在读取文件时会展开%VAR%格式的环境变量。
限制哪些来源解析哪些包
当您希望来自内部镜像的 UiPath 活动包,但允许其他依赖项属于不同订阅源时,请使用<packageSourceMapping> :
<configuration>
<packageSources>
<add key="UiPath-Internal" value="https://artifactory.contoso.example/api/nuget/v3/uipath-feed/index.json" />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
</packageSources>
<packageSourceMapping>
<packageSource key="UiPath-Internal">
<package pattern="UiPath.*" />
</packageSource>
<packageSource key="nuget.org">
<package pattern="*" />
</packageSource>
</packageSourceMapping>
</configuration>
<configuration>
<packageSources>
<add key="UiPath-Internal" value="https://artifactory.contoso.example/api/nuget/v3/uipath-feed/index.json" />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
</packageSources>
<packageSourceMapping>
<packageSource key="UiPath-Internal">
<package pattern="UiPath.*" />
</packageSource>
<packageSource key="nuget.org">
<package pattern="*" />
</packageSource>
</packageSourceMapping>
</configuration>
在 25.10.18 之前的 CLI 版本上,只有<packageSources> URL 会被转发给打包程序, <clear /> 、 <packageSourceCredentials> 、 <packageSourceMapping>和<fallbackPackageFolders>都会被静默忽略。要将依赖项解析固定到较旧的 CLI 内部版本上的nuget.config ,请将--nugetConfigFilePath与--excludeConfiguredSources结合使用,并改为通过主机的 NuGet 配置提供凭据。
替代方法:将nuget.config放置在 CLI 缓存文件夹中
如果您不想在每次调用时传递参数,可以将nuget.config拖放到缓存uipcli文件夹中。CLI 会自动选取它。
在 Azure DevOps nuget.config中使用自定义
在InstallPlatform步骤之后将nuget.config复制到$(Agent.ToolsDirectory)/uipcli :
trigger:
- main
pool:
vmImage: ubuntu-latest
stages:
- stage: Demo
jobs:
- job: Demo
steps:
- task: UiPathInstallPlatform@6
inputs:
cliVersion: '25.10'
- task: CopyFiles@2
inputs:
SourceFolder: '$(Build.SourcesDirectory)'
Contents: 'nuget.config'
TargetFolder: '$(Agent.ToolsDirectory)/uipcli'
- task: UiPathPack@6
inputs:
versionType: 'AutoVersion'
projectJsonPath: '$(Build.SourcesDirectory)/project.json'
outputPath: '$(Build.ArtifactStagingDirectory)/Output'
traceLevel: 'Information'
trigger:
- main
pool:
vmImage: ubuntu-latest
stages:
- stage: Demo
jobs:
- job: Demo
steps:
- task: UiPathInstallPlatform@6
inputs:
cliVersion: '25.10'
- task: CopyFiles@2
inputs:
SourceFolder: '$(Build.SourcesDirectory)'
Contents: 'nuget.config'
TargetFolder: '$(Agent.ToolsDirectory)/uipcli'
- task: UiPathPack@6
inputs:
versionType: 'AutoVersion'
projectJsonPath: '$(Build.SourcesDirectory)/project.json'
outputPath: '$(Build.ArtifactStagingDirectory)/Output'
traceLevel: 'Information'
在 Jenkins nuget.config中使用自定义
在InstallPlatform步骤之后将nuget.config复制到${WORKSPACE}/CLI :
pipeline {
agent {
label 'jenkins-agent'
}
stages {
stage('Clone') {
steps {
git (
branch: 'main',
url: 'https://github.com/your-org/your-repo.git'
)
}
}
stage('Install Platform') {
steps {
UiPathInstallPlatform (
cliVersion: '25.10',
traceLevel: 'Information'
)
}
}
stage('Copy nuget.config') {
steps {
bat 'copy nuget.config CLI\\nuget.config'
}
}
stage('Pack') {
steps {
UiPathPack (
outputPath: '${WORKSPACE}/Output',
projectJsonPath: '${WORKSPACE}/project.json',
traceLevel: 'Information',
version: AutoVersion()
)
}
}
}
}
pipeline {
agent {
label 'jenkins-agent'
}
stages {
stage('Clone') {
steps {
git (
branch: 'main',
url: 'https://github.com/your-org/your-repo.git'
)
}
}
stage('Install Platform') {
steps {
UiPathInstallPlatform (
cliVersion: '25.10',
traceLevel: 'Information'
)
}
}
stage('Copy nuget.config') {
steps {
bat 'copy nuget.config CLI\\nuget.config'
}
}
stage('Pack') {
steps {
UiPathPack (
outputPath: '${WORKSPACE}/Output',
projectJsonPath: '${WORKSPACE}/project.json',
traceLevel: 'Information',
version: AutoVersion()
)
}
}
}
}
禁用内置订阅源 --disableBuiltInNugetFeeds
--disableBuiltInNugetFeeds从解决方案中删除 UiPath 的内置订阅源。仍会参考主机级别的 NuGet 配置和来自--nugetConfigFilePath的任何订阅源。
此功能适用于以下情况:
- 您的网络阻止
pkgs.dev.azure.com、gallery.uipath.com或api.nuget.org,而是在内部镜像包。 - 您需要一组来自您自己的订阅源,而不是
gallery.uipath.com的确定性活动包版本。
uipcli package pack "C:\projects\MyProject\project.json" -o "C:\Output" \
--nugetConfigFilePath "C:\ci\nuget.config" \
--disableBuiltInNugetFeeds
uipcli package pack "C:\projects\MyProject\project.json" -o "C:\Output" \
--nugetConfigFilePath "C:\ci\nuget.config" \
--disableBuiltInNugetFeeds
限制为仅满足以下条件的自定义订阅源: --excludeConfiguredSources
--excludeConfiguredSources排除内置订阅源以及在运行 CLI 的主机上在用户和计算机级别配置的 NuGet 源(通常为%AppData%\NuGet\NuGet.Config和%ProgramFiles(x86)%\NuGet\Config )。CLI 仅解析--nugetConfigFilePath中定义的订阅源中的包。
此功能适用于以下情况:
- 您需要可重现的隔离内部版本,其中仅会查阅您在版本控制中声明的订阅源。
- 共享的构建智能体具有您不希望进入特定管道的计算机级别订阅源。
- 您正在调试由于主机级别 NuGet 配置不同而导致的“在智能体 A 上有效,在智能体 B 上失败”问题。
uipcli package pack "C:\projects\MyProject\project.json" -o "C:\Output" \
--nugetConfigFilePath "C:\ci\nuget.config" \
--excludeConfiguredSources
uipcli package pack "C:\projects\MyProject\project.json" -o "C:\Output" \
--nugetConfigFilePath "C:\ci\nuget.config" \
--excludeConfiguredSources
确保与--nugetConfigFilePath一起传递的nuget.config声明了项目所需的每个订阅源,包括任何 UiPath 订阅源等效项,因为系统未查阅其他来源。