From 04b84d6f4cf5a86370ae1dac46a871797fdaa1f8 Mon Sep 17 00:00:00 2001 From: Matthias Koch Date: Thu, 10 Aug 2023 02:56:14 +0200 Subject: [PATCH] fix(components): make ICreateGitHubRelease to fallback to existing release for distributed asset uploads --- .../Nuke.Components/ICreateGitHubRelease.cs | 36 +++++++++++++------ 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/source/Nuke.Components/ICreateGitHubRelease.cs b/source/Nuke.Components/ICreateGitHubRelease.cs index d9ceb75ae..429685e46 100644 --- a/source/Nuke.Components/ICreateGitHubRelease.cs +++ b/source/Nuke.Components/ICreateGitHubRelease.cs @@ -36,18 +36,34 @@ public interface ICreateGitHubRelease : IHazGitRepository, IHazChangelog .Requires(() => GitHubToken) .Executes(async () => { - GitHubTasks.GitHubClient.Credentials ??= new Credentials(GitHubToken.NotNull()); + async Task GetOrCreateRelease() + { + try + { + return await GitHubTasks.GitHubClient.Repository.Release.Create( + GitRepository.GetGitHubOwner(), + GitRepository.GetGitHubName(), + new NewRelease(Name) + { + Name = Name, + Prerelease = Prerelease, + Draft = Draft, + Body = ChangelogTasks.ExtractChangelogSectionNotes(ChangelogFile).JoinNewLine() + }); - var release = await GitHubTasks.GitHubClient.Repository.Release.Create( - GitRepository.GetGitHubOwner(), - GitRepository.GetGitHubName(), - new NewRelease(Name) + } + catch { - Name = Name, - Prerelease = Prerelease, - Draft = Draft, - Body = ChangelogTasks.ExtractChangelogSectionNotes(ChangelogFile).JoinNewLine() - }); + return await GitHubTasks.GitHubClient.Repository.Release.Get( + GitRepository.GetGitHubOwner(), + GitRepository.GetGitHubName(), + Name); + } + } + + GitHubTasks.GitHubClient.Credentials ??= new Credentials(GitHubToken.NotNull()); + + var release = await GetOrCreateRelease(); var uploadTasks = AssetFiles.Select(async x => {