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 => {