Skip to content

Commit 1e1ca97

Browse files
committed
2.7.0
1 parent 35d901a commit 1e1ca97

File tree

5 files changed

+71
-12
lines changed

5 files changed

+71
-12
lines changed

AvroSchemaGenerator.Tests/AvroSchemaGenerator.Tests.csproj

+3-3
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88

99
<ItemGroup>
1010
<PackageReference Include="apache.avro" Version="1.11.0" />
11-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
11+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.2.0" />
1212
<PackageReference Include="xunit" Version="2.4.1" />
13-
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
13+
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
1414
<PrivateAssets>all</PrivateAssets>
1515
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1616
</PackageReference>
17-
<PackageReference Include="coverlet.collector" Version="3.1.0">
17+
<PackageReference Include="coverlet.collector" Version="3.1.2">
1818
<PrivateAssets>all</PrivateAssets>
1919
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2020
</PackageReference>

SchemaGenerator/AvroSchemaGenerator.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
<ItemGroup>
1818
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
19-
<PackageReference Include="System.Text.Json" Version="6.0.1" />
19+
<PackageReference Include="System.Text.Json" Version="6.0.5" />
2020
</ItemGroup>
2121

2222
<ItemGroup>

build/Build.CI.GitHubActions.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
InvokedTargets = new[] { nameof(Compile) },
2020
OnPushExcludePaths = new[] { "docs/**/*", "package.json", "README.md" },
2121
PublishArtifacts = false,
22-
EnableGitHubContext = true)
22+
EnableGitHubToken = true)
2323
]
2424

2525
[CustomGitHubActions("Tests",
@@ -30,7 +30,7 @@
3030
OnPullRequestBranches = new[] { "main", "dev"},
3131
CacheKeyFiles = new[] { "global.json", "SchemaGenerator/**/*.csproj" },
3232
InvokedTargets = new[] { nameof(Test) },
33-
EnableGitHubContext = true)
33+
EnableGitHubToken = true)
3434
]
3535

3636
[CustomGitHubActions("Release",
@@ -40,8 +40,8 @@
4040
CacheKeyFiles = new[] { "global.json", "SchemaGenerator/**/*.csproj" },
4141
InvokedTargets = new[] { nameof(Release) },
4242
PublishArtifacts = true,
43-
EnableGitHubContext = true,
44-
ImportSecrets = new[] { "NUGET_API_KEY", "GITHUB_TOKEN" })]
43+
EnableGitHubToken = true,
44+
ImportSecrets = new[] { "NUGET_API_KEY"})]
4545
partial class Build
4646
{
4747
}

build/Build.cs

+62-3
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
using static Nuke.Common.Tools.Git.GitTasks;
2323
using Nuke.Common.ChangeLog;
2424
using System.Collections.Generic;
25+
using Octokit;
2526

2627
[CheckBuildProjectConfigurations]
2728
[DotNetVerbosityMapping]
@@ -45,8 +46,6 @@ partial class Build : NukeBuild
4546
[GitRepository] readonly GitRepository GitRepository;
4647
[Required] [GitVersion(Framework = "net6.0")] readonly GitVersion GitVersion;
4748

48-
readonly string _githubContext = EnvironmentInfo.GetVariable<string>("GITHUB_CONTEXT");
49-
5049
[Parameter] string NugetApiUrl = "https://api.nuget.org/v3/index.json";
5150

5251
[Parameter] [Secret] string NuGetApiKey;
@@ -62,7 +61,7 @@ partial class Build : NukeBuild
6261
AbsolutePath Output => RootDirectory / "output";
6362
AbsolutePath ArtifactsDirectory => RootDirectory / "artifacts";
6463
AbsolutePath TestSourceDirectory => RootDirectory / "AvroSchemaGenerator.Tests";
65-
64+
GitHubClient GitHubClient;
6665
public ChangeLog Changelog => ReadChangelog(ChangelogFile);
6766

6867
public ReleaseNotes LatestVersion => Changelog.ReleaseNotes.OrderByDescending(s => s.Version).FirstOrDefault() ?? throw new ArgumentException("Bad Changelog File. Version Should Exist");
@@ -175,6 +174,7 @@ internal static class AssemblyVersionInformation {
175174
.Requires(() => NugetApiUrl)
176175
.Requires(() => !NuGetApiKey.IsNullOrEmpty())
177176
.Requires(() => Configuration.Equals(Configuration.Release))
177+
.Triggers(GitHubRelease)
178178
.Executes(() =>
179179
{
180180
GlobFiles(OutputNuget, "*.nupkg")
@@ -189,6 +189,65 @@ internal static class AssemblyVersionInformation {
189189
);
190190
});
191191
});
192+
193+
Target AuthenticatedGitHubClient => _ => _
194+
.Unlisted()
195+
.OnlyWhenDynamic(() => !string.IsNullOrWhiteSpace(GitHubActions.Token))
196+
.Executes(() =>
197+
{
198+
GitHubClient = new GitHubClient(new ProductHeaderValue("nuke-build"))
199+
{
200+
Credentials = new Credentials(GitHubActions.Token, AuthenticationType.Bearer)
201+
};
202+
});
203+
Target GitHubRelease => _ => _
204+
.Unlisted()
205+
.Description("Creates a GitHub release (or amends existing) and uploads the artifact")
206+
.OnlyWhenDynamic(() => !string.IsNullOrWhiteSpace(GitHubActions.Token))
207+
.DependsOn(AuthenticatedGitHubClient)
208+
.Executes(async () =>
209+
{
210+
var version = GitVersion.NuGetVersionV2;
211+
var releaseNotes = GetNuGetReleaseNotes(ChangelogFile);
212+
Release release;
213+
214+
215+
var identifier = GitRepository.Identifier.Split("/");
216+
var (gitHubOwner, repoName) = (identifier[0], identifier[1]);
217+
try
218+
{
219+
release = await GitHubClient.Repository.Release.Get(gitHubOwner, repoName, version);
220+
}
221+
catch (NotFoundException)
222+
{
223+
var newRelease = new NewRelease(version)
224+
{
225+
Body = releaseNotes,
226+
Name = version,
227+
Draft = false,
228+
Prerelease = GitRepository.IsOnReleaseBranch()
229+
};
230+
release = await GitHubClient.Repository.Release.Create(gitHubOwner, repoName, newRelease);
231+
}
232+
233+
foreach (var existingAsset in release.Assets)
234+
{
235+
await GitHubClient.Repository.Release.DeleteAsset(gitHubOwner, repoName, existingAsset.Id);
236+
}
237+
238+
Information($"GitHub Release {version}");
239+
var packages = OutputNuget.GlobFiles("*.nupkg", "*.symbols.nupkg").NotNull();
240+
foreach (var artifact in packages)
241+
{
242+
var releaseAssetUpload = new ReleaseAssetUpload(artifact.Name, "application/zip", File.OpenRead(artifact), null);
243+
var releaseAsset = await GitHubClient.Repository.Release.UploadAsset(release, releaseAssetUpload);
244+
Information($" {releaseAsset.BrowserDownloadUrl}");
245+
}
246+
});
247+
string ParseReleaseNote()
248+
{
249+
return XmlTasks.XmlPeek(RootDirectory / "Directory.Build.props", "//Project/PropertyGroup/PackageReleaseNotes").FirstOrDefault();
250+
}
192251
static void Information(string info)
193252
{
194253
Serilog.Log.Information(info);

build/_build.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
</PropertyGroup>
1212

1313
<ItemGroup>
14-
<PackageReference Include="Nuke.Common" Version="6.0.1" />
14+
<PackageReference Include="Nuke.Common" Version="6.1.2" />
1515
<PackageDownload Include="GitVersion.Tool" Version="[5.8.1]" />
1616
</ItemGroup>
1717

0 commit comments

Comments
 (0)