Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Cake定义版本并将项目推送到Github和MyGet_Github_Asp.net Core_Cakebuild_Myget - Fatal编程技术网

使用Cake定义版本并将项目推送到Github和MyGet

使用Cake定义版本并将项目推送到Github和MyGet,github,asp.net-core,cakebuild,myget,Github,Asp.net Core,Cakebuild,Myget,我正在使用Cake构建一个ASP.NET Core 1.1和.csproj文件。我需要将源代码推送到Github并将包发布到MyGet。现在我有了剧本: String target = Argument<String>("target", "Default"); Task("Clean").Does(() => { if (DirectoryExists("./build")) DeleteDirectory("./build", true); Cr

我正在使用Cake构建一个ASP.NET Core 1.1和.csproj文件。我需要将源代码推送到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);
String target=参数(“目标”,“默认”);
任务(“清理”)。是否(()=>{
如果(目录存在(“./build”))
DeleteDirectory(“./build”,true);
CreateDirectory(“./build”);
});
任务(“还原”)。没有(()=>{
FilePathCollection projects=GetFiles(“./***/*.csproj”);
foreach(项目中的文件路径项目)
DotNetCoreRestore(project.FullPath);
});
任务(“构建”).IsDependentOn(“清理”).IsDependentOn(“还原”).Does(()=>{
FilePathCollection projects=GetFiles(“./***/*.csproj”);
foreach(项目中的文件路径项目)
DotNetCoreBuild(project.FullPath);
});
任务(“测试”).IsDependentOn(“构建”).do(()=>{
FilePathCollection projects=GetFiles(“./test/***.csproj”);
foreach(项目中的文件路径项目)
DotNetCoreTest(project.FullPath);
});
任务(“包”).IsDependentOn(“测试”).do(()=>{
DotNetCorePack(“./src/MyProject.csproj”,新的dotnetcorepacks设置{OutputDirectory=“./build/MyProject/”});
});
任务(“默认”)。IsDependentOn(“包”);
运行目标(target);
如何执行以下操作:
1.根据csproj文件的版本增加修订号
2.将项目推送到Github
3.把包裹推给我

  • 对于这类事情,我使用和的组合,两者都有可用的蛋糕别名。Gitversion用于断言repo的版本号,MagicChunks用于更新xml、json文件等的不同部分
  • 你能确切地证实你在这里的意思吗?您是在谈论将更改提交回GitHub存储库吗?如果是这样的话,您可能想看一下。或者,如果您正在谈论将文件推送到GitHub发行版,您可能需要查看GitReleaseManager别名
  • 拥有NuGet包后,应该能够使用别名将包推送到MyGet。您需要设置NuGetPushSettings类的属性
  • 根据你的一些评论,我正在稍微更新这个答案

    我通常不使用Cake将更改推回到源代码管理存储库。相反,我对源代码管理存储库的提交会触发我的构建,通常使用某种形式的持续集成服务器,如AppVeyor或TeamCity。这样,当用户进行提交时,您询问的提交消息将始终为用户所知,并且用户将知道发生了什么变化。通过使用这种方法,不会自动提交到存储库中,我个人认为应该是这样


    基于上述情况,您只需要您提到的发布目标。作为构建过程的一部分,GitVersion将声明版本号,并允许您使用该版本号创建NuGet包(这样就不需要额外提交到存储库),然后您可以推送到NuGet.org和GitHub。

    1。因此,您需要手动添加文件并提交到本地存储库,然后使用构建脚本来推送它们,以便获取提交消息和信息?我这样问是因为我在我的蛋糕脚本GitCommit()中包含了一个commit,所以每次我构建它时,都会创建一个commit并将其推送到远程存储库。但我的问题是在这种情况下如何定义提交消息。你明白我的问题吗。我说的是提交更改并将其推送到Github存储库,以及在需要时将版本作为标记推送发布。我考虑有两个目标:“默认”提交和推送更改,版本补丁中有更改,但没有Github标记,也没有推送无Nuget。还有另一个目标“Release”,它将添加一个标签并将其推送到Nuget。这有意义吗?我在上面的回答中添加了一些额外的注释。