Определите версию и 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 ответ
- Для такого рода вещей я использую комбинацию GitVersion и MagicChunks, в обоих из которых доступны Cake Aliases. Gitversion используется для подтверждения номера версии репо, а MagicChunks используется для обновления различных разделов файлов xml, json и т. Д.
- Можете ли вы подтвердить, что именно вы имеете в виду здесь? Вы говорите о внесении изменений обратно в репозиторий GitHub? Если это так, вы можете взглянуть на дополнение Cake.Git. Или, если вы говорите о переносе файлов в выпуск GitHub, вы можете взглянуть на псевдонимы GitReleaseManager.
- Получив пакет NuGet, вы сможете использовать псевдоним NuGetPush для отправки пакета в MyGet. Вам нужно будет установить свойство Source класса NuGetPushSettings.
Основываясь на некоторых ваших комментариях, я немного обновляю этот ответ...
Обычно я не использую Cake для отправки изменений обратно в репозиторий контроля версий. Скорее, коммиты, которые я делаю в репозитории управления исходным кодом, приводят к запуску моей сборки, как правило, с использованием какой-либо формы Continuous Integration Server, такой как AppVeyor или TeamCity. Таким образом, сообщение о коммите, о котором вы спрашиваете, всегда будет известно пользователю, когда он делает коммит, и будет знать, что изменилось. Используя этот подход, нет автоматических коммитов в хранилище, и лично я думаю, что так и должно быть.
Исходя из вышеизложенного, вам понадобится только указанная вами цель выпуска. Как часть процесса сборки, GitVersion установит номер версии и позволит вам создавать пакеты NuGet с этим номером версии (который затем не требует дополнительной фиксации в хранилище), а затем вы можете отправить его на NuGet.org, и GitHub.