You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins流水线配置Nuget.config对接JFrog Artifactory步骤

Jenkins对接JFrog Artifactory实现.NET Core依赖拉取全流程配置

前置准备确认

  • 已在JFrog侧完成NuGet类型的本地仓库、nuget.org代理远程仓库、聚合前两者的虚拟仓库创建
  • Jenkins构建节点已安装对应项目版本的.NET Core SDK,执行dotnet --version可正常返回版本号

步骤1:Jenkins安装必备插件

  • 进入Jenkins「系统管理→插件管理」,搜索Artifactory Plugin安装,安装完成后重启Jenkins生效
  • 可选:如果需要用JFrog CLI实现更稳定的依赖拉取、构建缓存、产物上传能力,同步在构建节点安装对应版本的JFrog CLI

步骤2:Jenkins全局配置JFrog连接

  • 进入Jenkins「系统管理→系统配置」,找到JFrog Artifactory配置区块
  • 点击「Add Artifactory Server」,填写配置项:
    • Server ID:自定义全局唯一标识,比如jfrog-prod,后续流水线直接通过该ID引用实例
    • Platform URL:填写你的JFrog平台访问根地址,比如https://artifactory.your-company.com
    • 认证凭据:点击「添加」选择凭证类型,推荐使用最小权限Access Token:提前在JFrog后台生成仅拥有NuGet虚拟仓库拉取权限的Token,存入Jenkins凭证后选中即可
    • 点击「Test Connection」,提示连接成功后保存全局配置

步骤3:配置NuGet拉取规则

二选一即可,优先选流水线动态配置,避免侵入项目代码:

  • 项目静态配置:在代码库根目录新增nuget.config文件,清空默认公共源,指向JFrog虚拟仓库地址,示例:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />
    <add key="JFrog-NuGet" value="https://artifactory.your-company.com/artifactory/api/nuget/你的nuget虚拟仓库名" />
  </packageSources>
  <packageSourceCredentials>
    <!-- 注意不要提交明文密码到代码库,生产环境建议用流水线动态注入凭证 -->
  </packageSourceCredentials>
</configuration>
  • 流水线动态配置:不需要修改项目代码,在restore阶段动态指定源地址和认证信息,凭证统一存在Jenkins凭证管理中,避免明文泄露

步骤4:编写Jenkins流水线逻辑

参考声明式流水线示例,替换成你自己的仓库、项目路径参数即可:

pipeline {
  agent any
  environment {
    // 引用全局配置的JFrog实例ID
    JFROG_SERVER_ID = 'jfrog-prod'
    // 替换为你的NuGet虚拟仓库键名
    NUGET_VIRTUAL_REPO = 'nuget-virtual-prod'
    // 替换为你的JFrog访问地址
    JFROG_URL = 'https://artifactory.your-company.com'
    // 引用Jenkins中存储的JFrog认证凭证,提前将账号/Token存为「用户名和密码」类型凭证,ID设为jfrog-cred
    JFROG_CRED = credentials('jfrog-cred')
  }
  stages {
    stage('拉取代码') {
      steps {
        checkout scm
      }
    }
    stage('还原依赖') {
      steps {
        sh '''
          dotnet restore ./你的解决方案文件名.sln \
            --source "${JFROG_URL}/artifactory/api/nuget/${NUGET_VIRTUAL_REPO}" \
            --verbosity minimal \
            --configfile <(echo "<?xml version='1.0' encoding='utf-8'?><configuration><packageSourceCredentials><JFrog-NuGet><add key='Username' value='${JFROG_CRED_USR}'/><add key='ClearTextPassword' value='${JFROG_CRED_PSW}'/></JFrog-NuGet></packageSourceCredentials></configuration>")
        '''
        // 如果使用JFrog CLI,替换为以下命令,自动处理认证和缓存,拉取稳定性更高
        // sh '''
        //   jfrog c use ${JFROG_SERVER_ID}
        //   jfrog dotnet-config --server-id-resolve=${JFROG_SERVER_ID} --repo-resolve=${NUGET_VIRTUAL_REPO}
        //   jfrog dotnet restore ./你的解决方案文件名.sln
        // '''
      }
    }
    // 后续按需添加编译、单元测试、构建产物上传等阶段即可
  }
}

常见排障点

  • 还原报401未授权:检查JFrog侧给Token/账号分配的权限,确认至少拥有虚拟仓库的read、download、resolve权限
  • 还原报404找不到包:检查虚拟仓库是否正确聚合了NuGet官方远程代理仓库、私有本地仓库,NuGet API地址拼写是否和JFrog后台展示的一致
  • 连接超时:检查构建节点到JFrog服务的网络策略,确认443/80端口放通,无代理、防火墙拦截
  • 首次运行建议开启dotnet restore的详细日志,定位具体报错点

内容的提问来源于stack exchange,提问作者Prateek T L

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 10:15:37