diff --git a/.github/workflow-gen/Program.cs b/.github/workflow-gen/Program.cs
index 44748172..1f5498cb 100644
--- a/.github/workflow-gen/Program.cs
+++ b/.github/workflow-gen/Program.cs
@@ -9,22 +9,26 @@
new("ignore-this",
["IgnoreThis"],
["IgnoreThis.Tests"],
- "it"),
+ "it",
+ ["ubuntu-latest", "windows-latest"]),
new("access-token-management",
["AccessTokenManagement", "AccessTokenManagement.OpenIdConnect"],
["AccessTokenManagement.Tests"],
- "atm"),
+ "atm",
+ ["ubuntu-latest"]),
new("identity-model",
["IdentityModel"],
["IdentityModel.Tests"],
- "im"),
+ "im",
+ ["ubuntu-latest", "windows-latest"]),
new("identity-model-oidc-client",
["IdentityModel.OidcClient", "IdentityModel.OidcClient.Extensions"],
["IdentityModel.OidcClient.Tests"],
- "imoc")
+ "imoc",
+ ["ubuntu-latest", "windows-latest"])
];
foreach (var component in components)
@@ -54,49 +58,71 @@ void GenerateCiWorkflow(Component component)
workflow.EnvDefaults();
- var job = workflow
+ var buildJob = workflow
.Job("build")
.Name("Build")
- .RunsOn(GitHubHostedRunners.UbuntuLatest)
- .Defaults().Run("bash", component.Name)
- .Job;
+ .Strategy()
+ .Matrix(("os", component.RunsOn))
+ .FailFast(false)
+ .Job
+ .RunsOn("${{ matrix.os }}")
+ .Defaults()
+ .Run("bash", component.Name)
+ .Job;
- job.Permissions(
- actions: Permission.Read,
- contents: Permission.Read,
- checks: Permission.Write,
- packages: Permission.Write);
+ buildJob.Permissions(checks: Permission.Write, contents: Permission.Read);
- job.TimeoutMinutes(15);
+ buildJob.TimeoutMinutes(15);
- job.Step()
+ buildJob.Step()
.ActionsCheckout();
- job.StepSetupDotNet();
+ buildJob.StepSetupDotNet();
foreach (var testProject in component.Tests)
{
- job.StepTestAndReport(component.Name, testProject);
+ buildJob.StepTestAndReport(component.Name, testProject);
}
- job.StepInstallCACerts();
+ var packJob = workflow.Job("pack")
+ .Name("Pack")
+ .RunsOn(GitHubHostedRunners.UbuntuLatest)
+ .Needs("build")
+ .Defaults()
+ .Run("bash", component.Name)
+ .Job;
+
+ packJob.Permissions(
+ actions: Permission.Read,
+ contents: Permission.Read,
+ checks: Permission.Write,
+ packages: Permission.Write);
+
+ packJob.TimeoutMinutes(15);
+
+ packJob.Step()
+ .ActionsCheckout();
+
+ packJob.StepSetupDotNet();
+
+ packJob.StepInstallCACerts();
- job.StepToolRestore();
+ packJob.StepToolRestore();
foreach (var project in component.Projects)
{
- job.StepPack(project);
+ packJob.StepPack(project);
}
- job.StepSign();
+ packJob.StepSign();
- job.StepPush("MyGet", "https://www.myget.org/F/duende_identityserver/api/v2/package", "MYGET");
+ packJob.StepPush("MyGet", "https://www.myget.org/F/duende_identityserver/api/v2/package", "MYGET");
- job.StepPush("GitHub", "https://nuget.pkg.github.com/DuendeSoftware/index.json", "GITHUB_TOKEN")
+ packJob.StepPush("GitHub", "https://nuget.pkg.github.com/DuendeSoftware/index.json", "GITHUB_TOKEN")
.Env(("GITHUB_TOKEN", contexts.Secrets.GitHubToken),
("NUGET_AUTH_TOKEN", contexts.Secrets.GitHubToken));
- job.StepUploadArtifacts(component.Name);
+ packJob.StepUploadArtifacts(component.Name);
var fileName = $"{component.Name}-ci";
WriteWorkflow(workflow, fileName);
@@ -180,7 +206,7 @@ void WriteWorkflow(Workflow workflow, string fileName)
Console.WriteLine($"Wrote workflow to {filePath}");
}
-record Component(string Name, string[] Projects, string[] Tests, string TagPrefix);
+record Component(string Name, string[] Projects, string[] Tests, string TagPrefix, string[] RunsOn);
public static class StepExtensions
{
diff --git a/.github/workflows/access-token-management-ci.yml b/.github/workflows/access-token-management-ci.yml
index e60539b0..840686a0 100644
--- a/.github/workflows/access-token-management-ci.yml
+++ b/.github/workflows/access-token-management-ci.yml
@@ -19,16 +19,19 @@ env:
jobs:
build:
name: Build
- runs-on: ubuntu-latest
+ runs-on: ${{ matrix.os }}
permissions:
- actions: read
checks: write
contents: read
- packages: write
defaults:
run:
shell: bash
working-directory: access-token-management
+ strategy:
+ matrix:
+ os:
+ - ubuntu-latest
+ fail-fast: false
timeout-minutes: 15
steps:
- name: Checkout
@@ -53,6 +56,33 @@ jobs:
reporter: dotnet-trx
fail-on-error: true
fail-on-empty: true
+ pack:
+ name: Pack
+ needs:
+ - build
+ runs-on: ubuntu-latest
+ permissions:
+ actions: read
+ checks: write
+ contents: read
+ packages: write
+ defaults:
+ run:
+ shell: bash
+ working-directory: access-token-management
+ timeout-minutes: 15
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+ - name: Setup Dotnet
+ uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25
+ with:
+ dotnet-version: |-
+ 6.0.x
+ 8.0.x
+ 9.0.x
- name: Install Sectigo CodeSiging CA certificates
run: |-
sudo apt-get update
diff --git a/.github/workflows/identity-model-ci.yml b/.github/workflows/identity-model-ci.yml
index 0786abe1..ee453a96 100644
--- a/.github/workflows/identity-model-ci.yml
+++ b/.github/workflows/identity-model-ci.yml
@@ -19,16 +19,20 @@ env:
jobs:
build:
name: Build
- runs-on: ubuntu-latest
+ runs-on: ${{ matrix.os }}
permissions:
- actions: read
checks: write
contents: read
- packages: write
defaults:
run:
shell: bash
working-directory: identity-model
+ strategy:
+ matrix:
+ os:
+ - ubuntu-latest
+ - windows-latest
+ fail-fast: false
timeout-minutes: 15
steps:
- name: Checkout
@@ -53,6 +57,33 @@ jobs:
reporter: dotnet-trx
fail-on-error: true
fail-on-empty: true
+ pack:
+ name: Pack
+ needs:
+ - build
+ runs-on: ubuntu-latest
+ permissions:
+ actions: read
+ checks: write
+ contents: read
+ packages: write
+ defaults:
+ run:
+ shell: bash
+ working-directory: identity-model
+ timeout-minutes: 15
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+ - name: Setup Dotnet
+ uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25
+ with:
+ dotnet-version: |-
+ 6.0.x
+ 8.0.x
+ 9.0.x
- name: Install Sectigo CodeSiging CA certificates
run: |-
sudo apt-get update
diff --git a/.github/workflows/identity-model-oidc-client-ci.yml b/.github/workflows/identity-model-oidc-client-ci.yml
index 90adf5b2..506f384d 100644
--- a/.github/workflows/identity-model-oidc-client-ci.yml
+++ b/.github/workflows/identity-model-oidc-client-ci.yml
@@ -19,16 +19,20 @@ env:
jobs:
build:
name: Build
- runs-on: ubuntu-latest
+ runs-on: ${{ matrix.os }}
permissions:
- actions: read
checks: write
contents: read
- packages: write
defaults:
run:
shell: bash
working-directory: identity-model-oidc-client
+ strategy:
+ matrix:
+ os:
+ - ubuntu-latest
+ - windows-latest
+ fail-fast: false
timeout-minutes: 15
steps:
- name: Checkout
@@ -53,6 +57,33 @@ jobs:
reporter: dotnet-trx
fail-on-error: true
fail-on-empty: true
+ pack:
+ name: Pack
+ needs:
+ - build
+ runs-on: ubuntu-latest
+ permissions:
+ actions: read
+ checks: write
+ contents: read
+ packages: write
+ defaults:
+ run:
+ shell: bash
+ working-directory: identity-model-oidc-client
+ timeout-minutes: 15
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+ - name: Setup Dotnet
+ uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25
+ with:
+ dotnet-version: |-
+ 6.0.x
+ 8.0.x
+ 9.0.x
- name: Install Sectigo CodeSiging CA certificates
run: |-
sudo apt-get update
diff --git a/.github/workflows/ignore-this-ci.yml b/.github/workflows/ignore-this-ci.yml
index f1598fee..dad5616f 100644
--- a/.github/workflows/ignore-this-ci.yml
+++ b/.github/workflows/ignore-this-ci.yml
@@ -19,16 +19,20 @@ env:
jobs:
build:
name: Build
- runs-on: ubuntu-latest
+ runs-on: ${{ matrix.os }}
permissions:
- actions: read
checks: write
contents: read
- packages: write
defaults:
run:
shell: bash
working-directory: ignore-this
+ strategy:
+ matrix:
+ os:
+ - ubuntu-latest
+ - windows-latest
+ fail-fast: false
timeout-minutes: 15
steps:
- name: Checkout
@@ -53,6 +57,33 @@ jobs:
reporter: dotnet-trx
fail-on-error: true
fail-on-empty: true
+ pack:
+ name: Pack
+ needs:
+ - build
+ runs-on: ubuntu-latest
+ permissions:
+ actions: read
+ checks: write
+ contents: read
+ packages: write
+ defaults:
+ run:
+ shell: bash
+ working-directory: ignore-this
+ timeout-minutes: 15
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+ - name: Setup Dotnet
+ uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25
+ with:
+ dotnet-version: |-
+ 6.0.x
+ 8.0.x
+ 9.0.x
- name: Install Sectigo CodeSiging CA certificates
run: |-
sudo apt-get update
diff --git a/access-token-management/test/AccessTokenManagement.Tests/AccessTokenManagement.Tests.net8.0.v3.ncrunchproject b/access-token-management/test/AccessTokenManagement.Tests/AccessTokenManagement.Tests.net8.0.v3.ncrunchproject
new file mode 100644
index 00000000..46105ee2
--- /dev/null
+++ b/access-token-management/test/AccessTokenManagement.Tests/AccessTokenManagement.Tests.net8.0.v3.ncrunchproject
@@ -0,0 +1,8 @@
+
+
+
+ AspNetTestHostCompatibility
+ LostReference
+
+
+
\ No newline at end of file
diff --git a/access-token-management/test/AccessTokenManagement.Tests/AccessTokenManagement.Tests.net9.0.v3.ncrunchproject b/access-token-management/test/AccessTokenManagement.Tests/AccessTokenManagement.Tests.net9.0.v3.ncrunchproject
new file mode 100644
index 00000000..46105ee2
--- /dev/null
+++ b/access-token-management/test/AccessTokenManagement.Tests/AccessTokenManagement.Tests.net9.0.v3.ncrunchproject
@@ -0,0 +1,8 @@
+
+
+
+ AspNetTestHostCompatibility
+ LostReference
+
+
+
\ No newline at end of file
diff --git a/identity-model-oidc-client/test/IdentityModel.OidcClient.Tests/IdentityModel.OidcClient.Tests.net6.0.v3.ncrunchproject b/identity-model-oidc-client/test/IdentityModel.OidcClient.Tests/IdentityModel.OidcClient.Tests.net6.0.v3.ncrunchproject
index cd54b69b..5ff63f7c 100644
--- a/identity-model-oidc-client/test/IdentityModel.OidcClient.Tests/IdentityModel.OidcClient.Tests.net6.0.v3.ncrunchproject
+++ b/identity-model-oidc-client/test/IdentityModel.OidcClient.Tests/IdentityModel.OidcClient.Tests.net6.0.v3.ncrunchproject
@@ -2,6 +2,7 @@
LostReference
+ AspNetTestHostCompatibility
\ No newline at end of file
diff --git a/identity-model-oidc-client/test/IdentityModel.OidcClient.Tests/IdentityModel.OidcClient.Tests.net8.0.v3.ncrunchproject b/identity-model-oidc-client/test/IdentityModel.OidcClient.Tests/IdentityModel.OidcClient.Tests.net8.0.v3.ncrunchproject
index cd54b69b..5ff63f7c 100644
--- a/identity-model-oidc-client/test/IdentityModel.OidcClient.Tests/IdentityModel.OidcClient.Tests.net8.0.v3.ncrunchproject
+++ b/identity-model-oidc-client/test/IdentityModel.OidcClient.Tests/IdentityModel.OidcClient.Tests.net8.0.v3.ncrunchproject
@@ -2,6 +2,7 @@
LostReference
+ AspNetTestHostCompatibility
\ No newline at end of file
diff --git a/identity-model/test/IdentityModel.Tests/Verifications/PublicApiVerificationTests.VerifyPublicApi.verified.txt b/identity-model/test/IdentityModel.Tests/Verifications/PublicApiVerificationTests.VerifyPublicApi.verified.txt
index da6e3014..f170060c 100644
--- a/identity-model/test/IdentityModel.Tests/Verifications/PublicApiVerificationTests.VerifyPublicApi.verified.txt
+++ b/identity-model/test/IdentityModel.Tests/Verifications/PublicApiVerificationTests.VerifyPublicApi.verified.txt
@@ -38,7 +38,9 @@
}
public static class DateTimeExtensions
{
+ [System.Obsolete("Please use DateTimeOffset.FromUnixTimeSeconds() instead.")]
public static System.DateTime ToDateTimeFromEpoch(this long date) { }
+ [System.Obsolete("Please use DateTimeOffset.ToUnixTimeSeconds() instead.")]
public static long ToEpochTime(this System.DateTime dateTime) { }
}
public static class Identity
diff --git a/identity-model/test/IdentityModel.Tests/Verifications/PublicApiVerificationTests.cs b/identity-model/test/IdentityModel.Tests/Verifications/PublicApiVerificationTests.cs
index 2d6cc8ae..a023b63a 100644
--- a/identity-model/test/IdentityModel.Tests/Verifications/PublicApiVerificationTests.cs
+++ b/identity-model/test/IdentityModel.Tests/Verifications/PublicApiVerificationTests.cs
@@ -1,13 +1,13 @@
// Copyright (c) Duende Software. All rights reserved.
// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.
+#if NET8_0_OR_GREATER
using PublicApiGenerator;
namespace Duende.IdentityModel.Verifications;
public class PublicApiVerificationTests
{
-#if NET8_0
[Fact]
public async Task VerifyPublicApi()
{
@@ -19,5 +19,5 @@ public async Task VerifyPublicApi()
var settings = new VerifySettings();
await Verify(publicApi, settings);
}
-#endif
-}
\ No newline at end of file
+}
+#endif
\ No newline at end of file
diff --git a/ignore-this/src/IgnoreThis/IgnoreThis.csproj b/ignore-this/src/IgnoreThis/IgnoreThis.csproj
index c3769c9e..5a109d88 100644
--- a/ignore-this/src/IgnoreThis/IgnoreThis.csproj
+++ b/ignore-this/src/IgnoreThis/IgnoreThis.csproj
@@ -1,6 +1,6 @@
- net8.0
+ netstandard2.0;net8.0
enable
true
Duende.IgnoreThis