咨询:C#项目CI/CD本地工件管理的通用实践方案
针对你的场景,以下是几种实用的本地/内网工件管理方案,无需付费工具,适合新手快速落地:
1. 本地文件系统仓库(零成本最快上手)
直接在内网机器(比如Jenkins所在服务器)上创建分层目录结构,按项目名-版本号-构建环境归类工件,示例目录结构:
/artifacts/ /MyCSharpBackend/ /v1.0.0/ /Release/ MyBackend.dll MyBackend.pdb MyBackend.nupkg /v1.0.1-hotfix/ /Release/ ... /MyCSharpClient/ /v2.3.0/ /Debug/ ...
Jenkins构建完成后,用Windows的robocopy或者Linux的rsync命令把生成的工件同步到这个目录。其他项目引用时,直接在NuGet配置里添加这个本地目录作为源:
dotnet nuget add source /artifacts/MyCSharpBackend/ --name LocalBackendFeed
记得给目录设置权限:只允许Jenkins服务账号有写入权限,开发人员只读,避免误删。
2. 免费开源工件仓库工具(规范管理首选)
虽然经理提到的Artifactory/Nexus是付费商业版,但它们都有完全免费的开源版本(Nexus OSS、JFrog Artifactory Community Edition),完全符合你的需求。这些工具能提供:
- 自动版本管理、工件搜索
- 权限控制(比如分项目读写权限)
- 支持NuGet、Docker镜像等多种工件类型
部署也简单,用Docker就能快速启动,不需要复杂配置,比纯文件系统更规范,适合长期维护。
3. Git LFS存储小体积工件(无需额外服务)
如果你的工件体积不大(单个文件<100MB),可以用Bitbucket支持的Git LFS(大文件存储)把工件存在代码仓库里。只需在项目根目录添加.gitattributes文件:
*.nupkg filter=lfs diff=lfs merge=lfs -text *.dll filter=lfs diff=lfs merge=lfs -text
构建完成后把工件提交到Git LFS仓库,其他项目拉取代码时就能获取到对应工件。注意Bitbucket的LFS有存储空间限制,大体积工件不适合用这个方案。
4. 内网共享目录(跨机器访问方便)
在内网服务器上创建SMB(Windows)或Samba(Linux)共享目录,配置好访问权限。Jenkins构建后通过xcopy或smbclient把工件上传到共享目录,开发人员或其他构建任务可以通过网络路径(比如\\192.168.1.100\artifacts)访问,NuGet也能直接把这个共享目录作为源。
实用注意事项
- 给每个工件打上语义化版本号,比如
v{主版本}.{次版本}.{修订号},绝对不要覆盖旧版本,方便回滚。 - 定期清理过期工件,比如保留最近3个月的构建版本,节省存储空间。
- 做好备份:每周把工件目录同步到备用存储设备,防止数据丢失。
内容的提问来源于stack exchange,提问作者Ricardo Woedl

