进行CI时,我可以检测Nuget包的来源是否改变了吗?

时间:2018-08-30 14:22:57

标签: .net .net-core continuous-integration nuget

我有一个解决方案,其中包含多个netstandard2.0项目,每个项目都构建自己的Nuget软件包:

+ MySln.sln
--+ MySln.ProjectOne
--+ MySln.ProjectTwo
--+ MySln.ProjectThree

我的CI脚本可以解决该问题,基本上就是这样:

dotnet restore MySln.sln
dotnet pack /p:PackageVersion=$(buildVersion) MySln.sln
                --configuration release -o $(artifactDirectory)

这将创建三个Nuget包,每个ProjectOne,ProjectTwo和ProjectThree一个。

问题在于CI会在任何提交时触发,因此即使我只是例如对ProjectTwo或与任何项目无关的内容进行更改,我也会构建所有三个。

我现在想知道最好的方法(即:最简单的维护,尤其是在添加新的Projects时)将是仅发布实际源发生更改的Nuget软件包。我不能只是做一个二进制差异,因为每个编译器的编译程序集都会由于编译器时间戳的不同而不同,而版本号也会因为构建服务器而每次都不同。

我可以考虑做一些事情,以对软件包的所有源进行指纹识别(其中不仅仅包括.cs文件,例如嵌入式资源,许可证文件等),但是在构建自己的软件包之前,我想知道是否已经有某种通用的解决方案了;我认为其他项目也遇到了这个问题。

*或更明智的话,对每个项目执行git log -n 1 --pretty=format:%H -- MySln.ProjectOne

0 个答案:

没有答案