我正在使用Cake构建一个带有.csproj文件的ASP.NET Core 1.1。我需要将源推送到Github并将包发布到MyGet。目前我有脚本:
String target = Argument<String>("target", "Default");
Task("Clean").Does(() => {
if (DirectoryExists("./build"))
DeleteDirectory("./build", true);
CreateDirectory("./build");
});
Task("Restore").Does(() => {
FilePathCollection projects = GetFiles("./**/*.csproj");
foreach(FilePath project in projects)
DotNetCoreRestore(project.FullPath);
});
Task("Build").IsDependentOn("Clean").IsDependentOn("Restore").Does(() => {
FilePathCollection projects = GetFiles("./**/*.csproj");
foreach(FilePath project in projects)
DotNetCoreBuild(project.FullPath);
});
Task("Test").IsDependentOn("Build").Does(() => {
FilePathCollection projects = GetFiles("./test/**/*.csproj");
foreach(FilePath project in projects)
DotNetCoreTest(project.FullPath);
});
Task("Pack").IsDependentOn("Test").Does(() => {
DotNetCorePack("./src/MyProject.csproj", new DotNetCorePackSettings { OutputDirectory = "./build/MyProject/" });
});
Task("Default").IsDependentOn("Pack");
RunTarget(target);
我如何做以下事项:
1.根据csproj文件的版本增加修订号;
2.将项目推送到Github;
3.将包推送到MyGet。
答案 0 :(得分:2)
根据您的一些评论,我稍微更新了这个答案......
我通常不使用Cake将更改推送回源控件存储库。相反,我在源代码控制存储库中提交的提交会导致我的构建被触发,通常使用某种形式的Continuous Integration Server,如AppVeyor或TeamCity。这样,您询问的提交消息将始终由用户知道,因为他们正在进行提交,并将知道已更改的内容。通过使用这种方法,存储库中没有自动提交,个人而言,我认为应该如此。
基于以上所述,您只需要提到的Release目标。作为构建过程的一部分,GitVersion将声明版本号,并允许您使用该版本号创建NuGet包(然后不需要额外提交到存储库中),然后您可以推送到NuGet.org,和GitHub。