Skip to content

Commit 6f64739

Browse files
committed
Merge remote-tracking branch 'origin/develop/3.6.0' into develop/3.6.0
2 parents 867a1ee + dd6bfbb commit 6f64739

26 files changed

Lines changed: 524 additions & 251 deletions

File tree

.github/copilot-instructions.md

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
## Repository Overview
44

5-
**Elsa Workflows** is a powerful .NET workflow library that enables workflow execution within any .NET application. This is version 3.0, supporting .NET 9.0 and providing both a visual designer and programmatic workflow definition capabilities.
5+
**Elsa Workflows** is a powerful .NET workflow library that enables workflow execution within any .NET application. This is version 3.0, supporting .NET 8.0, .NET 9.0 and .NET 10.0 and providing both a visual designer (from a different repository, elsa-studio) and programmatic workflow definition capabilities.
66

77
### Key Statistics
8-
- **Language**: C# (.NET 9.0)
8+
- **Language**: C# (.NET 10.0)
99
- **Architecture**: Modular library with 104+ projects
1010
- **Code Size**: ~3,500 C# files across modules
1111
- **License**: MIT
1212
- **Build System**: NUKE build automation
13-
- **Target Frameworks**: .NET 9.0 (primary)
13+
- **Target Frameworks**: .NET 10.0 (primary)
1414

1515
## High-Level Architecture
1616

@@ -19,9 +19,6 @@
1919
src/
2020
├── apps/ # Reference applications (5 projects)
2121
│ ├── Elsa.Server.Web # Workflow server only
22-
│ ├── Elsa.ServerAndStudio.Web # Combined server + studio
23-
│ ├── Elsa.Studio.Web # Studio web interface
24-
│ ├── ElsaStudioWebAssembly # Studio WebAssembly app
2522
│ └── Elsa.Server.LoadBalancer # Load balancer
2623
├── common/ # Shared libraries (8 projects)
2724
├── modules/ # Core functionality modules (70+ projects)
@@ -46,28 +43,14 @@ docker/ # Docker configurations
4643
- **Elsa.Workflows.Runtime**: Workflow execution runtime
4744
- **Elsa.Workflows.Api**: RESTful API for workflow management
4845
- **Elsa.Workflows.Management**: Workflow definition management
49-
- **Elsa modules**: Specialized functionality (HTTP, email, scheduling, etc.)
46+
- **Elsa modules**: Specialized functionality (HTTP, persistence, scheduling, etc.)
5047

5148
## Build Instructions
5249

5350
### Prerequisites
5451
- **.NET 10.0 SDK**
5552
- **Build time**: Initial restore ~1-2 minutes, full compile ~5-10 minutes
5653

57-
### Critical Build Information
58-
59-
⚠️ **IMPORTANT**: The repository has external dependencies that may cause build failures:
60-
61-
1. **External NuGet Feeds**: Some projects depend on packages from:
62-
- `https://f.feedz.io/elsa-workflows/elsa-3/nuget/index.json` (Elsa Studio packages)
63-
- `https://f.feedz.io/sfmskywalker/webhooks-core/nuget/index.json` (Webhooks packages)
64-
65-
2. **Build Failure Workarounds**:
66-
- Studio apps (`Elsa.Studio.Web`, `ElsaStudioWebAssembly`, `Elsa.ServerAndStudio.Web`) depend on prebuilt studio packages that may not be accessible
67-
- Server app (`Elsa.Server.Web`) depends on WebhooksCore package that may not be accessible
68-
- Core workflow functionality can be built independently
69-
- Some test projects may fail due to missing external packages
70-
7154
### Build Commands
7255

7356
**Primary build script**: `./build.sh` (Linux/macOS) or `.\build.cmd` (Windows)

.github/workflows/packages.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,17 @@ jobs:
7070
dotnet test "$project" --configuration Release --no-build --logger "GitHubActions;report-warnings=false" /p:CollectCoverage=true
7171
done
7272
73+
- name: Dump docker logs on failure
74+
if: failure()
75+
run: |
76+
echo "=== Docker containers ==="
77+
docker ps -a || true
78+
echo "=== Docker logs ==="
79+
for container in $(docker ps -aq); do
80+
echo "--- Logs for container $container ---"
81+
docker logs "$container" 2>&1 | tail -100 || true
82+
done
83+
7384
- name: Install ReportGenerator
7485
run: dotnet tool install -g dotnet-reportgenerator-globaltool
7586

Directory.Packages.props

Lines changed: 37 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -43,38 +43,38 @@
4343
</ItemGroup>
4444
<!-- .NET 10 specific package versions -->
4545
<ItemGroup Condition="'$(TargetFramework)' == 'net10.0'">
46-
<PackageVersion Include="Microsoft.AspNetCore.Authorization" Version="10.0.0"/>
47-
<PackageVersion Include="Microsoft.AspNetCore.Components" Version="10.0.0"/>
48-
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly" Version="10.0.0"/>
49-
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="10.0.0"/>
50-
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="10.0.0"/>
51-
<PackageVersion Include="Microsoft.AspNetCore.DataProtection.Abstractions" Version="10.0.0"/>
52-
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="10.0.0"/>
53-
<PackageVersion Include="Microsoft.Data.Sqlite" Version="10.0.0"/>
54-
<PackageVersion Include="Microsoft.Data.Sqlite.Core" Version="10.0.0"/>
55-
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="10.0.0"/>
56-
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="10.0.0"/>
57-
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="10.0.0"/>
58-
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="10.0.0"/>
59-
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="10.0.0"/>
60-
<PackageVersion Include="Microsoft.Extensions.Caching.Abstractions" Version="10.0.0"/>
61-
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="10.0.0"/>
62-
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="10.0.0"/>
63-
<PackageVersion Include="Microsoft.Extensions.Configuration.Abstractions" Version="10.0.0"/>
64-
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="10.0.0"/>
65-
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="10.0.0"/>
66-
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="10.0.0"/>
67-
<PackageVersion Include="Microsoft.Extensions.DependencyModel" Version="10.0.0"/>
68-
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="10.0.0"/>
69-
<PackageVersion Include="Microsoft.Extensions.Http" Version="10.0.0"/>
70-
<PackageVersion Include="Microsoft.Extensions.Http.Polly" Version="10.0.0"/>
71-
<PackageVersion Include="Microsoft.Extensions.Http.Resilience" Version="10.0.0"/>
72-
<PackageVersion Include="Microsoft.Extensions.Options" Version="10.0.0"/>
73-
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="10.0.0"/>
74-
<PackageVersion Include="Microsoft.Extensions.Resilience" Version="10.0.0"/>
75-
<PackageVersion Include="Microsoft.Extensions.Logging" Version="10.0.0"/>
76-
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.0"/>
77-
<PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="10.0.0"/>
46+
<PackageVersion Include="Microsoft.AspNetCore.Authorization" Version="10.0.1"/>
47+
<PackageVersion Include="Microsoft.AspNetCore.Components" Version="10.0.1"/>
48+
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly" Version="10.0.1"/>
49+
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="10.0.1"/>
50+
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="10.0.1"/>
51+
<PackageVersion Include="Microsoft.AspNetCore.DataProtection.Abstractions" Version="10.0.1"/>
52+
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="10.0.1"/>
53+
<PackageVersion Include="Microsoft.Data.Sqlite" Version="10.0.1"/>
54+
<PackageVersion Include="Microsoft.Data.Sqlite.Core" Version="10.0.1"/>
55+
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="10.0.1"/>
56+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="10.0.1"/>
57+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="10.0.1"/>
58+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="10.0.1"/>
59+
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="10.0.1"/>
60+
<PackageVersion Include="Microsoft.Extensions.Caching.Abstractions" Version="10.0.1"/>
61+
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="10.0.1"/>
62+
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="10.0.1"/>
63+
<PackageVersion Include="Microsoft.Extensions.Configuration.Abstractions" Version="10.0.1"/>
64+
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="10.0.1"/>
65+
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="10.0.1"/>
66+
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="10.0.1"/>
67+
<PackageVersion Include="Microsoft.Extensions.DependencyModel" Version="10.0.1"/>
68+
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="10.0.1"/>
69+
<PackageVersion Include="Microsoft.Extensions.Http" Version="10.0.1"/>
70+
<PackageVersion Include="Microsoft.Extensions.Http.Polly" Version="10.0.1"/>
71+
<PackageVersion Include="Microsoft.Extensions.Http.Resilience" Version="10.0.1"/>
72+
<PackageVersion Include="Microsoft.Extensions.Options" Version="10.0.1"/>
73+
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="10.0.1"/>
74+
<PackageVersion Include="Microsoft.Extensions.Resilience" Version="10.0.1"/>
75+
<PackageVersion Include="Microsoft.Extensions.Logging" Version="10.0.1"/>
76+
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.1"/>
77+
<PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="10.0.1"/>
7878
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="10.0.0"/>
7979
<PackageVersion Include="Oracle.EntityFrameworkCore" Version="10.23.26000"/>
8080
<PackageVersion Include="Scrutor" Version="7.0.0"/>
@@ -126,7 +126,7 @@
126126
<PackageVersion Include="Moq" Version="4.20.72"/>
127127
<PackageVersion Include="MySql.Data" Version="9.5.0"/>
128128
<PackageVersion Include="Newtonsoft.Json" Version="13.0.4"/>
129-
<PackageVersion Include="Npgsql" Version="10.0.0"/>
129+
<PackageVersion Include="Npgsql" Version="10.0.1"/>
130130
<PackageVersion Include="NSubstitute" Version="5.3.0"/>
131131
<PackageVersion Include="NuGet.Packaging" Version="7.0.1"/>
132132
<PackageVersion Include="NuGet.Protocol" Version="7.0.1"/>
@@ -151,20 +151,21 @@
151151
<PackageVersion Include="Refit" Version="9.0.2"/>
152152
<PackageVersion Include="Refit.HttpClientFactory" Version="9.0.2"/>
153153
<PackageVersion Include="Serilog" Version="4.3.0"/>
154-
<PackageVersion Include="Serilog.Extensions.Logging" Version="10.0.0"/>
154+
<PackageVersion Include="Serilog.Extensions.Logging" Version="10.0.1"/>
155155
<PackageVersion Include="Serilog.Sinks.File" Version="7.0.0"/>
156156
<PackageVersion Include="Serilog.Formatting.Compact" Version="3.0.0"/>
157157
<PackageVersion Include="ShortGuid" Version="2.0.1"/>
158158
<PackageVersion Include="StackExchange.Redis" Version="2.10.1"/>
159159
<PackageVersion Include="System.CommandLine" Version="2.0.0"/>
160160
<PackageVersion Include="System.Data.SqlClient" Version="4.9.0"/>
161-
<PackageVersion Include="System.Formats.Asn1" Version="10.0.0"/>
161+
<PackageVersion Include="System.Formats.Asn1" Version="10.0.1"/>
162162
<PackageVersion Include="System.Linq.Async" Version="7.0.0"/>
163163
<PackageVersion Include="System.Linq.Dynamic.Core" Version="1.7.1"/>
164164
<PackageVersion Include="System.Net.Http" Version="4.3.4"/>
165-
<PackageVersion Include="System.Text.Json" Version="10.0.0"/>
165+
<PackageVersion Include="System.Text.Json" Version="10.0.1"/>
166166
<PackageVersion Include="System.Text.RegularExpressions" Version="4.3.1"/>
167167
<PackageVersion Include="Testcontainers" Version="4.9.0"/>
168+
<PackageVersion Include="Testcontainers.MsSql" Version="4.9.0"/>
168169
<PackageVersion Include="Testcontainers.PostgreSql" Version="4.9.0"/>
169170
<PackageVersion Include="Testcontainers.RabbitMq" Version="4.9.0"/>
170171
<PackageVersion Include="Testcontainers.Redis" Version="4.9.0"/>

NuGet.Config

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,10 @@
44
<packageSources>
55
<clear />
66
<add key="NuGet official package source" value="https://api.nuget.org/v3/index.json" />
7-
<add key="Elsa 3 Preview" value="https://f.feedz.io/elsa-workflows/elsa-3/nuget/index.json" />
8-
<add key="Webhooks Core Preview" value="https://f.feedz.io/sfmskywalker/webhooks-core/nuget/index.json" />
97
</packageSources>
108
<packageSourceMapping>
119
<packageSource key="NuGet official package source">
1210
<package pattern="*" />
1311
</packageSource>
14-
<packageSource key="Elsa 3 Preview">
15-
<package pattern="Elsa" />
16-
<package pattern="Elsa.*" />
17-
<package pattern="Elsa.Studio.*" />
18-
</packageSource>
19-
<packageSource key="Webhooks Core Preview">
20-
<package pattern="WebhooksCore" />
21-
<package pattern="WebhooksCore.*" />
22-
</packageSource>
2312
</packageSourceMapping>
2413
</configuration>

docker/ElsaServer-Datadog.Dockerfile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Version: 1
22
# Description: Dockerfile for building and running Elsa Server with Datadog and OpenTelemetry auto-instrumentation
33

4-
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0-bookworm-slim AS build
4+
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:10.0 AS build
55
WORKDIR /source
66

77
# Copy sources.
@@ -15,10 +15,10 @@ RUN dotnet restore "./src/apps/Elsa.Server.Web/Elsa.Server.Web.csproj"
1515
# Build and publish (UseAppHost=false creates platform independent binaries).
1616
WORKDIR /source/src/bundles/Elsa.Server.Web
1717
RUN dotnet build "Elsa.Server.Web.csproj" -c Release -o /app/build
18-
RUN dotnet publish "Elsa.Server.Web.csproj" -c Release -o /app/publish /p:UseAppHost=false --no-restore -f net9.0
18+
RUN dotnet publish "Elsa.Server.Web.csproj" -c Release -o /app/publish /p:UseAppHost=false --no-restore -f net10.0
1919

2020
# Move binaries into smaller base image.
21-
FROM mcr.microsoft.com/dotnet/aspnet:9.0-bookworm-slim AS base
21+
FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS base
2222
WORKDIR /app
2323
COPY --from=build /app/publish ./
2424

docker/ElsaServer.Dockerfile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0-bookworm-slim AS build
1+
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:10.0 AS build
22
WORKDIR /source
33

44
# copy sources.
@@ -12,10 +12,10 @@ RUN dotnet restore "./src/apps/Elsa.Server.Web/Elsa.Server.Web.csproj"
1212
# build and publish (UseAppHost=false creates platform independent binaries).
1313
WORKDIR /source/src/apps/Elsa.Server.Web
1414
RUN dotnet build "Elsa.Server.Web.csproj" -c Release -o /app/build
15-
RUN dotnet publish "Elsa.Server.Web.csproj" -c Release -o /app/publish /p:UseAppHost=false --no-restore -f net9.0
15+
RUN dotnet publish "Elsa.Server.Web.csproj" -c Release -o /app/publish /p:UseAppHost=false --no-restore -f net10.0
1616

1717
# move binaries into smaller base image.
18-
FROM mcr.microsoft.com/dotnet/aspnet:9.0-bookworm-slim AS base
18+
FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS base
1919
WORKDIR /app
2020
COPY --from=build /app/publish ./
2121

docker/ElsaServerAndStudio.Dockerfile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0-bookworm-slim AS build
1+
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:10.0 AS build
22
WORKDIR /source
33

44
# copy sources.
@@ -13,10 +13,10 @@ RUN dotnet restore "./src/apps/Elsa.ServerAndStudio.Web/Elsa.ServerAndStudio.Web
1313
# build and publish (UseAppHost=false creates platform independent binaries).
1414
WORKDIR /source/src/apps/Elsa.ServerAndStudio.Web
1515
RUN dotnet build "Elsa.ServerAndStudio.Web.csproj" -c Release -o /app/build
16-
RUN dotnet publish "Elsa.ServerAndStudio.Web.csproj" -c Release -o /app/publish /p:UseAppHost=false --no-restore -f net9.0
16+
RUN dotnet publish "Elsa.ServerAndStudio.Web.csproj" -c Release -o /app/publish /p:UseAppHost=false --no-restore -f net10.0
1717

1818
# move binaries into smaller base image.
19-
FROM mcr.microsoft.com/dotnet/aspnet:9.0-bookworm-slim AS base
19+
FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS base
2020
WORKDIR /app
2121
COPY --from=build /app/publish ./
2222

docker/ElsaStudio.Dockerfile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0-bookworm-slim AS build
1+
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:10.0 AS build
22
WORKDIR /source
33

44
# copy sources.
@@ -13,10 +13,10 @@ RUN dotnet restore "./src/apps/Elsa.Studio.Web/Elsa.Studio.Web.csproj"
1313
# build and publish (UseAppHost=false creates platform independent binaries).
1414
WORKDIR /source/src/apps/Elsa.Studio.Web
1515
RUN dotnet build "Elsa.Studio.Web.csproj" -c Release -o /app/build
16-
RUN dotnet publish "Elsa.Studio.Web.csproj" -c Release -o /app/publish /p:UseAppHost=false --no-restore -f net9.0
16+
RUN dotnet publish "Elsa.Studio.Web.csproj" -c Release -o /app/publish /p:UseAppHost=false --no-restore -f net10.0
1717

1818
# move binaries into smaller base image.
19-
FROM mcr.microsoft.com/dotnet/aspnet:9.0-bookworm-slim AS base
19+
FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS base
2020
WORKDIR /app
2121
COPY --from=build /app/publish ./
2222

src/modules/Elsa.Http/Activities/HttpEndpoint.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System.Runtime.CompilerServices;
1+
using System.Runtime.CompilerServices;
22
using System.Text.Json;
33
using Elsa.Expressions.Models;
44
using Elsa.Extensions;
@@ -182,7 +182,7 @@ protected override async ValueTask ExecuteAsync(ActivityExecutionContext context
182182
{
183183
var path = Path.Get(context);
184184
var methods = SupportedMethods.GetOrDefault(context) ?? new List<string> { HttpMethods.Get };
185-
await context.WaitForHttpRequestAsync(path, methods, OnResumeAsync);
185+
await context.WaitForHttpRequestAsync(path, methods, OnResumeAsync, Elsa.Http.HttpStimulusNames.HttpEndpoint);
186186
}
187187

188188
private async ValueTask OnResumeAsync(ActivityExecutionContext context)

src/modules/Elsa.Http/Activities/HttpEndpointBase.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ protected virtual void OnHttpRequestReceived(ActivityExecutionContext activityEx
2222

2323
protected override async ValueTask ExecuteAsync(ActivityExecutionContext context)
2424
{
25-
var options = GetOptions();
26-
await context.WaitForHttpRequestAsync(options, HttpRequestReceivedAsync);
25+
var options = GetOptions();
26+
await context.WaitForHttpRequestAsync(options, HttpRequestReceivedAsync, Elsa.Http.HttpStimulusNames.HttpEndpoint);
2727
}
2828

2929
protected override IEnumerable<object> GetTriggerPayloads(TriggerIndexingContext context)

0 commit comments

Comments
 (0)