Определите версию и Push-проект для Github и MyGet, используя Cake

Я строю ASP.NET Core 1.1 с файлом.csproj, используя Cake. Мне нужно отправить исходный код на 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.

1 ответ

Решение
  1. Для такого рода вещей я использую комбинацию GitVersion и MagicChunks, в обоих из которых доступны Cake Aliases. Gitversion используется для подтверждения номера версии репо, а MagicChunks используется для обновления различных разделов файлов xml, json и т. Д.
  2. Можете ли вы подтвердить, что именно вы имеете в виду здесь? Вы говорите о внесении изменений обратно в репозиторий GitHub? Если это так, вы можете взглянуть на дополнение Cake.Git. Или, если вы говорите о переносе файлов в выпуск GitHub, вы можете взглянуть на псевдонимы GitReleaseManager.
  3. Получив пакет NuGet, вы сможете использовать псевдоним NuGetPush для отправки пакета в MyGet. Вам нужно будет установить свойство Source класса NuGetPushSettings.

Основываясь на некоторых ваших комментариях, я немного обновляю этот ответ...

Обычно я не использую Cake для отправки изменений обратно в репозиторий контроля версий. Скорее, коммиты, которые я делаю в репозитории управления исходным кодом, приводят к запуску моей сборки, как правило, с использованием какой-либо формы Continuous Integration Server, такой как AppVeyor или TeamCity. Таким образом, сообщение о коммите, о котором вы спрашиваете, всегда будет известно пользователю, когда он делает коммит, и будет знать, что изменилось. Используя этот подход, нет автоматических коммитов в хранилище, и лично я думаю, что так и должно быть.

Исходя из вышеизложенного, вам понадобится только указанная вами цель выпуска. Как часть процесса сборки, GitVersion установит номер версии и позволит вам создавать пакеты NuGet с этим номером версии (который затем не требует дополнительной фиксации в хранилище), а затем вы можете отправить его на NuGet.org, и GitHub.

Другие вопросы по тегам