UiPath Documentation
cicd-integrations
2025.10
true
CI/CD 集成用户指南
重要 :
请注意,此内容已使用机器翻译进行了部分本地化。 新发布内容的本地化可能需要 1-2 周的时间才能完成。

管理 NuGet 订阅源

本页介绍三个 CLI 参数,这些参数用于控制uipcli在解决包依赖项时参考的 NuGet 订阅源,并展示每个参数的使用方法。

相同的参数适用于独立 RPA 项目解决方案

UiPath CLI 如何解析订阅源

默认情况下, uipcli解析三个来源的包,并按以下顺序合并:

  1. CLI 附带的内置订阅源
    • https://pkgs.dev.azure.com/uipath/Public.Feeds/_packaging/UiPath-Official/nuget/v3/index.json
    • https://gallery.uipath.com/api/v2
    • https://api.nuget.org/v3/index.json
    • C:\Program Files\Microsoft SDKs\NuGetPackages (如果此路径位于当前代理上)
    • C:\Program Files (x86)\Microsoft SDKs\NuGetPackages (如果此路径位于当前代理上)
  2. 运行 CLI 的计算机上的主机级别 NuGet 配置,通常是%AppData%\NuGet\NuGet.Config (用户级别)和%ProgramFiles(x86)%\NuGet\Config (计算机级别)。
  3. 您传递给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.comgallery.uipath.comapi.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 订阅源等效项,因为系统未查阅其他来源。

此页面有帮助吗?

连接

需要帮助? 支持

想要了解详细内容? UiPath Academy

有问题? UiPath 论坛

保持更新