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