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」,提示连接成功后保存全局配置
- Server ID:自定义全局唯一标识,比如
步骤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
相关产品推荐
相关产品推荐

