Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 26 additions & 14 deletions .github/workflows/nuget-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,13 @@ jobs:
build:
runs-on: ubuntu-latest

permissions:
contents: read
id-token: write # Required for NuGet Trusted Publishing (OIDC token issuance)

steps:
- name: Checkout Code
uses: actions/checkout@v2
uses: actions/checkout@v4

- name: Get next version
uses: reecetech/version-increment@2023.9.3
Expand All @@ -21,27 +25,35 @@ jobs:
scheme: semver
increment: patch

- name: Update versions
uses: jacobtomlinson/gha-find-replace@v3
with:
include: "*.csproj"
find: "1.0.0-beta"
replace: "${{ steps.version.outputs.version }}"
regex: false

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 9.0.x
dotnet-version: 10.0.x

- name: Install dependencies
run: dotnet restore

- name: Build
run: dotnet build --configuration Release --no-restore

- name: Publish Strata
uses: brandedoutcast/publish-nuget@v2.5.2
- name: Pack Strata
run: >-
dotnet pack src/Strata/Strata.csproj
--configuration Release
-p:Version=${{ steps.version.outputs.version }}
--output ${{ runner.temp }}/packages

# Exchange the GitHub OIDC token for a short-lived nuget.org API key.
# Requires a Trusted Publishing policy on nuget.org for this repo + workflow.
- name: NuGet login (OIDC -> temp API key)
uses: NuGet/login@v1
id: login
with:
PROJECT_FILE_PATH: src/Strata/Strata.csproj
NUGET_KEY: ${{secrets.NUGET_API_KEY}}
user: jsedlak # nuget.org username (profile name); swap for ${{ secrets.NUGET_USER }} if preferred

- name: Publish Strata
run: >-
dotnet nuget push ${{ runner.temp }}/packages/*.nupkg
--api-key ${{ steps.login.outputs.NUGET_API_KEY }}
--source https://api.nuget.org/v3/index.json
--skip-duplicate
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
using System.Collections.Concurrent;
using System.Text.Json.Serialization;
using System.Text.Json.Serialization.Metadata;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Orleans.Configuration;
using Orleans.Journaling;
using Orleans.Journaling.Json;
using Orleans.TestingHost;
using Strata.Journaling.Tests.JournalingTests.Events;
using Xunit;

namespace Strata.Journaling.Tests;
Expand All @@ -19,7 +23,7 @@ public class JournalingTestFixture : IAsyncLifetime
public JournalingTestFixture()
{
var builder = new InProcessTestClusterBuilder();
var storageProvider = new VolatileStateMachineStorageProvider();
var storageProvider = new VolatileJournalStorageProvider();

static void ConfigureConsoleLogging(ILoggingBuilder logging)
{
Expand All @@ -36,8 +40,9 @@ static void ConfigureConsoleLogging(ILoggingBuilder logging)
siloBuilder.AddMemoryGrainStorageAsDefault();
siloBuilder.UseInMemoryReminderService();
siloBuilder.ConfigureLogging(ConfigureConsoleLogging);
siloBuilder.AddStateMachineStorage();
siloBuilder.Services.AddSingleton<IStateMachineStorageProvider>(storageProvider);
siloBuilder.AddJournalStorage();
siloBuilder.Services.AddSingleton<IJournalStorageProvider>(storageProvider);
siloBuilder.UseJsonJournalFormat(CreateJournalTypeResolver());

// configure a really low idle collection age to test the outbox timer
siloBuilder.Services.Configure<GrainCollectionOptions>(options =>
Expand All @@ -54,6 +59,32 @@ protected virtual void ConfigureTestCluster(InProcessTestClusterBuilder builder)
{
}

/// <summary>
/// The JSON journal format serializes events with System.Text.Json, which (unlike the Orleans
/// serializer) needs polymorphism declared explicitly to round-trip events stored under their
/// abstract base type. Without this, replaying a persisted <see cref="BaseAccountEvent"/> throws
/// NotSupportedException because the concrete type information is lost.
/// </summary>
private static IJsonTypeInfoResolver CreateJournalTypeResolver()
{
var resolver = new DefaultJsonTypeInfoResolver();
resolver.Modifiers.Add(static typeInfo =>
{
if (typeInfo.Type == typeof(BaseAccountEvent))
{
typeInfo.PolymorphismOptions = new JsonPolymorphismOptions
{
TypeDiscriminatorPropertyName = "$type",
DerivedTypes =
{
new JsonDerivedType(typeof(BalanceAdjustedEvent), nameof(BalanceAdjustedEvent)),
},
};
}
});
return resolver;
}

public virtual async Task InitializeAsync()
{
await Cluster.DeployAsync();
Expand Down
4 changes: 2 additions & 2 deletions src/Strata.Journaling.Tests/Strata.Journaling.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.3.0" />
<PackageReference Include="Microsoft.Orleans.Persistence.Memory" Version="10.0.1" />
<PackageReference Include="Microsoft.Orleans.TestingHost" Version="10.0.1" />
<PackageReference Include="Microsoft.Orleans.Persistence.Memory" Version="10.2.0" />
<PackageReference Include="Microsoft.Orleans.TestingHost" Version="10.2.0" />
<PackageReference Include="xunit" Version="2.9.3" />
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5">
<PrivateAssets>all</PrivateAssets>
Expand Down
14 changes: 7 additions & 7 deletions src/Strata/Strata.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,14 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="10.0.3" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.3" />
<PackageReference Include="Microsoft.Extensions.Options" Version="10.0.3" />
<PackageReference Include="Microsoft.Orleans.Journaling" Version="10.0.1-alpha.1" />
<PackageReference Include="Microsoft.Orleans.Reminders" Version="10.0.1" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="10.0.5" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.5" />
<PackageReference Include="Microsoft.Extensions.Options" Version="10.0.5" />
<PackageReference Include="Microsoft.Orleans.Journaling" Version="10.2.0-alpha.1" />
<PackageReference Include="Microsoft.Orleans.Reminders" Version="10.2.0" />
<PackageReference Include="System.Memory.Data" Version="10.0.3" />
<PackageReference Include="Microsoft.Orleans.Sdk" Version="10.0.1" />
<PackageReference Include="Microsoft.Orleans.Streaming" Version="10.0.1" />
<PackageReference Include="Microsoft.Orleans.Sdk" Version="10.2.0" />
<PackageReference Include="Microsoft.Orleans.Streaming" Version="10.2.0" />
</ItemGroup>

<ItemGroup>
Expand Down
Loading