mirror of
https://github.com/DuendeSoftware/products
synced 2026-05-23 08:58:31 +00:00
New build pipelines (#1743)
* Use 1 gitignore file * Add the ignore-this project for testing * Import and configure workflow-gen * Generate workflows for bff, is, it * Delete build projects for bff, is * Add directory.build.props files * Add src and test props, fix up IdentityServer builds * Manage dependencies centrally * Fix a bunch of dependency resolution issues * import codeql build file --------- Co-authored-by: Erwin van der Valk <erwin@vandervalk.pro>
This commit is contained in:
parent
39abeb8bf5
commit
981936ff45
102 changed files with 1383 additions and 1322 deletions
301
.github/workflow-gen/Program.cs
vendored
Normal file
301
.github/workflow-gen/Program.cs
vendored
Normal file
|
|
@ -0,0 +1,301 @@
|
|||
// Copyright (c) Duende Software. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0.
|
||||
|
||||
using Logicality.GitHub.Actions.Workflow;
|
||||
using static GitHubContexts;
|
||||
|
||||
var contexts = Instance;
|
||||
Component[] components = [
|
||||
new("ignore-this",
|
||||
["IgnoreThis"],
|
||||
["IgnoreThis.Tests"],
|
||||
"it"),
|
||||
|
||||
new("bff",
|
||||
["Duende.Bff", "Duende.Bff.Blazor", "Duende.Bff.Blazor.Client", "Duende.Bff.EntityFramework", "Duende.Bff.Yarp"],
|
||||
["Duende.Bff.Tests", "Duende.Bff.EntityFramework.Tests", "Duende.Bff.Blazor.UnitTests", "Duende.Bff.Blazor.Client.UnitTests"],
|
||||
"bff"),
|
||||
|
||||
new("identity-server",
|
||||
["AspNetIdentity", "Configuration", "Configuration.EntityFramework", "EntityFramework", "EntityFramework.Storage", "IdentityServer", "Storage"],
|
||||
["Configuration.IntegrationTests", "EntityFramework.IntegrationTests", "EntityFramework.Storage.IntegrationTests", "EntityFramework.Storage.UnitTests", "IdentityServer.IntegrationTests", "IdentityServer.UnitTests"],
|
||||
"is")
|
||||
];
|
||||
|
||||
foreach (var component in components)
|
||||
{
|
||||
GenerateCiWorkflow(component);
|
||||
GenerateReleaseWorkflow(component);
|
||||
}
|
||||
|
||||
void GenerateCiWorkflow(Component component)
|
||||
{
|
||||
var workflow = new Workflow($"{component.Name}/ci");
|
||||
var paths = new[]
|
||||
{
|
||||
$".github/workflows/{component.Name}-**",
|
||||
$"{component.Name}/**",
|
||||
"Directory.Packages.props"
|
||||
};
|
||||
|
||||
workflow.On
|
||||
.WorkflowDispatch();
|
||||
workflow.On
|
||||
.Push()
|
||||
.Paths(paths);
|
||||
workflow.On
|
||||
.PullRequestTarget()
|
||||
.Paths(paths);
|
||||
|
||||
workflow.EnvDefaults();
|
||||
|
||||
var job = workflow
|
||||
.Job("build")
|
||||
.Name("Build")
|
||||
.RunsOn(GitHubHostedRunners.UbuntuLatest)
|
||||
.Defaults().Run("bash", component.Name)
|
||||
.Job;
|
||||
|
||||
job.Permissions(
|
||||
actions: Permission.Read,
|
||||
contents: Permission.Read,
|
||||
checks: Permission.Write,
|
||||
packages: Permission.Write);
|
||||
|
||||
job.TimeoutMinutes(15);
|
||||
|
||||
job.Step()
|
||||
.ActionsCheckout();
|
||||
|
||||
job.StepSetupDotNet();
|
||||
|
||||
foreach (var testProject in component.Tests)
|
||||
{
|
||||
job.StepTestAndReport(component.Name, testProject);
|
||||
}
|
||||
|
||||
job.StepToolRestore();
|
||||
|
||||
foreach (var project in component.Projects)
|
||||
{
|
||||
job.StepPack(project);
|
||||
}
|
||||
|
||||
job.StepSign();
|
||||
|
||||
job.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")
|
||||
.Env(("GITHUB_TOKEN", contexts.Secrets.GitHubToken),
|
||||
("NUGET_AUTH_TOKEN", contexts.Secrets.GitHubToken));
|
||||
|
||||
job.StepUploadArtifacts(component.Name);
|
||||
|
||||
var fileName = $"{component.Name}-ci";
|
||||
WriteWorkflow(workflow, fileName);
|
||||
}
|
||||
|
||||
void GenerateReleaseWorkflow(Component component)
|
||||
{
|
||||
var workflow = new Workflow($"{component.Name}/release");
|
||||
|
||||
workflow.On
|
||||
.WorkflowDispatch()
|
||||
.Inputs(new StringInput("version", "Version in format X.Y.Z or X.Y.Z-preview.", true, "0.0.0"));
|
||||
|
||||
workflow.EnvDefaults();
|
||||
|
||||
var tagJob = workflow
|
||||
.Job("tag")
|
||||
.Name("Tag and Pack")
|
||||
.RunsOn(GitHubHostedRunners.UbuntuLatest)
|
||||
.Permissions(contents: Permission.Write, packages: Permission.Write)
|
||||
.Defaults().Run("bash", component.Name).Job;
|
||||
|
||||
tagJob.Step()
|
||||
.ActionsCheckout();
|
||||
|
||||
tagJob.StepSetupDotNet();
|
||||
|
||||
tagJob.Step()
|
||||
.Name("Git tag")
|
||||
.Run($@"git config --global user.email ""github-bot@duendesoftware.com""
|
||||
git config --global user.name ""Duende Software GitHub Bot""
|
||||
git tag -a {component.TagPrefix}-{contexts.Event.Input.Version} -m ""Release v{contexts.Event.Input.Version}""
|
||||
git push origin {component.TagPrefix}-{contexts.Event.Input.Version}");
|
||||
|
||||
foreach (var project in component.Projects)
|
||||
{
|
||||
tagJob.StepPack(project);
|
||||
}
|
||||
|
||||
tagJob.StepToolRestore();
|
||||
|
||||
tagJob.StepSign();
|
||||
|
||||
tagJob.StepPush("MyGet", "https://www.myget.org/F/duende_identityserver/api/v2/package", "MYGET");
|
||||
|
||||
tagJob.StepPush("GitHub", "https://nuget.pkg.github.com/DuendeSoftware/index.json", "GITHUB_TOKEN")
|
||||
.Env(("GITHUB_TOKEN", contexts.Secrets.GitHubToken),
|
||||
("NUGET_AUTH_TOKEN", contexts.Secrets.GitHubToken));
|
||||
|
||||
tagJob.StepUploadArtifacts(component.Name);
|
||||
|
||||
var publishJob = workflow.Job("publish")
|
||||
.Name("Publish to nuget.org")
|
||||
.RunsOn(GitHubHostedRunners.UbuntuLatest)
|
||||
.Needs("tag")
|
||||
.Environment("nuget.org", "");
|
||||
|
||||
publishJob.Step()
|
||||
.Uses("actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16") // 4.1.8
|
||||
.With(("name", "artifacts"), ("path", "artifacts"));
|
||||
|
||||
publishJob.StepSetupDotNet();
|
||||
|
||||
publishJob.Step()
|
||||
.Name("List files")
|
||||
.Shell("bash")
|
||||
.Run("tree");
|
||||
|
||||
publishJob.StepPush("nuget.org", "https://api.nuget.org/v3/index.json", "NUGET_ORG_API_KEY");
|
||||
|
||||
var fileName = $"{component.Name}-release";
|
||||
WriteWorkflow(workflow, fileName);
|
||||
}
|
||||
|
||||
void WriteWorkflow(Workflow workflow, string fileName)
|
||||
{
|
||||
var filePath = $"../workflows/{fileName}.yml";
|
||||
workflow.WriteYaml(filePath);
|
||||
Console.WriteLine($"Wrote workflow to {filePath}");
|
||||
}
|
||||
|
||||
record Component(string Name, string[] Projects, string[] Tests, string TagPrefix);
|
||||
|
||||
public static class StepExtensions
|
||||
{
|
||||
public static void EnvDefaults(this Workflow workflow)
|
||||
=> workflow.Env(
|
||||
("DOTNET_NOLOGO", "true"),
|
||||
("DOTNET_CLI_TELEMETRY_OPTOUT", "true"));
|
||||
|
||||
public static void StepSetupDotNet(this Job job)
|
||||
=> job.Step()
|
||||
.Name("Setup .NET")
|
||||
.ActionsSetupDotNet("3e891b0cb619bf60e2c25674b222b8940e2c1c25", ["6.0.x", "8.0.x", "9.0.x"]); // v4.1.0
|
||||
|
||||
public static Step IfRefMain(this Step step)
|
||||
=> step.If("github.ref == 'refs/heads/main'");
|
||||
|
||||
public static void StepTestAndReport(this Job job, string componentName, string testProject)
|
||||
{
|
||||
var path = $"test/{testProject}";
|
||||
var logFileName = "Tests.trx";
|
||||
var flags = $"--logger \"console;verbosity=normal\" " +
|
||||
$"--logger \"trx;LogFileName={logFileName}\" " +
|
||||
$"--collect:\"XPlat Code Coverage\"";
|
||||
job.Step()
|
||||
.Name($"Test - {testProject}")
|
||||
.Run($"dotnet test -c Release {path} {flags}");
|
||||
|
||||
job.Step()
|
||||
.Name($"Test report - {testProject}")
|
||||
.Uses("dorny/test-reporter@31a54ee7ebcacc03a09ea97a7e5465a47b84aea5") // v1.9.1
|
||||
.If("success() || failure()")
|
||||
.With(
|
||||
("name", $"Test Report - {testProject}"),
|
||||
("path", $"{componentName}/{path}/TestResults/{logFileName}"),
|
||||
("reporter", "dotnet-trx"),
|
||||
("fail-on-error", "true"),
|
||||
("fail-on-empty", "true"));
|
||||
}
|
||||
|
||||
public static void StepToolRestore(this Job job)
|
||||
=> job.Step()
|
||||
.Name("Tool restore")
|
||||
.Run("dotnet tool restore");
|
||||
|
||||
public static void StepPack(this Job job, string project)
|
||||
{
|
||||
var path = $"src/{project}";
|
||||
job.Step()
|
||||
.Name($"Pack {project}")
|
||||
.Run($"dotnet pack -c Release {path} -o artifacts");
|
||||
}
|
||||
|
||||
public static void StepSign(this Job job)
|
||||
{
|
||||
var flags = "--file-digest sha256 " +
|
||||
"--timestamp-rfc3161 http://timestamp.digicert.com " +
|
||||
"--azure-key-vault-url https://duendecodesigninghsm.vault.azure.net/ " +
|
||||
"--azure-key-vault-client-id 18e3de68-2556-4345-8076-a46fad79e474 " +
|
||||
"--azure-key-vault-tenant-id ed3089f0-5401-4758-90eb-066124e2d907 " +
|
||||
"--azure-key-vault-client-secret ${{ secrets.SignClientSecret }} " +
|
||||
"--azure-key-vault-certificate NuGetPackageSigning";
|
||||
job.Step()
|
||||
.Name("Sign packages")
|
||||
.Run($"""
|
||||
for file in artifacts/*.nupkg; do
|
||||
dotnet NuGetKeyVaultSignTool sign "$file" {flags}
|
||||
done
|
||||
""");
|
||||
}
|
||||
|
||||
public static Step StepPush(this Job job, string destination, string sourceUrl, string secretName)
|
||||
{
|
||||
var apiKey = $"${{{{ secrets.{secretName} }}}}";
|
||||
return job.Step()
|
||||
.Name($"Push packages to {destination}")
|
||||
.IfRefMain()
|
||||
.Run($"dotnet nuget push artifacts/*.nupkg --source {sourceUrl} --api-key {apiKey} --skip-duplicate");
|
||||
}
|
||||
|
||||
public static void StepUploadArtifacts(this Job job, string componentName)
|
||||
{
|
||||
var path = $"{componentName}/artifacts/*.nupkg";
|
||||
job.Step()
|
||||
.Name("Upload Artifacts")
|
||||
.IfRefMain()
|
||||
.Uses("actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882") // 4.4.3
|
||||
.With(
|
||||
("name", "artifacts"),
|
||||
("path", path),
|
||||
("overwrite", "true"),
|
||||
("retention-days", "15"));
|
||||
}
|
||||
}
|
||||
|
||||
public class GitHubContexts
|
||||
{
|
||||
public static GitHubContexts Instance { get; } = new();
|
||||
public virtual GitHubContext GitHub { get; } = new();
|
||||
public virtual SecretsContext Secrets { get; } = new();
|
||||
public virtual EventContext Event { get; } = new();
|
||||
|
||||
public abstract class Context(string name)
|
||||
{
|
||||
protected string Name => name;
|
||||
|
||||
protected string Expression(string s) => "${{ " + s + " }}";
|
||||
}
|
||||
|
||||
public class GitHubContext() : Context("github")
|
||||
{
|
||||
}
|
||||
|
||||
public class SecretsContext() : Context("secrets")
|
||||
{
|
||||
public string GitHubToken => Expression($"{Name}.GITHUB_TOKEN");
|
||||
}
|
||||
|
||||
public class EventContext() : Context("github.event")
|
||||
{
|
||||
public EventsInputContext Input { get; } = new ();
|
||||
}
|
||||
|
||||
public class EventsInputContext() : Context("github.event.inputs")
|
||||
{
|
||||
public string Version => Expression($"{Name}.version");
|
||||
}
|
||||
}
|
||||
17
.github/workflow-gen/workflow-gen.csproj
vendored
Normal file
17
.github/workflow-gen/workflow-gen.csproj
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<RootNamespace>workflow_gen</RootNamespace>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<IsPackable>false</IsPackable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Logicality.GitHub.Actions.Workflow" Version="0.5.1" />
|
||||
<PackageReference Include="Logicality.GitHub.Actions.Workflow.Extensions" Version="0.5.1" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
144
.github/workflows/bff-ci.yml
vendored
144
.github/workflows/bff-ci.yml
vendored
|
|
@ -1,56 +1,122 @@
|
|||
name: "bff-ci"
|
||||
# This was generated by tool. Edits will be overwritten.
|
||||
|
||||
name: bff/ci
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- releases/bff/**
|
||||
paths:
|
||||
- 'bff/**'
|
||||
tags:
|
||||
- 'bff-*.*.*'
|
||||
pull_request:
|
||||
paths:
|
||||
- 'bff/**'
|
||||
paths:
|
||||
- .github/workflows/bff-**
|
||||
- bff/**
|
||||
- Directory.Packages.props
|
||||
pull_request_target:
|
||||
paths:
|
||||
- .github/workflows/bff-**
|
||||
- bff/**
|
||||
- Directory.Packages.props
|
||||
env:
|
||||
DOTNET_NOLOGO: true
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
DOTNET_CLI_TELEMETRY_OPTOUT: true
|
||||
jobs:
|
||||
build:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
runs-on: [ubuntu-latest, windows-latest]
|
||||
name: ${{ matrix.runs-on }}
|
||||
runs-on: ${{ matrix.runs-on }}
|
||||
name: Build
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: read
|
||||
checks: write
|
||||
contents: read
|
||||
packages: write
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
working-directory: bff
|
||||
timeout-minutes: 15
|
||||
steps:
|
||||
- uses: actions/checkout@v2.4.0
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup dotnet
|
||||
uses: actions/setup-dotnet@v4
|
||||
- name: Setup Dotnet
|
||||
uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25
|
||||
with:
|
||||
dotnet-version: |
|
||||
dotnet-version: |-
|
||||
6.0.x
|
||||
8.0.x
|
||||
9.0.x
|
||||
|
||||
- run: dotnet --info
|
||||
|
||||
- if: contains(matrix.runs-on, 'macOS') || contains(matrix.runs-on, 'ubuntu')
|
||||
run: ./build.sh
|
||||
- if: matrix.runs-on == 'windows-latest' && github.ref != 'refs/heads/main' && !contains(github.ref, 'refs/tags/')
|
||||
run: ./build.ps1
|
||||
- if: (matrix.runs-on == 'windows-latest') && (github.ref == 'refs/heads/main' || contains(github.ref, 'refs/tags/'))
|
||||
- name: Test - Duende.Bff.Tests
|
||||
run: dotnet test -c Release test/Duende.Bff.Tests --logger "console;verbosity=normal" --logger "trx;LogFileName=Tests.trx" --collect:"XPlat Code Coverage"
|
||||
- name: Test report - Duende.Bff.Tests
|
||||
if: success() || failure()
|
||||
uses: dorny/test-reporter@31a54ee7ebcacc03a09ea97a7e5465a47b84aea5
|
||||
with:
|
||||
name: Test Report - Duende.Bff.Tests
|
||||
path: bff/test/Duende.Bff.Tests/TestResults/Tests.trx
|
||||
reporter: dotnet-trx
|
||||
fail-on-error: true
|
||||
fail-on-empty: true
|
||||
- name: Test - Duende.Bff.EntityFramework.Tests
|
||||
run: dotnet test -c Release test/Duende.Bff.EntityFramework.Tests --logger "console;verbosity=normal" --logger "trx;LogFileName=Tests.trx" --collect:"XPlat Code Coverage"
|
||||
- name: Test report - Duende.Bff.EntityFramework.Tests
|
||||
if: success() || failure()
|
||||
uses: dorny/test-reporter@31a54ee7ebcacc03a09ea97a7e5465a47b84aea5
|
||||
with:
|
||||
name: Test Report - Duende.Bff.EntityFramework.Tests
|
||||
path: bff/test/Duende.Bff.EntityFramework.Tests/TestResults/Tests.trx
|
||||
reporter: dotnet-trx
|
||||
fail-on-error: true
|
||||
fail-on-empty: true
|
||||
- name: Test - Duende.Bff.Blazor.UnitTests
|
||||
run: dotnet test -c Release test/Duende.Bff.Blazor.UnitTests --logger "console;verbosity=normal" --logger "trx;LogFileName=Tests.trx" --collect:"XPlat Code Coverage"
|
||||
- name: Test report - Duende.Bff.Blazor.UnitTests
|
||||
if: success() || failure()
|
||||
uses: dorny/test-reporter@31a54ee7ebcacc03a09ea97a7e5465a47b84aea5
|
||||
with:
|
||||
name: Test Report - Duende.Bff.Blazor.UnitTests
|
||||
path: bff/test/Duende.Bff.Blazor.UnitTests/TestResults/Tests.trx
|
||||
reporter: dotnet-trx
|
||||
fail-on-error: true
|
||||
fail-on-empty: true
|
||||
- name: Test - Duende.Bff.Blazor.Client.UnitTests
|
||||
run: dotnet test -c Release test/Duende.Bff.Blazor.Client.UnitTests --logger "console;verbosity=normal" --logger "trx;LogFileName=Tests.trx" --collect:"XPlat Code Coverage"
|
||||
- name: Test report - Duende.Bff.Blazor.Client.UnitTests
|
||||
if: success() || failure()
|
||||
uses: dorny/test-reporter@31a54ee7ebcacc03a09ea97a7e5465a47b84aea5
|
||||
with:
|
||||
name: Test Report - Duende.Bff.Blazor.Client.UnitTests
|
||||
path: bff/test/Duende.Bff.Blazor.Client.UnitTests/TestResults/Tests.trx
|
||||
reporter: dotnet-trx
|
||||
fail-on-error: true
|
||||
fail-on-empty: true
|
||||
- name: Tool restore
|
||||
run: dotnet tool restore
|
||||
- name: Pack Duende.Bff
|
||||
run: dotnet pack -c Release src/Duende.Bff -o artifacts
|
||||
- name: Pack Duende.Bff.Blazor
|
||||
run: dotnet pack -c Release src/Duende.Bff.Blazor -o artifacts
|
||||
- name: Pack Duende.Bff.Blazor.Client
|
||||
run: dotnet pack -c Release src/Duende.Bff.Blazor.Client -o artifacts
|
||||
- name: Pack Duende.Bff.EntityFramework
|
||||
run: dotnet pack -c Release src/Duende.Bff.EntityFramework -o artifacts
|
||||
- name: Pack Duende.Bff.Yarp
|
||||
run: dotnet pack -c Release src/Duende.Bff.Yarp -o artifacts
|
||||
- name: Sign packages
|
||||
run: |-
|
||||
for file in artifacts/*.nupkg; do
|
||||
dotnet NuGetKeyVaultSignTool sign "$file" --file-digest sha256 --timestamp-rfc3161 http://timestamp.digicert.com --azure-key-vault-url https://duendecodesigninghsm.vault.azure.net/ --azure-key-vault-client-id 18e3de68-2556-4345-8076-a46fad79e474 --azure-key-vault-tenant-id ed3089f0-5401-4758-90eb-066124e2d907 --azure-key-vault-client-secret ${{ secrets.SignClientSecret }} --azure-key-vault-certificate NuGetPackageSigning
|
||||
done
|
||||
- name: Push packages to MyGet
|
||||
if: github.ref == 'refs/heads/main'
|
||||
run: dotnet nuget push artifacts/*.nupkg --source https://www.myget.org/F/duende_identityserver/api/v2/package --api-key ${{ secrets.MYGET }} --skip-duplicate
|
||||
- name: Push packages to GitHub
|
||||
if: github.ref == 'refs/heads/main'
|
||||
run: dotnet nuget push artifacts/*.nupkg --source https://nuget.pkg.github.com/DuendeSoftware/index.json --api-key ${{ secrets.GITHUB_TOKEN }} --skip-duplicate
|
||||
env:
|
||||
SignClientSecret: ${{ secrets.SIGNCLIENTSECRET }}
|
||||
run: |
|
||||
./build.ps1 sign
|
||||
dotnet nuget push .\artifacts\*.nupkg -s https://www.myget.org/F/duende_identityserver/api/v2/package -k ${{ secrets.MYGET }}
|
||||
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
NUGET_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Upload Artifacts
|
||||
if: github.ref == 'refs/heads/main'
|
||||
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882
|
||||
with:
|
||||
name: artifacts
|
||||
path: bff/artifacts/*.nupkg
|
||||
overwrite: true
|
||||
retention-days: 15
|
||||
|
|
|
|||
102
.github/workflows/bff-release.yml
vendored
Normal file
102
.github/workflows/bff-release.yml
vendored
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
# This was generated by tool. Edits will be overwritten.
|
||||
|
||||
name: bff/release
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
version:
|
||||
description: 'Version in format X.Y.Z or X.Y.Z-preview.'
|
||||
type: string
|
||||
required: true
|
||||
default: '0.0.0'
|
||||
env:
|
||||
DOTNET_NOLOGO: true
|
||||
DOTNET_CLI_TELEMETRY_OPTOUT: true
|
||||
jobs:
|
||||
tag:
|
||||
name: Tag and Pack
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
packages: write
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
working-directory: bff
|
||||
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: Git tag
|
||||
run: |-
|
||||
git config --global user.email "github-bot@duendesoftware.com"
|
||||
git config --global user.name "Duende Software GitHub Bot"
|
||||
git tag -a bff-${{ github.event.inputs.version }} -m "Release v${{ github.event.inputs.version }}"
|
||||
git push origin bff-${{ github.event.inputs.version }}
|
||||
- name: Pack Duende.Bff
|
||||
run: dotnet pack -c Release src/Duende.Bff -o artifacts
|
||||
- name: Pack Duende.Bff.Blazor
|
||||
run: dotnet pack -c Release src/Duende.Bff.Blazor -o artifacts
|
||||
- name: Pack Duende.Bff.Blazor.Client
|
||||
run: dotnet pack -c Release src/Duende.Bff.Blazor.Client -o artifacts
|
||||
- name: Pack Duende.Bff.EntityFramework
|
||||
run: dotnet pack -c Release src/Duende.Bff.EntityFramework -o artifacts
|
||||
- name: Pack Duende.Bff.Yarp
|
||||
run: dotnet pack -c Release src/Duende.Bff.Yarp -o artifacts
|
||||
- name: Tool restore
|
||||
run: dotnet tool restore
|
||||
- name: Sign packages
|
||||
run: |-
|
||||
for file in artifacts/*.nupkg; do
|
||||
dotnet NuGetKeyVaultSignTool sign "$file" --file-digest sha256 --timestamp-rfc3161 http://timestamp.digicert.com --azure-key-vault-url https://duendecodesigninghsm.vault.azure.net/ --azure-key-vault-client-id 18e3de68-2556-4345-8076-a46fad79e474 --azure-key-vault-tenant-id ed3089f0-5401-4758-90eb-066124e2d907 --azure-key-vault-client-secret ${{ secrets.SignClientSecret }} --azure-key-vault-certificate NuGetPackageSigning
|
||||
done
|
||||
- name: Push packages to MyGet
|
||||
if: github.ref == 'refs/heads/main'
|
||||
run: dotnet nuget push artifacts/*.nupkg --source https://www.myget.org/F/duende_identityserver/api/v2/package --api-key ${{ secrets.MYGET }} --skip-duplicate
|
||||
- name: Push packages to GitHub
|
||||
if: github.ref == 'refs/heads/main'
|
||||
run: dotnet nuget push artifacts/*.nupkg --source https://nuget.pkg.github.com/DuendeSoftware/index.json --api-key ${{ secrets.GITHUB_TOKEN }} --skip-duplicate
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
NUGET_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Upload Artifacts
|
||||
if: github.ref == 'refs/heads/main'
|
||||
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882
|
||||
with:
|
||||
name: artifacts
|
||||
path: bff/artifacts/*.nupkg
|
||||
overwrite: true
|
||||
retention-days: 15
|
||||
publish:
|
||||
name: Publish to nuget.org
|
||||
needs:
|
||||
- tag
|
||||
runs-on: ubuntu-latest
|
||||
environment:
|
||||
name: nuget.org
|
||||
steps:
|
||||
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16
|
||||
with:
|
||||
name: artifacts
|
||||
path: artifacts
|
||||
- name: Setup Dotnet
|
||||
uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25
|
||||
with:
|
||||
dotnet-version: |-
|
||||
6.0.x
|
||||
8.0.x
|
||||
9.0.x
|
||||
- name: List files
|
||||
run: tree
|
||||
shell: bash
|
||||
- name: Push packages to nuget.org
|
||||
if: github.ref == 'refs/heads/main'
|
||||
run: dotnet nuget push artifacts/*.nupkg --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_ORG_API_KEY }} --skip-duplicate
|
||||
67
.github/workflows/codeql-analysis.yml
vendored
67
.github/workflows/codeql-analysis.yml
vendored
|
|
@ -1,66 +1,31 @@
|
|||
# For most projects, this workflow file will not need changing; you simply need
|
||||
# to commit it to your repository.
|
||||
#
|
||||
# You may wish to alter this file to override the set of languages analyzed,
|
||||
# or to provide custom queries or build logic.
|
||||
#
|
||||
# ******** NOTE ********
|
||||
# We have attempted to detect the languages in your repository. Please check
|
||||
# the `language` matrix defined below to confirm you have the correct set of
|
||||
# supported CodeQL languages.
|
||||
#
|
||||
name: "CodeQL"
|
||||
name: codeql
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main ]
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches: [ main ]
|
||||
schedule:
|
||||
- cron: '39 8 * * 1'
|
||||
- cron: '38 15 * * 0'
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: [ 'csharp' ]
|
||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
|
||||
# Learn more:
|
||||
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
|
||||
defaults:
|
||||
run:
|
||||
working-directory: identity-server
|
||||
permissions:
|
||||
actions: read
|
||||
contents: read
|
||||
security-events: write
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup dotnet
|
||||
uses: actions/setup-dotnet@v4
|
||||
with:
|
||||
dotnet-version: |
|
||||
8.0.x
|
||||
9.0.x
|
||||
|
||||
- run: dotnet --info
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v3
|
||||
uses: github/codeql-action/init@ea9e4e37992a54ee68a9622e985e60c8e8f12d9f # 3.27.4
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
tools: latest
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
# By default, queries listed here will override any specified in a config file.
|
||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
||||
languages: csharp
|
||||
|
||||
- name: Auto build
|
||||
uses: github/codeql-action/autobuild@ea9e4e37992a54ee68a9622e985e60c8e8f12d9f # 3.27.4
|
||||
|
||||
- run: ./build.sh codeql
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v3
|
||||
- name: Perform CodeQL analysis
|
||||
uses: github/codeql-action/analyze@ea9e4e37992a54ee68a9622e985e60c8e8f12d9f # 3.27.4
|
||||
with:
|
||||
category: "/language:csharp"
|
||||
|
|
|
|||
175
.github/workflows/identity-server-ci.yml
vendored
175
.github/workflows/identity-server-ci.yml
vendored
|
|
@ -1,57 +1,148 @@
|
|||
name: "identity-server-ci"
|
||||
# This was generated by tool. Edits will be overwritten.
|
||||
|
||||
name: identity-server/ci
|
||||
on:
|
||||
workflow_dispatch:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- releases/is/**
|
||||
tags:
|
||||
- 'is-*.*.*'
|
||||
paths:
|
||||
- 'identity-server/**'
|
||||
|
||||
pull_request:
|
||||
paths:
|
||||
- 'identity-server/**'
|
||||
paths:
|
||||
- .github/workflows/identity-server-**
|
||||
- identity-server/**
|
||||
- Directory.Packages.props
|
||||
pull_request_target:
|
||||
paths:
|
||||
- .github/workflows/identity-server-**
|
||||
- identity-server/**
|
||||
- Directory.Packages.props
|
||||
env:
|
||||
DOTNET_NOLOGO: true
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
DOTNET_CLI_TELEMETRY_OPTOUT: true
|
||||
jobs:
|
||||
build:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
runs-on: [macOS-latest, ubuntu-latest, windows-latest]
|
||||
name: ${{ matrix.runs-on }}
|
||||
runs-on: ${{ matrix.runs-on }}
|
||||
name: Build
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: read
|
||||
checks: write
|
||||
contents: read
|
||||
packages: write
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
working-directory: identity-server
|
||||
timeout-minutes: 15
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup dotnet (main)
|
||||
uses: actions/setup-dotnet@v4
|
||||
- name: Setup Dotnet
|
||||
uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25
|
||||
with:
|
||||
dotnet-version: |
|
||||
8.0.x
|
||||
9.0.x
|
||||
|
||||
- run: dotnet --info
|
||||
|
||||
- if: contains(matrix.runs-on, 'macOS') || contains(matrix.runs-on, 'ubuntu')
|
||||
run: ./build.sh
|
||||
- if: matrix.runs-on == 'windows-latest' && github.ref != 'refs/heads/main' && !contains(github.ref, 'refs/tags/')
|
||||
run: ./build.ps1
|
||||
- if: (matrix.runs-on == 'windows-latest') && (github.ref == 'refs/heads/main' || contains(github.ref, 'refs/tags/'))
|
||||
dotnet-version: |-
|
||||
6.0.x
|
||||
8.0.x
|
||||
9.0.x
|
||||
- name: Test - Configuration.IntegrationTests
|
||||
run: dotnet test -c Release test/Configuration.IntegrationTests --logger "console;verbosity=normal" --logger "trx;LogFileName=Tests.trx" --collect:"XPlat Code Coverage"
|
||||
- name: Test report - Configuration.IntegrationTests
|
||||
if: success() || failure()
|
||||
uses: dorny/test-reporter@31a54ee7ebcacc03a09ea97a7e5465a47b84aea5
|
||||
with:
|
||||
name: Test Report - Configuration.IntegrationTests
|
||||
path: identity-server/test/Configuration.IntegrationTests/TestResults/Tests.trx
|
||||
reporter: dotnet-trx
|
||||
fail-on-error: true
|
||||
fail-on-empty: true
|
||||
- name: Test - EntityFramework.IntegrationTests
|
||||
run: dotnet test -c Release test/EntityFramework.IntegrationTests --logger "console;verbosity=normal" --logger "trx;LogFileName=Tests.trx" --collect:"XPlat Code Coverage"
|
||||
- name: Test report - EntityFramework.IntegrationTests
|
||||
if: success() || failure()
|
||||
uses: dorny/test-reporter@31a54ee7ebcacc03a09ea97a7e5465a47b84aea5
|
||||
with:
|
||||
name: Test Report - EntityFramework.IntegrationTests
|
||||
path: identity-server/test/EntityFramework.IntegrationTests/TestResults/Tests.trx
|
||||
reporter: dotnet-trx
|
||||
fail-on-error: true
|
||||
fail-on-empty: true
|
||||
- name: Test - EntityFramework.Storage.IntegrationTests
|
||||
run: dotnet test -c Release test/EntityFramework.Storage.IntegrationTests --logger "console;verbosity=normal" --logger "trx;LogFileName=Tests.trx" --collect:"XPlat Code Coverage"
|
||||
- name: Test report - EntityFramework.Storage.IntegrationTests
|
||||
if: success() || failure()
|
||||
uses: dorny/test-reporter@31a54ee7ebcacc03a09ea97a7e5465a47b84aea5
|
||||
with:
|
||||
name: Test Report - EntityFramework.Storage.IntegrationTests
|
||||
path: identity-server/test/EntityFramework.Storage.IntegrationTests/TestResults/Tests.trx
|
||||
reporter: dotnet-trx
|
||||
fail-on-error: true
|
||||
fail-on-empty: true
|
||||
- name: Test - EntityFramework.Storage.UnitTests
|
||||
run: dotnet test -c Release test/EntityFramework.Storage.UnitTests --logger "console;verbosity=normal" --logger "trx;LogFileName=Tests.trx" --collect:"XPlat Code Coverage"
|
||||
- name: Test report - EntityFramework.Storage.UnitTests
|
||||
if: success() || failure()
|
||||
uses: dorny/test-reporter@31a54ee7ebcacc03a09ea97a7e5465a47b84aea5
|
||||
with:
|
||||
name: Test Report - EntityFramework.Storage.UnitTests
|
||||
path: identity-server/test/EntityFramework.Storage.UnitTests/TestResults/Tests.trx
|
||||
reporter: dotnet-trx
|
||||
fail-on-error: true
|
||||
fail-on-empty: true
|
||||
- name: Test - IdentityServer.IntegrationTests
|
||||
run: dotnet test -c Release test/IdentityServer.IntegrationTests --logger "console;verbosity=normal" --logger "trx;LogFileName=Tests.trx" --collect:"XPlat Code Coverage"
|
||||
- name: Test report - IdentityServer.IntegrationTests
|
||||
if: success() || failure()
|
||||
uses: dorny/test-reporter@31a54ee7ebcacc03a09ea97a7e5465a47b84aea5
|
||||
with:
|
||||
name: Test Report - IdentityServer.IntegrationTests
|
||||
path: identity-server/test/IdentityServer.IntegrationTests/TestResults/Tests.trx
|
||||
reporter: dotnet-trx
|
||||
fail-on-error: true
|
||||
fail-on-empty: true
|
||||
- name: Test - IdentityServer.UnitTests
|
||||
run: dotnet test -c Release test/IdentityServer.UnitTests --logger "console;verbosity=normal" --logger "trx;LogFileName=Tests.trx" --collect:"XPlat Code Coverage"
|
||||
- name: Test report - IdentityServer.UnitTests
|
||||
if: success() || failure()
|
||||
uses: dorny/test-reporter@31a54ee7ebcacc03a09ea97a7e5465a47b84aea5
|
||||
with:
|
||||
name: Test Report - IdentityServer.UnitTests
|
||||
path: identity-server/test/IdentityServer.UnitTests/TestResults/Tests.trx
|
||||
reporter: dotnet-trx
|
||||
fail-on-error: true
|
||||
fail-on-empty: true
|
||||
- name: Tool restore
|
||||
run: dotnet tool restore
|
||||
- name: Pack AspNetIdentity
|
||||
run: dotnet pack -c Release src/AspNetIdentity -o artifacts
|
||||
- name: Pack Configuration
|
||||
run: dotnet pack -c Release src/Configuration -o artifacts
|
||||
- name: Pack Configuration.EntityFramework
|
||||
run: dotnet pack -c Release src/Configuration.EntityFramework -o artifacts
|
||||
- name: Pack EntityFramework
|
||||
run: dotnet pack -c Release src/EntityFramework -o artifacts
|
||||
- name: Pack EntityFramework.Storage
|
||||
run: dotnet pack -c Release src/EntityFramework.Storage -o artifacts
|
||||
- name: Pack IdentityServer
|
||||
run: dotnet pack -c Release src/IdentityServer -o artifacts
|
||||
- name: Pack Storage
|
||||
run: dotnet pack -c Release src/Storage -o artifacts
|
||||
- name: Sign packages
|
||||
run: |-
|
||||
for file in artifacts/*.nupkg; do
|
||||
dotnet NuGetKeyVaultSignTool sign "$file" --file-digest sha256 --timestamp-rfc3161 http://timestamp.digicert.com --azure-key-vault-url https://duendecodesigninghsm.vault.azure.net/ --azure-key-vault-client-id 18e3de68-2556-4345-8076-a46fad79e474 --azure-key-vault-tenant-id ed3089f0-5401-4758-90eb-066124e2d907 --azure-key-vault-client-secret ${{ secrets.SignClientSecret }} --azure-key-vault-certificate NuGetPackageSigning
|
||||
done
|
||||
- name: Push packages to MyGet
|
||||
if: github.ref == 'refs/heads/main'
|
||||
run: dotnet nuget push artifacts/*.nupkg --source https://www.myget.org/F/duende_identityserver/api/v2/package --api-key ${{ secrets.MYGET }} --skip-duplicate
|
||||
- name: Push packages to GitHub
|
||||
if: github.ref == 'refs/heads/main'
|
||||
run: dotnet nuget push artifacts/*.nupkg --source https://nuget.pkg.github.com/DuendeSoftware/index.json --api-key ${{ secrets.GITHUB_TOKEN }} --skip-duplicate
|
||||
env:
|
||||
SignClientSecret: ${{ secrets.SIGNCLIENTSECRET }}
|
||||
run: |
|
||||
./build.ps1 sign
|
||||
dotnet nuget push .\artifacts\*.nupkg -s https://www.myget.org/F/duende_identityserver/api/v2/package -k ${{ secrets.MYGET }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
NUGET_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Upload Artifacts
|
||||
if: github.ref == 'refs/heads/main'
|
||||
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882
|
||||
with:
|
||||
name: artifacts
|
||||
path: identity-server/artifacts/*.nupkg
|
||||
overwrite: true
|
||||
retention-days: 15
|
||||
|
|
|
|||
106
.github/workflows/identity-server-release.yml
vendored
Normal file
106
.github/workflows/identity-server-release.yml
vendored
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
# This was generated by tool. Edits will be overwritten.
|
||||
|
||||
name: identity-server/release
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
version:
|
||||
description: 'Version in format X.Y.Z or X.Y.Z-preview.'
|
||||
type: string
|
||||
required: true
|
||||
default: '0.0.0'
|
||||
env:
|
||||
DOTNET_NOLOGO: true
|
||||
DOTNET_CLI_TELEMETRY_OPTOUT: true
|
||||
jobs:
|
||||
tag:
|
||||
name: Tag and Pack
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
packages: write
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
working-directory: identity-server
|
||||
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: Git tag
|
||||
run: |-
|
||||
git config --global user.email "github-bot@duendesoftware.com"
|
||||
git config --global user.name "Duende Software GitHub Bot"
|
||||
git tag -a is-${{ github.event.inputs.version }} -m "Release v${{ github.event.inputs.version }}"
|
||||
git push origin is-${{ github.event.inputs.version }}
|
||||
- name: Pack AspNetIdentity
|
||||
run: dotnet pack -c Release src/AspNetIdentity -o artifacts
|
||||
- name: Pack Configuration
|
||||
run: dotnet pack -c Release src/Configuration -o artifacts
|
||||
- name: Pack Configuration.EntityFramework
|
||||
run: dotnet pack -c Release src/Configuration.EntityFramework -o artifacts
|
||||
- name: Pack EntityFramework
|
||||
run: dotnet pack -c Release src/EntityFramework -o artifacts
|
||||
- name: Pack EntityFramework.Storage
|
||||
run: dotnet pack -c Release src/EntityFramework.Storage -o artifacts
|
||||
- name: Pack IdentityServer
|
||||
run: dotnet pack -c Release src/IdentityServer -o artifacts
|
||||
- name: Pack Storage
|
||||
run: dotnet pack -c Release src/Storage -o artifacts
|
||||
- name: Tool restore
|
||||
run: dotnet tool restore
|
||||
- name: Sign packages
|
||||
run: |-
|
||||
for file in artifacts/*.nupkg; do
|
||||
dotnet NuGetKeyVaultSignTool sign "$file" --file-digest sha256 --timestamp-rfc3161 http://timestamp.digicert.com --azure-key-vault-url https://duendecodesigninghsm.vault.azure.net/ --azure-key-vault-client-id 18e3de68-2556-4345-8076-a46fad79e474 --azure-key-vault-tenant-id ed3089f0-5401-4758-90eb-066124e2d907 --azure-key-vault-client-secret ${{ secrets.SignClientSecret }} --azure-key-vault-certificate NuGetPackageSigning
|
||||
done
|
||||
- name: Push packages to MyGet
|
||||
if: github.ref == 'refs/heads/main'
|
||||
run: dotnet nuget push artifacts/*.nupkg --source https://www.myget.org/F/duende_identityserver/api/v2/package --api-key ${{ secrets.MYGET }} --skip-duplicate
|
||||
- name: Push packages to GitHub
|
||||
if: github.ref == 'refs/heads/main'
|
||||
run: dotnet nuget push artifacts/*.nupkg --source https://nuget.pkg.github.com/DuendeSoftware/index.json --api-key ${{ secrets.GITHUB_TOKEN }} --skip-duplicate
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
NUGET_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Upload Artifacts
|
||||
if: github.ref == 'refs/heads/main'
|
||||
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882
|
||||
with:
|
||||
name: artifacts
|
||||
path: identity-server/artifacts/*.nupkg
|
||||
overwrite: true
|
||||
retention-days: 15
|
||||
publish:
|
||||
name: Publish to nuget.org
|
||||
needs:
|
||||
- tag
|
||||
runs-on: ubuntu-latest
|
||||
environment:
|
||||
name: nuget.org
|
||||
steps:
|
||||
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16
|
||||
with:
|
||||
name: artifacts
|
||||
path: artifacts
|
||||
- name: Setup Dotnet
|
||||
uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25
|
||||
with:
|
||||
dotnet-version: |-
|
||||
6.0.x
|
||||
8.0.x
|
||||
9.0.x
|
||||
- name: List files
|
||||
run: tree
|
||||
shell: bash
|
||||
- name: Push packages to nuget.org
|
||||
if: github.ref == 'refs/heads/main'
|
||||
run: dotnet nuget push artifacts/*.nupkg --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_ORG_API_KEY }} --skip-duplicate
|
||||
81
.github/workflows/ignore-this-ci.yml
vendored
Normal file
81
.github/workflows/ignore-this-ci.yml
vendored
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
# This was generated by tool. Edits will be overwritten.
|
||||
|
||||
name: ignore-this/ci
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
paths:
|
||||
- .github/workflows/ignore-this-**
|
||||
- ignore-this/**
|
||||
- Directory.Packages.props
|
||||
pull_request_target:
|
||||
paths:
|
||||
- .github/workflows/ignore-this-**
|
||||
- ignore-this/**
|
||||
- Directory.Packages.props
|
||||
env:
|
||||
DOTNET_NOLOGO: true
|
||||
DOTNET_CLI_TELEMETRY_OPTOUT: true
|
||||
jobs:
|
||||
build:
|
||||
name: 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: Test - IgnoreThis.Tests
|
||||
run: dotnet test -c Release test/IgnoreThis.Tests --logger "console;verbosity=normal" --logger "trx;LogFileName=Tests.trx" --collect:"XPlat Code Coverage"
|
||||
- name: Test report - IgnoreThis.Tests
|
||||
if: success() || failure()
|
||||
uses: dorny/test-reporter@31a54ee7ebcacc03a09ea97a7e5465a47b84aea5
|
||||
with:
|
||||
name: Test Report - IgnoreThis.Tests
|
||||
path: ignore-this/test/IgnoreThis.Tests/TestResults/Tests.trx
|
||||
reporter: dotnet-trx
|
||||
fail-on-error: true
|
||||
fail-on-empty: true
|
||||
- name: Tool restore
|
||||
run: dotnet tool restore
|
||||
- name: Pack IgnoreThis
|
||||
run: dotnet pack -c Release src/IgnoreThis -o artifacts
|
||||
- name: Sign packages
|
||||
run: |-
|
||||
for file in artifacts/*.nupkg; do
|
||||
dotnet NuGetKeyVaultSignTool sign "$file" --file-digest sha256 --timestamp-rfc3161 http://timestamp.digicert.com --azure-key-vault-url https://duendecodesigninghsm.vault.azure.net/ --azure-key-vault-client-id 18e3de68-2556-4345-8076-a46fad79e474 --azure-key-vault-tenant-id ed3089f0-5401-4758-90eb-066124e2d907 --azure-key-vault-client-secret ${{ secrets.SignClientSecret }} --azure-key-vault-certificate NuGetPackageSigning
|
||||
done
|
||||
- name: Push packages to MyGet
|
||||
if: github.ref == 'refs/heads/main'
|
||||
run: dotnet nuget push artifacts/*.nupkg --source https://www.myget.org/F/duende_identityserver/api/v2/package --api-key ${{ secrets.MYGET }} --skip-duplicate
|
||||
- name: Push packages to GitHub
|
||||
if: github.ref == 'refs/heads/main'
|
||||
run: dotnet nuget push artifacts/*.nupkg --source https://nuget.pkg.github.com/DuendeSoftware/index.json --api-key ${{ secrets.GITHUB_TOKEN }} --skip-duplicate
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
NUGET_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Upload Artifacts
|
||||
if: github.ref == 'refs/heads/main'
|
||||
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882
|
||||
with:
|
||||
name: artifacts
|
||||
path: ignore-this/artifacts/*.nupkg
|
||||
overwrite: true
|
||||
retention-days: 15
|
||||
94
.github/workflows/ignore-this-release.yml
vendored
Normal file
94
.github/workflows/ignore-this-release.yml
vendored
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
# This was generated by tool. Edits will be overwritten.
|
||||
|
||||
name: ignore-this/release
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
version:
|
||||
description: 'Version in format X.Y.Z or X.Y.Z-preview.'
|
||||
type: string
|
||||
required: true
|
||||
default: '0.0.0'
|
||||
env:
|
||||
DOTNET_NOLOGO: true
|
||||
DOTNET_CLI_TELEMETRY_OPTOUT: true
|
||||
jobs:
|
||||
tag:
|
||||
name: Tag and Pack
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
packages: write
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
working-directory: ignore-this
|
||||
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: Git tag
|
||||
run: |-
|
||||
git config --global user.email "github-bot@duendesoftware.com"
|
||||
git config --global user.name "Duende Software GitHub Bot"
|
||||
git tag -a it-${{ github.event.inputs.version }} -m "Release v${{ github.event.inputs.version }}"
|
||||
git push origin it-${{ github.event.inputs.version }}
|
||||
- name: Pack IgnoreThis
|
||||
run: dotnet pack -c Release src/IgnoreThis -o artifacts
|
||||
- name: Tool restore
|
||||
run: dotnet tool restore
|
||||
- name: Sign packages
|
||||
run: |-
|
||||
for file in artifacts/*.nupkg; do
|
||||
dotnet NuGetKeyVaultSignTool sign "$file" --file-digest sha256 --timestamp-rfc3161 http://timestamp.digicert.com --azure-key-vault-url https://duendecodesigninghsm.vault.azure.net/ --azure-key-vault-client-id 18e3de68-2556-4345-8076-a46fad79e474 --azure-key-vault-tenant-id ed3089f0-5401-4758-90eb-066124e2d907 --azure-key-vault-client-secret ${{ secrets.SignClientSecret }} --azure-key-vault-certificate NuGetPackageSigning
|
||||
done
|
||||
- name: Push packages to MyGet
|
||||
if: github.ref == 'refs/heads/main'
|
||||
run: dotnet nuget push artifacts/*.nupkg --source https://www.myget.org/F/duende_identityserver/api/v2/package --api-key ${{ secrets.MYGET }} --skip-duplicate
|
||||
- name: Push packages to GitHub
|
||||
if: github.ref == 'refs/heads/main'
|
||||
run: dotnet nuget push artifacts/*.nupkg --source https://nuget.pkg.github.com/DuendeSoftware/index.json --api-key ${{ secrets.GITHUB_TOKEN }} --skip-duplicate
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
NUGET_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Upload Artifacts
|
||||
if: github.ref == 'refs/heads/main'
|
||||
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882
|
||||
with:
|
||||
name: artifacts
|
||||
path: ignore-this/artifacts/*.nupkg
|
||||
overwrite: true
|
||||
retention-days: 15
|
||||
publish:
|
||||
name: Publish to nuget.org
|
||||
needs:
|
||||
- tag
|
||||
runs-on: ubuntu-latest
|
||||
environment:
|
||||
name: nuget.org
|
||||
steps:
|
||||
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16
|
||||
with:
|
||||
name: artifacts
|
||||
path: artifacts
|
||||
- name: Setup Dotnet
|
||||
uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25
|
||||
with:
|
||||
dotnet-version: |-
|
||||
6.0.x
|
||||
8.0.x
|
||||
9.0.x
|
||||
- name: List files
|
||||
run: tree
|
||||
shell: bash
|
||||
- name: Push packages to nuget.org
|
||||
if: github.ref == 'refs/heads/main'
|
||||
run: dotnet nuget push artifacts/*.nupkg --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_ORG_API_KEY }} --skip-duplicate
|
||||
0
identity-server/.gitignore → .gitignore
vendored
0
identity-server/.gitignore → .gitignore
vendored
121
Directory.Packages.props
Normal file
121
Directory.Packages.props
Normal file
|
|
@ -0,0 +1,121 @@
|
|||
<Project>
|
||||
<PropertyGroup Condition="'$(TargetFramework)' == 'net8.0'">
|
||||
<AspNetCoreVersion>8.0.1</AspNetCoreVersion>
|
||||
<!-- EF must be at least 8.0.10 so that 'Microsoft.Extensions.Caching.Memory'
|
||||
is at least 8.0.1, which addresses a known high severity vulnerability.
|
||||
The SQL Server EF provider that is commonly used has a transitive
|
||||
vulnerability in 8.0.10 that is fixed in 8.0.11, so going to 8.0.11 seems
|
||||
prudent. -->
|
||||
<EntityFrameworkVersion>8.0.11</EntityFrameworkVersion>
|
||||
<IdentityServerVersion>7.1.0</IdentityServerVersion>
|
||||
<MicrosoftExtensionsVersion>8.0.1</MicrosoftExtensionsVersion>
|
||||
<OpenTelemetryVersion>1.11.0</OpenTelemetryVersion>
|
||||
<WilsonVersion>7.1.2</WilsonVersion>
|
||||
<YarpVersion>2.1.0</YarpVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(TargetFramework)' == 'net9.0'">
|
||||
<AspNetCoreVersion>9.0.0</AspNetCoreVersion>
|
||||
<EntityFrameworkVersion>9.0.0</EntityFrameworkVersion>
|
||||
<IdentityServerVersion>7.1.0</IdentityServerVersion>
|
||||
<MicrosoftExtensionsVersion>9.0.0</MicrosoftExtensionsVersion>
|
||||
<OpenTelemetryVersion>1.11.0</OpenTelemetryVersion>
|
||||
<WilsonVersion>8.0.1</WilsonVersion>
|
||||
<YarpVersion>2.1.0</YarpVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageVersion Include="AngleSharp" Version="1.1.2" />
|
||||
<PackageVersion Include="Aspire.Hosting.AppHost" Version="9.0.0" />
|
||||
<PackageVersion Include="Aspire.Hosting.Testing" Version="9.0.0" />
|
||||
<PackageVersion Include="BullsEye" Version="5.0.0" />
|
||||
<PackageVersion Include="coverlet.collector" Version="6.0.2" />
|
||||
<PackageVersion Include="Duende.AccessTokenManagement" Version="3.1.1" />
|
||||
<PackageVersion Include="Duende.AccessTokenManagement.OpenIdConnect" Version="3.1.1" />
|
||||
<PackageVersion Include="Duende.AspNetCore.Authentication.JwtBearer" Version="0.1.3" />
|
||||
<PackageVersion Include="Duende.IdentityModel" Version="7.0.0" />
|
||||
<PackageVersion Include="Duende.IdentityServer" Version="$(IdentityServerVersion)" />
|
||||
<PackageVersion Include="FluentAssertions" Version="6.5.1" />
|
||||
<PackageVersion Include="FluentAssertions.Web" Version="1.5.0" />
|
||||
<PackageVersion Include="IdentityModel.AspNetCore.OAuth2Introspection" Version="6.2.0" />
|
||||
<PackageVersion Include="Microsoft.AspNetCore.Authentication.Certificate" Version="$(AspNetCoreVersion)" />
|
||||
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="$(AspNetCoreVersion)" />
|
||||
<PackageVersion Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="$(AspNetCoreVersion)" />
|
||||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly" Version="$(AspNetCoreVersion)" />
|
||||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="$(AspNetCoreVersion)" />
|
||||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Authentication" Version="$(AspNetCoreVersion)" />
|
||||
<PackageVersion Include="Microsoft.AspNetCore.Components.Authorization" Version="$(AspNetCoreVersion)" />
|
||||
<PackageVersion Include="Microsoft.AspNetCore.DataProtection.Abstractions" Version="$(AspNetCoreVersion)" />
|
||||
<PackageVersion Include="Microsoft.AspNetCore.Identity" Version="$(AspNetCoreVersion)" />
|
||||
<PackageVersion Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="$(AspNetCoreVersion)" />
|
||||
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="$(AspNetCoreVersion)" />
|
||||
<PackageVersion Include="Microsoft.AspNetCore.TestHost" Version="$(AspNetCoreVersion)" />
|
||||
<PackageVersion Include="Microsoft.AspNetCore.WebUtilities" Version="2.2.0" />
|
||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="$(EntityFrameworkVersion)" />
|
||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.InMemory" Version="$(EntityFrameworkVersion)" />
|
||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="$(EntityFrameworkVersion)" />
|
||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="$(EntityFrameworkVersion)" />
|
||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="$(EntityFrameworkVersion)" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Caching.Abstractions" Version="$(MicrosoftExtensionsVersion)" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="$(MicrosoftExtensionsVersion)" />
|
||||
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="$(MicrosoftExtensionsVersion)" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Diagnostics.Testing" Version="8.10.0" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Http" Version="$(MicrosoftExtensionsVersion)" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Http.Polly" Version="$(MicrosoftExtensionsVersion)" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Http.Resilience" Version="9.0.0" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Logging" Version="$(MicrosoftExtensionsVersion)" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="$(MicrosoftExtensionsVersion)" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="$(MicrosoftExtensionsVersion)" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Options" Version="$(MicrosoftExtensionsVersion)" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="$(MicrosoftExtensionsVersion)" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Primitives" Version="$(MicrosoftExtensionsVersion)" />
|
||||
<PackageVersion Include="Microsoft.Extensions.ServiceDiscovery" Version="9.0.0" />
|
||||
<PackageVersion Include="Microsoft.Extensions.TimeProvider.Testing" Version="9.0.0" />
|
||||
<PackageVersion Include="Microsoft.IdentityModel.JsonWebTokens" Version="$(WilsonVersion)" />
|
||||
<PackageVersion Include="Microsoft.IdentityModel.Protocols.OpenIdConnect" Version="$(WilsonVersion)" />
|
||||
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
|
||||
<PackageVersion Include="Microsoft.NETCore.Jit" Version="2.0.8" />
|
||||
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0" />
|
||||
<PackageVersion Include="MinVer" Version="6.0.0" />
|
||||
<PackageVersion Include="NSubstitute" Version="5.1.0" />
|
||||
<PackageVersion Include="OpenTelemetry.Exporter.Console" Version="$(OpenTelemetryVersion)" />
|
||||
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="$(OpenTelemetryVersion)" />
|
||||
<PackageVersion Include="OpenTelemetry.Exporter.Prometheus.AspNetCore" Version="1.11.0-beta.1" />
|
||||
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="$(OpenTelemetryVersion)" />
|
||||
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="$(OpenTelemetryVersion)" />
|
||||
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="$(OpenTelemetryVersion)" />
|
||||
<PackageVersion Include="OpenTelemetry.Instrumentation.Runtime" Version="$(OpenTelemetryVersion)" />
|
||||
<PackageVersion Include="OpenTelemetry.Instrumentation.SqlClient" Version="1.11.0-beta.1" />
|
||||
<PackageVersion Include="OpenTelemetry" Version="$(OpenTelemetryVersion)" />
|
||||
<PackageVersion Include="PublicApiGenerator" Version="11.1.0" />
|
||||
<PackageVersion Include="RichardSzalay.MockHttp" Version="7.0.0" />
|
||||
<PackageVersion Include="Serilog" Version="4.2.0" />
|
||||
<PackageVersion Include="Serilog.AspNetCore" Version="8.0.3" />
|
||||
<PackageVersion Include="Serilog.Sinks.TextWriter" Version="3.0.0" />
|
||||
<PackageVersion Include="Serilog.Sinks.XUnit" Version="3.0.19" />
|
||||
<PackageVersion Include="Serilog.Extensions.Logging" Version="9.0.0" />
|
||||
<PackageVersion Include="Shouldly" Version="4.2.1" />
|
||||
<PackageVersion Include="SimpleExec" Version="12.0.0" />
|
||||
<PackageVersion Include="System.IdentityModel.Tokens.Jwt" Version="$(WilsonVersion)" />
|
||||
<PackageVersion Include="System.Net.Http" Version="4.3.4" />
|
||||
<PackageVersion Include="System.Text.Json" Version="8.0.5" />
|
||||
<PackageVersion Include="System.Text.RegularExpressions" Version="4.3.1" />
|
||||
<PackageVersion Include="xunit" Version="2.9.2" />
|
||||
<PackageVersion Include="xunit.core" Version="2.9.2" />
|
||||
<PackageVersion Include="xunit.runner.visualstudio" Version="2.8.2" />
|
||||
<PackageVersion Include="Xunit.SkippableFact" Version="1.5.23" />
|
||||
<PackageVersion Include="Yarp.ReverseProxy" Version="$(YarpVersion)" />
|
||||
|
||||
<!-- Transitive Dependencies -->
|
||||
<!-- These packages are all transitive dependencies that would
|
||||
otherwise resolve to a version with a security vulnerability. In future, we
|
||||
would like to update Microsoft.Data.SqlClient and
|
||||
Microsoft.EntityFrameworkCore, and remove these explicit dependencies (assuming
|
||||
that future versions of the intermediate dependencies that don't have this
|
||||
problem exist someday). -->
|
||||
<PackageVersion Include="Azure.Identity" Version="1.11.4" />
|
||||
<PackageVersion Include="System.Formats.Asn1" Version="$(MicrosoftExtensionsVersion)" />
|
||||
<PackageVersion Include="System.Drawing.Common" Version="6.0.0" />
|
||||
<PackageVersion Include="Microsoft.Data.SqlClient" Version="5.2.2" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
By accessing the Duende IdentityServer code here, you are agreeing to the following licensing terms:
|
||||
By accessing the Duende Products code here, you are agreeing to the following licensing terms:
|
||||
|
||||
https://duendesoftware.com/license
|
||||
|
||||
223
bff/.gitignore
vendored
223
bff/.gitignore
vendored
|
|
@ -1,223 +0,0 @@
|
|||
# MacOs
|
||||
.DS_Store
|
||||
|
||||
# Rider
|
||||
.idea
|
||||
|
||||
# User-specific files
|
||||
*.suo
|
||||
*.user
|
||||
*.userosscache
|
||||
*.sln.docstates
|
||||
|
||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||
*.userprefs
|
||||
|
||||
# Build results
|
||||
[Dd]ebug/
|
||||
[Dd]ebugPublic/
|
||||
[Rr]elease/
|
||||
[Rr]eleases/
|
||||
x64/
|
||||
x86/
|
||||
|
||||
bld/
|
||||
[Bb]in/
|
||||
[Oo]bj/
|
||||
|
||||
# Visual Studio 2015 cache/options directory
|
||||
.vs/
|
||||
project.lock.json
|
||||
|
||||
|
||||
# MSTest test Results
|
||||
[Tt]est[Rr]esult*/
|
||||
[Bb]uild[Ll]og.*
|
||||
|
||||
# NUNIT
|
||||
*.VisualState.xml
|
||||
TestResult.xml
|
||||
|
||||
# Build Results of an ATL Project
|
||||
[Dd]ebugPS/
|
||||
[Rr]eleasePS/
|
||||
dlldata.c
|
||||
|
||||
*_i.c
|
||||
*_p.c
|
||||
*_i.h
|
||||
*.ilk
|
||||
*.meta
|
||||
*.obj
|
||||
*.pch
|
||||
*.pdb
|
||||
*.pgc
|
||||
*.pgd
|
||||
*.rsp
|
||||
*.sbr
|
||||
*.tlb
|
||||
*.tli
|
||||
*.tlh
|
||||
*.tmp
|
||||
*.tmp_proj
|
||||
*.log
|
||||
*.vspscc
|
||||
*.vssscc
|
||||
.builds
|
||||
*.pidb
|
||||
*.svclog
|
||||
*.scc
|
||||
|
||||
# Chutzpah Test files
|
||||
_Chutzpah*
|
||||
|
||||
# Visual C++ cache files
|
||||
ipch/
|
||||
*.aps
|
||||
*.ncb
|
||||
*.opensdf
|
||||
*.sdf
|
||||
*.cachefile
|
||||
|
||||
# Visual Studio profiler
|
||||
*.psess
|
||||
*.vsp
|
||||
*.vspx
|
||||
|
||||
# TFS 2012 Local Workspace
|
||||
$tf/
|
||||
|
||||
# Guidance Automation Toolkit
|
||||
*.gpState
|
||||
|
||||
# ReSharper is a .NET coding add-in
|
||||
_ReSharper*/
|
||||
*.[Rr]e[Ss]harper
|
||||
*.DotSettings.user
|
||||
|
||||
# JustCode is a .NET coding addin-in
|
||||
.JustCode
|
||||
|
||||
# TeamCity is a build add-in
|
||||
_TeamCity*
|
||||
|
||||
# DotCover is a Code Coverage Tool
|
||||
*.dotCover
|
||||
|
||||
# NCrunch
|
||||
_NCrunch_*
|
||||
.*crunch*.local.xml
|
||||
|
||||
# MightyMoose
|
||||
*.mm.*
|
||||
AutoTest.Net/
|
||||
|
||||
# Web workbench (sass)
|
||||
.sass-cache/
|
||||
|
||||
# Installshield output folder
|
||||
[Ee]xpress/
|
||||
|
||||
# DocProject is a documentation generator add-in
|
||||
DocProject/buildhelp/
|
||||
DocProject/Help/*.HxT
|
||||
DocProject/Help/*.HxC
|
||||
DocProject/Help/*.hhc
|
||||
DocProject/Help/*.hhk
|
||||
DocProject/Help/*.hhp
|
||||
DocProject/Help/Html2
|
||||
DocProject/Help/html
|
||||
|
||||
# Click-Once directory
|
||||
publish/
|
||||
|
||||
# Publish Web Output
|
||||
*.[Pp]ublish.xml
|
||||
*.azurePubxml
|
||||
# TODO: Comment the next line if you want to checkin your web deploy settings
|
||||
# but database connection strings (with potential passwords) will be unencrypted
|
||||
*.pubxml
|
||||
*.publishproj
|
||||
|
||||
# NuGet Packages
|
||||
*.nupkg
|
||||
# The packages folder can be ignored because of Package Restore
|
||||
**/packages/*
|
||||
# except build/, which is used as an MSBuild target.
|
||||
!**/packages/build/
|
||||
# Uncomment if necessary however generally it will be regenerated when needed
|
||||
#!**/packages/repositories.config
|
||||
|
||||
# Windows Azure Build Output
|
||||
csx/
|
||||
*.build.csdef
|
||||
|
||||
# Windows Store app package directory
|
||||
AppPackages/
|
||||
|
||||
# Others
|
||||
*.[Cc]ache
|
||||
ClientBin/
|
||||
[Ss]tyle[Cc]op.*
|
||||
~$*
|
||||
*~
|
||||
*.dbmdl
|
||||
*.dbproj.schemaview
|
||||
*.publishsettings
|
||||
node_modules/
|
||||
bower_components/
|
||||
|
||||
# RIA/Silverlight projects
|
||||
Generated_Code/
|
||||
|
||||
# Backup & report files from converting an old project file
|
||||
# to a newer Visual Studio version. Backup files are not needed,
|
||||
# because we have git ;-)
|
||||
_UpgradeReport_Files/
|
||||
Backup*/
|
||||
UpgradeLog*.XML
|
||||
UpgradeLog*.htm
|
||||
|
||||
# SQL Server files
|
||||
*.mdf
|
||||
*.ldf
|
||||
|
||||
# Business Intelligence projects
|
||||
*.rdl.data
|
||||
*.bim.layout
|
||||
*.bim_*.settings
|
||||
|
||||
# Microsoft Fakes
|
||||
FakesAssemblies/
|
||||
|
||||
# Node.js Tools for Visual Studio
|
||||
.ntvs_analysis.dat
|
||||
|
||||
# Visual Studio 6 build log
|
||||
*.plg
|
||||
|
||||
# Visual Studio 6 workspace options file
|
||||
*.opt
|
||||
docs/_build/
|
||||
|
||||
# Local .NET CLI tools
|
||||
tools/
|
||||
|
||||
# Visual Studio Code workspace options
|
||||
**/.vscode/settings.json
|
||||
|
||||
# IdentityServer temp files
|
||||
identityserver4_log.txt
|
||||
tempkey.rsa
|
||||
samples/KeyManagement/FileSystem/dataprotectionkeys/
|
||||
samples/KeyManagement/FileSystem/signingkeys/
|
||||
workspace.xml
|
||||
|
||||
src/IdentityServer4/host/identityserver.db
|
||||
tempkey.jwk
|
||||
keys
|
||||
*.key
|
||||
Duende.BFF.db
|
||||
*.db-shm
|
||||
*.db-wal
|
||||
.vs/
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
<Project>
|
||||
<PropertyGroup>
|
||||
<PackageTags>OAuth 2.0;OpenID Connect;Security;BFF;IdentityServer;ASP.NET Core;SPA;Blazor</PackageTags>
|
||||
<Authors>Duende Software</Authors>
|
||||
<Company>Duende Software</Company>
|
||||
<Copyright>Duende Software</Copyright>
|
||||
<Product>Duende BFF</Product>
|
||||
|
||||
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
|
||||
<PackageLicenseFile>LICENSE</PackageLicenseFile>
|
||||
|
||||
<PackageIcon>icon.png</PackageIcon>
|
||||
<PackageProjectUrl>https://github.com/DuendeSoftware/BFF</PackageProjectUrl>
|
||||
<PackageReleaseNotes>https://github.com/DuendeSoftware/BFF/releases</PackageReleaseNotes>
|
||||
|
||||
<PublishRepositoryUrl>true</PublishRepositoryUrl>
|
||||
<EmbedUntrackedSources>true</EmbedUntrackedSources>
|
||||
<DebugType Condition="'$(GITHUB_ACTIONS)' == 'true'">embedded</DebugType>
|
||||
|
||||
<ContinuousIntegrationBuild Condition="'$(GITHUB_ACTIONS)' == 'true'">True</ContinuousIntegrationBuild>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="../../LICENSE" Pack="true" Visible="false" PackagePath="" />
|
||||
<None Include="../../icon.png" Pack="true" Visible="false" PackagePath="" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<MinVerAutoIncrement>minor</MinVerAutoIncrement>
|
||||
<MinVerPrefix>bff-</MinVerPrefix>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
|
|
@ -1,82 +0,0 @@
|
|||
<Project>
|
||||
<PropertyGroup Condition=" '$(TargetFramework)' == 'net8.0'">
|
||||
<AspNetCoreVersion>8.0.1</AspNetCoreVersion>
|
||||
<!-- EF must be at least 8.0.10 so that 'Microsoft.Extensions.Caching.Memory'
|
||||
is at least 8.0.1, which addresses a known high severity vulnerability.
|
||||
The SQL Server EF provider that is commonly used has a transitive
|
||||
vulnerability in 8.0.10 that is fixed in 8.0.11, so going to 8.0.11 seems
|
||||
prudent. -->
|
||||
<EFCoreVersion>8.0.11</EFCoreVersion>
|
||||
<IdentityServerVersion>7.1.0-rc.1</IdentityServerVersion>
|
||||
<MicrosoftExtensionsVersion>8.0.1</MicrosoftExtensionsVersion>
|
||||
<YarpVersion>2.1.0</YarpVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition=" '$(TargetFramework)' == 'net9.0'">
|
||||
<AspNetCoreVersion>9.0.0</AspNetCoreVersion>
|
||||
<EFCoreVersion>9.0.0</EFCoreVersion>
|
||||
<IdentityServerVersion>7.1.0-rc.1</IdentityServerVersion>
|
||||
<MicrosoftExtensionsVersion>9.0.0</MicrosoftExtensionsVersion>
|
||||
<YarpVersion>2.1.0</YarpVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<!-- Build -->
|
||||
<PackageReference Include="MinVer" Version="4.2.0" PrivateAssets="all" />
|
||||
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1" PrivateAssets="All" />
|
||||
|
||||
<!-- Duende -->
|
||||
<PackageReference Update="Duende.AccessTokenManagement.OpenIdConnect" Version="3.1.1" />
|
||||
<PackageReference Update="Duende.IdentityModel" Version="7.0.0" />
|
||||
<PackageReference Update="Duende.IdentityServer" Version="$(IdentityServerVersion)" />
|
||||
|
||||
<!-- ASP.NET Core -->
|
||||
<PackageReference Update="Microsoft.AspNetCore.Authentication.JwtBearer" Version="$(AspNetCoreVersion)" />
|
||||
<PackageReference Update="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="$(AspNetCoreVersion)" />
|
||||
<PackageReference Update="Microsoft.AspNetCore.Components.WebAssembly" Version="$(AspNetCoreVersion)" />
|
||||
<PackageReference Update="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="$(AspNetCoreVersion)" />
|
||||
<PackageReference Update="Microsoft.AspNetCore.Components.WebAssembly.Authentication" Version="$(AspNetCoreVersion)" />
|
||||
<PackageReference Update="Microsoft.AspNetCore.Components.Authorization" Version="$(AspNetCoreVersion)" />
|
||||
|
||||
<!-- Entity Framework Core -->
|
||||
<PackageReference Update="Microsoft.EntityFrameworkCore.Design" Version="$(EFCoreVersion)" />
|
||||
<PackageReference Update="Microsoft.EntityFrameworkCore.InMemory" Version="$(EFCoreVersion)" />
|
||||
<PackageReference Update="Microsoft.EntityFrameworkCore.Relational" Version="$(EFCoreVersion)" />
|
||||
<PackageReference Update="Microsoft.EntityFrameworkCore.Sqlite" Version="$(EFCoreVersion)" />
|
||||
<PackageReference Update="Microsoft.EntityFrameworkCore.SqlServer" Version="$(EFCoreVersion)" />
|
||||
|
||||
<!-- Microsoft Extensions -->
|
||||
<PackageReference Update="Microsoft.Extensions.Http" Version="$(MicrosoftExtensionsVersion)" />
|
||||
|
||||
<!-- Other -->
|
||||
<PackageReference Update="Yarp.ReverseProxy" Version="$(YarpVersion)" />
|
||||
<PackageReference Update="Serilog.AspNetCore" Version="8.0.3" />
|
||||
|
||||
|
||||
<!-- Testing -->
|
||||
<PackageReference Update="coverlet.collector" Version="6.0.0">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Update="AngleSharp" Version="1.2.0" />
|
||||
<PackageReference Update="Microsoft.AspNetCore.TestHost" Version="$(AspNetCoreVersion)" />
|
||||
<PackageReference Update="Aspire.Hosting.Testing" Version="$(AspNetCoreVersion)" />
|
||||
<PackageReference Update="Microsoft.Extensions.TimeProvider.Testing" Version="8.8.0" />
|
||||
<PackageReference Update="Microsoft.NET.Test.Sdk" Version="17.12.0" />
|
||||
<PackageReference Update="Serilog" Version="4.2.0" />
|
||||
<PackageReference Update="Serilog.Sinks.TextWriter" Version="3.0.0" />
|
||||
<PackageReference Update="Serilog.Sinks.XUnit" Version="3.0.19" />
|
||||
<PackageReference Update="Serilog.Extensions.Logging" Version="9.0.0" />
|
||||
<PackageReference Update="Shouldly" Version="4.2.1" />
|
||||
<PackageReference Update="xunit" Version="2.9.2" />
|
||||
<PackageReference Update="xunit.core" Version="2.9.2" />
|
||||
<PackageReference Update="xunit.runner.visualstudio" Version="2.8.2"/>
|
||||
<PackageReference Update="Xunit.SkippableFact" Version="1.5.23" />
|
||||
</ItemGroup>
|
||||
|
||||
<Target Name="SetAssemblyVersion" AfterTargets="MinVer">
|
||||
<PropertyGroup>
|
||||
<AssemblyVersion>$(MinVerMajor).$(MinVerMinor).$(MinVerPatch).0</AssemblyVersion>
|
||||
</PropertyGroup>
|
||||
</Target>
|
||||
</Project>
|
||||
|
|
@ -67,8 +67,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Hosts.ServiceDefaults", "sa
|
|||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Hosts.Tests", "samples\Hosts.Tests\Hosts.Tests.csproj", "{A0B771BA-ACF9-4DE2-A2A6-430F6E6E8C07}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "build", "build\build.csproj", "{E083402C-EB22-4F8A-BFD6-A4F448678376}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
|
|
@ -367,18 +365,6 @@ Global
|
|||
{A0B771BA-ACF9-4DE2-A2A6-430F6E6E8C07}.Release|x64.Build.0 = Release|Any CPU
|
||||
{A0B771BA-ACF9-4DE2-A2A6-430F6E6E8C07}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{A0B771BA-ACF9-4DE2-A2A6-430F6E6E8C07}.Release|x86.Build.0 = Release|Any CPU
|
||||
{E083402C-EB22-4F8A-BFD6-A4F448678376}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E083402C-EB22-4F8A-BFD6-A4F448678376}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E083402C-EB22-4F8A-BFD6-A4F448678376}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{E083402C-EB22-4F8A-BFD6-A4F448678376}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{E083402C-EB22-4F8A-BFD6-A4F448678376}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{E083402C-EB22-4F8A-BFD6-A4F448678376}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{E083402C-EB22-4F8A-BFD6-A4F448678376}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E083402C-EB22-4F8A-BFD6-A4F448678376}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{E083402C-EB22-4F8A-BFD6-A4F448678376}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{E083402C-EB22-4F8A-BFD6-A4F448678376}.Release|x64.Build.0 = Release|Any CPU
|
||||
{E083402C-EB22-4F8A-BFD6-A4F448678376}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{E083402C-EB22-4F8A-BFD6-A4F448678376}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
|
|
|||
|
|
@ -1,5 +0,0 @@
|
|||
By accessing the Duende BFF code here, you are agreeing to the following licensing terms:
|
||||
|
||||
https://duendesoftware.com/license/SoftwareLicense.pdf
|
||||
|
||||
If you do not agree to these terms, do not access the Duende BFF code.
|
||||
|
|
@ -1,114 +0,0 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using static Bullseye.Targets;
|
||||
using static SimpleExec.Command;
|
||||
|
||||
namespace build
|
||||
{
|
||||
internal static class Program
|
||||
{
|
||||
private const string PackOutput = "./artifacts";
|
||||
private const string EnvVarMissing = " environment variable is missing. Aborting.";
|
||||
|
||||
private static class Targets
|
||||
{
|
||||
public const string RestoreTools = "restore-tools";
|
||||
public const string CleanBuildOutput = "clean-build-output";
|
||||
public const string CleanPackOutput = "clean-pack-output";
|
||||
public const string Build = "build";
|
||||
public const string Test = "test";
|
||||
public const string Pack = "pack";
|
||||
public const string SignPackage = "sign-package";
|
||||
}
|
||||
|
||||
internal static async Task Main(string[] args)
|
||||
{
|
||||
Target(Targets.RestoreTools, () =>
|
||||
{
|
||||
Run("dotnet", "tool restore");
|
||||
});
|
||||
|
||||
Target(Targets.CleanBuildOutput, () =>
|
||||
{
|
||||
Run("dotnet", "clean -c Release -v m --nologo");
|
||||
});
|
||||
|
||||
Target(Targets.Build, DependsOn(Targets.CleanBuildOutput), () =>
|
||||
{
|
||||
Run("dotnet", "build -c Release --nologo");
|
||||
});
|
||||
|
||||
Target(Targets.Test, DependsOn(Targets.Build), () =>
|
||||
{
|
||||
// Only running the tests on linux on the build agents because trusting the SSL Cert doesn't work there.
|
||||
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
|
||||
{
|
||||
Run("dotnet", "dev-certs https --trust");
|
||||
Run("dotnet", "test -c Release --no-build --nologo");
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Skipping tests on windows and mac-os");
|
||||
}
|
||||
});
|
||||
|
||||
Target(Targets.CleanPackOutput, () =>
|
||||
{
|
||||
if (Directory.Exists(PackOutput))
|
||||
{
|
||||
Directory.Delete(PackOutput, true);
|
||||
}
|
||||
});
|
||||
|
||||
Target(Targets.Pack, DependsOn(Targets.Build, Targets.CleanPackOutput), () =>
|
||||
{
|
||||
Run("dotnet", $"pack ./src/Duende.Bff/Duende.Bff.csproj -c Release -o {Directory.CreateDirectory(PackOutput).FullName} --no-build --nologo");
|
||||
Run("dotnet", $"pack ./src/Duende.Bff.EntityFramework/Duende.Bff.EntityFramework.csproj -c Release -o {Directory.CreateDirectory(PackOutput).FullName} --no-build --nologo");
|
||||
Run("dotnet", $"pack ./src/Duende.Bff.Yarp/Duende.Bff.Yarp.csproj -c Release -o {Directory.CreateDirectory(PackOutput).FullName} --no-build --nologo");
|
||||
Run("dotnet", $"pack ./src/Duende.Bff.Blazor/Duende.Bff.Blazor.csproj -c Release -o {Directory.CreateDirectory(PackOutput).FullName} --no-build --nologo");
|
||||
Run("dotnet", $"pack ./src/Duende.Bff.Blazor.Client/Duende.Bff.Blazor.Client.csproj -c Release -o {Directory.CreateDirectory(PackOutput).FullName} --no-build --nologo");
|
||||
});
|
||||
|
||||
Target(Targets.SignPackage, DependsOn(Targets.Pack, Targets.RestoreTools), () =>
|
||||
{
|
||||
SignNuGet();
|
||||
});
|
||||
|
||||
Target("default", DependsOn(Targets.Test, Targets.Pack));
|
||||
|
||||
Target("sign", DependsOn(Targets.Test, Targets.SignPackage));
|
||||
|
||||
await RunTargetsAndExitAsync(args, ex => ex is SimpleExec.ExitCodeException || ex.Message.EndsWith(EnvVarMissing));
|
||||
}
|
||||
|
||||
private static void SignNuGet()
|
||||
{
|
||||
var signClientSecret = Environment.GetEnvironmentVariable("SignClientSecret");
|
||||
|
||||
if (string.IsNullOrWhiteSpace(signClientSecret))
|
||||
{
|
||||
throw new Exception($"SignClientSecret{EnvVarMissing}");
|
||||
}
|
||||
|
||||
foreach (var file in Directory.GetFiles(PackOutput, "*.nupkg", SearchOption.AllDirectories))
|
||||
{
|
||||
Console.WriteLine($" Signing {file}");
|
||||
|
||||
Run("dotnet",
|
||||
"NuGetKeyVaultSignTool " +
|
||||
$"sign {file} " +
|
||||
"--file-digest sha256 " +
|
||||
"--timestamp-rfc3161 http://timestamp.digicert.com " +
|
||||
"--azure-key-vault-url https://duendecodesigninghsm.vault.azure.net/ " +
|
||||
"--azure-key-vault-client-id 18e3de68-2556-4345-8076-a46fad79e474 " +
|
||||
"--azure-key-vault-tenant-id ed3089f0-5401-4758-90eb-066124e2d907 " +
|
||||
$"--azure-key-vault-client-secret {signClientSecret} " +
|
||||
"--azure-key-vault-certificate NuGetPackageSigning"
|
||||
,noEcho: true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Bullseye" Version="4.0.0" />
|
||||
<PackageReference Include="SimpleExec" Version="10.0.0" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
4
bff/migrations/Directory.Build.props
Normal file
4
bff/migrations/Directory.Build.props
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
<Import Project="../../samples.props" />
|
||||
</Project>
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<TargetFrameworks>net9.0</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
|
|
@ -1,6 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<packageSources>
|
||||
<add key="Duende IdentityServer CI" value="https://www.myget.org/F/duende_identityserver/api/v3/index.json" />
|
||||
</packageSources>
|
||||
</configuration>
|
||||
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Duende.IdentityModel" />
|
||||
<PackageReference Include="Duende.AspNetCore.Authentication.JwtBearer" Version="0.1.3" />
|
||||
<PackageReference Include="Duende.AspNetCore.Authentication.JwtBearer" />
|
||||
<PackageReference Include="Serilog.AspNetCore" />
|
||||
</ItemGroup>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<TargetFrameworks>net9.0</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<TargetFrameworks>net9.0</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<TargetFrameworks>net9.0</TargetFrameworks>
|
||||
<RootNamespace>Bff.DPoP</RootNamespace>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="8.0.4" />
|
||||
<PackageReference Include="Serilog.AspNetCore" Version="8.0.3" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" />
|
||||
<PackageReference Include="Serilog.AspNetCore" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<TargetFrameworks>net9.0</TargetFrameworks>
|
||||
<RootNamespace>Bff.EF</RootNamespace>
|
||||
</PropertyGroup>
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Serilog.AspNetCore" Version="8.0.3" />
|
||||
<PackageReference Include="Serilog.AspNetCore" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<TargetFrameworks>net9.0</TargetFrameworks>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<NoDefaultLaunchSettingsFile>true</NoDefaultLaunchSettingsFile>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<TargetFrameworks>net9.0</TargetFrameworks>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
</PropertyGroup>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<TargetFrameworks>net9.0</TargetFrameworks>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<NoDefaultLaunchSettingsFile>true</NoDefaultLaunchSettingsFile>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<TargetFrameworks>net9.0</TargetFrameworks>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
</PropertyGroup>
|
||||
|
|
@ -9,8 +9,8 @@
|
|||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\..\src\Duende.Bff\Duende.Bff.csproj" />
|
||||
<ProjectReference Include="..\WebAssembly.Client\WebAssembly.Client.csproj" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="8.0.4" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="8.0.1" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
4
bff/samples/Directory.Build.props
Normal file
4
bff/samples/Directory.Build.props
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
<Import Project="../../samples.props" />
|
||||
</Project>
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<IsAspireHost>true</IsAspireHost>
|
||||
|
|
@ -12,7 +12,8 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Aspire.Hosting.AppHost" Version="9.0.0" />
|
||||
<PackageReference Include="Aspire.Hosting.AppHost" />
|
||||
<PackageReference Include="System.Text.Json" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<TargetFrameworks>net9.0</TargetFrameworks>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<IsAspireSharedProject>true</IsAspireSharedProject>
|
||||
|
|
@ -10,13 +10,13 @@
|
|||
<ItemGroup>
|
||||
<FrameworkReference Include="Microsoft.AspNetCore.App" />
|
||||
|
||||
<PackageReference Include="Microsoft.Extensions.Http.Resilience" Version="9.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.ServiceDiscovery" Version="9.0.0" />
|
||||
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.9.0" />
|
||||
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.9.0" />
|
||||
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.9.0" />
|
||||
<PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.9.0" />
|
||||
<PackageReference Include="OpenTelemetry.Instrumentation.Runtime" Version="1.9.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Http.Resilience" />
|
||||
<PackageReference Include="Microsoft.Extensions.ServiceDiscovery" />
|
||||
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" />
|
||||
<PackageReference Include="OpenTelemetry.Extensions.Hosting" />
|
||||
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" />
|
||||
<PackageReference Include="OpenTelemetry.Instrumentation.Http" />
|
||||
<PackageReference Include="OpenTelemetry.Instrumentation.Runtime" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -22,8 +22,6 @@
|
|||
<PackageReference Include="Serilog.Sinks.TextWriter" />
|
||||
<PackageReference Include="Serilog.Sinks.XUnit" />
|
||||
<PackageReference Include="Shouldly" />
|
||||
<PackageReference Include="xunit.core" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" />
|
||||
<PackageReference Include="Aspire.Hosting.Testing" />
|
||||
<PackageReference Include="Xunit.SkippableFact" />
|
||||
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<TargetFrameworks>net9.0</TargetFrameworks>
|
||||
<ImplicitUsings>true</ImplicitUsings>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Duende.IdentityServer" />
|
||||
<PackageReference Include="Duende.IdentityModel" />
|
||||
<PackageReference Include="Serilog.AspNetCore" Version="8.0.3" />
|
||||
<PackageReference Include="Serilog.AspNetCore" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
13
bff/src/Directory.Build.props
Normal file
13
bff/src/Directory.Build.props
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
|
||||
<Import Project="../../src.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<PackageTags>OAuth 2.0;OpenID Connect;Security;BFF;IdentityServer;ASP.NET Core;SPA;Blazor</PackageTags>
|
||||
<Product>Duende BFF</Product>
|
||||
<MinVerTagPrefix>bff-</MinVerTagPrefix>
|
||||
<MinVerMinimumMajorMinor>2.3</MinVerMinimumMajorMinor>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<TargetFrameworks>net8.0</TargetFrameworks>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
|
@ -16,8 +16,7 @@
|
|||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.Authorization" />
|
||||
<PackageReference Include="Microsoft.Extensions.Http" />
|
||||
<!-- Explicitly taking this version so that we don't pull in vulnerable old versions. -->
|
||||
<PackageReference Include="System.Text.Json" Version="8.0.5" />
|
||||
<PackageReference Include="System.Text.Json" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ public static class ServiceCollectionExtensions
|
|||
/// <summary>
|
||||
/// Adds Duende.BFF services to a Blazor Client (wasm) application.
|
||||
/// </summary>
|
||||
/// <param name="services">The service collection.</param>
|
||||
/// <param name="configureAction">A callback used to set <see cref="BffBlazorOptions"/>.</param>
|
||||
public static IServiceCollection AddBffBlazorClient(this IServiceCollection services,
|
||||
Action<BffBlazorOptions>? configureAction = null)
|
||||
|
|
@ -124,6 +125,7 @@ public static class ServiceCollectionExtensions
|
|||
/// Adds a named <see cref="HttpClient"/> for use when invoking remote APIs
|
||||
/// proxied through Duende.Bff and configures the client with a callback.
|
||||
/// </summary>
|
||||
/// <param name="services">The service collection.</param>
|
||||
/// <param name="clientName">The name of that <see cref="HttpClient"/> to
|
||||
/// configure. A common use case is to use the same named client in multiple
|
||||
/// render contexts that are automatically switched between via interactive
|
||||
|
|
@ -143,6 +145,7 @@ public static class ServiceCollectionExtensions
|
|||
/// proxied through Duende.Bff and configures the client with a callback
|
||||
/// that has access to the underlying service provider.
|
||||
/// </summary>
|
||||
/// <param name="services">The service collection.</param>
|
||||
/// <param name="clientName">The name of that <see cref="HttpClient"/> to
|
||||
/// configure. A common use case is to use the same named client in multiple
|
||||
/// render contexts that are automatically switched between via interactive
|
||||
|
|
@ -161,11 +164,7 @@ public static class ServiceCollectionExtensions
|
|||
/// Adds a typed <see cref="HttpClient"/> for use when invoking remote APIs
|
||||
/// proxied through Duende.Bff and configures the client with a callback.
|
||||
/// </summary>
|
||||
/// <param name="clientName">The name of that <see cref="HttpClient"/> to
|
||||
/// configure. A common use case is to use the same named client in multiple
|
||||
/// render contexts that are automatically switched between via interactive
|
||||
/// render modes. In that case, ensure both the client and server project
|
||||
/// define the HttpClient appropriately.</param>
|
||||
/// <param name="services">The service collection.</param>
|
||||
/// <param name="configureClient">A configuration callback used to set up
|
||||
/// the <see cref="HttpClient"/>.</param>
|
||||
public static IHttpClientBuilder AddRemoteApiHttpClient<T>(this IServiceCollection services,
|
||||
|
|
@ -181,11 +180,7 @@ public static class ServiceCollectionExtensions
|
|||
/// proxied through Duende.Bff and configures the client with a callback
|
||||
/// that has access to the underlying service provider.
|
||||
/// </summary>
|
||||
/// <param name="clientName">The name of that <see cref="HttpClient"/> to
|
||||
/// configure. A common use case is to use the same named client in multiple
|
||||
/// render contexts that are automatically switched between via interactive
|
||||
/// render modes. In that case, ensure both the client and server project
|
||||
/// define the HttpClient appropriately.</param>
|
||||
/// <param name="services">The service collection.</param>
|
||||
/// <param name="configureClient">A configuration callback used to set up
|
||||
/// the <see cref="HttpClient"/>.</param>
|
||||
public static IHttpClientBuilder AddRemoteApiHttpClient<T>(this IServiceCollection services,
|
||||
|
|
|
|||
|
|
@ -2,18 +2,11 @@
|
|||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net8.0;net9.0</TargetFrameworks>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
<LangVersion>latest</LangVersion>
|
||||
|
||||
<AssemblyName>Duende.BFF.EntityFramework</AssemblyName>
|
||||
<Description>Entity Framework Core support for backend for frontend (BFF) host for ASP.NET Core</Description>
|
||||
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="README.md" Pack="true" PackagePath=""/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" />
|
||||
|
||||
|
|
|
|||
|
|
@ -1,18 +1,11 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net8.0;net9.0</TargetFrameworks>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
<LangVersion>latest</LangVersion>
|
||||
<Nullable>enable</Nullable>
|
||||
<AssemblyName>Duende.BFF.Yarp</AssemblyName>
|
||||
<Description>Backend for frontend (BFF) host for ASP.NET Core (YARP integration)</Description>
|
||||
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="README.md" Pack="true" PackagePath=""/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Yarp.ReverseProxy" />
|
||||
</ItemGroup>
|
||||
|
|
|
|||
|
|
@ -2,18 +2,11 @@
|
|||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net8.0;net9.0</TargetFrameworks>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
<LangVersion>latest</LangVersion>
|
||||
<Nullable>enable</Nullable>
|
||||
<AssemblyName>Duende.BFF</AssemblyName>
|
||||
<Description>Backend for frontend (BFF) host for ASP.NET Core</Description>
|
||||
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="README.md" Pack="true" PackagePath=""/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<FrameworkReference Include="Microsoft.AspNetCore.App" />
|
||||
<PackageReference Include="Duende.AccessTokenManagement.OpenIdConnect" />
|
||||
|
|
|
|||
4
bff/test/Directory.Build.props
Normal file
4
bff/test/Directory.Build.props
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
<Import Project="../../test.props" />
|
||||
</Project>
|
||||
|
|
@ -11,13 +11,8 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="coverlet.collector" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.TimeProvider.Testing" Version="8.8.0" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" />
|
||||
<PackageReference Include="NSubstitute" Version="5.1.0" />
|
||||
<PackageReference Include="Shouldly" Version="4.2.1" />
|
||||
<PackageReference Include="xunit" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" />
|
||||
<PackageReference Include="Microsoft.Extensions.TimeProvider.Testing" />
|
||||
<PackageReference Include="NSubstitute" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
|
|
@ -11,12 +11,7 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="coverlet.collector" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" />
|
||||
<PackageReference Include="NSubstitute" Version="5.1.0" />
|
||||
<PackageReference Include="Shouldly" Version="4.2.1" />
|
||||
<PackageReference Include="xunit" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" />
|
||||
<PackageReference Include="NSubstitute" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
|
|
@ -6,18 +6,6 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" />
|
||||
<PackageReference Include="Shouldly" Version="4.2.1" />
|
||||
<PackageReference Include="xunit" />
|
||||
<PackageReference Include="xunit.runner.visualstudio">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="coverlet.collector">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" />
|
||||
</ItemGroup>
|
||||
|
||||
|
|
|
|||
|
|
@ -5,20 +5,8 @@
|
|||
<Nullable>enable</Nullable>
|
||||
<TreatWarningsAsErrors>True</TreatWarningsAsErrors>
|
||||
</PropertyGroup>
|
||||
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" />
|
||||
<PackageReference Include="Shouldly"/>
|
||||
<PackageReference Include="xunit" />
|
||||
<PackageReference Include="xunit.runner.visualstudio">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="coverlet.collector">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
|
||||
<PackageReference Include="Duende.IdentityServer" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.TestHost" />
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 685 B After Width: | Height: | Size: 685 B |
|
|
@ -1,35 +0,0 @@
|
|||
<Project>
|
||||
<PropertyGroup>
|
||||
<PackageTags>OAuth 2.0;OpenID Connect;Security;Identity;IdentityServer;ASP.NET Core</PackageTags>
|
||||
<Authors>Duende Software</Authors>
|
||||
<Company>Duende Software</Company>
|
||||
<Copyright>Duende Software</Copyright>
|
||||
<Product>Duende IdentityServer</Product>
|
||||
|
||||
<DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports>
|
||||
|
||||
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
|
||||
<PackageLicenseFile>LICENSE</PackageLicenseFile>
|
||||
|
||||
<PackageIcon>icon.png</PackageIcon>
|
||||
<PackageProjectUrl>https://github.com/DuendeSoftware/IdentityServer</PackageProjectUrl>
|
||||
<PackageReleaseNotes>https://github.com/DuendeSoftware/IdentityServer/releases</PackageReleaseNotes>
|
||||
|
||||
<PublishRepositoryUrl>true</PublishRepositoryUrl>
|
||||
<EmbedUntrackedSources>true</EmbedUntrackedSources>
|
||||
<DebugType Condition="'$(GITHUB_ACTIONS)' == 'true'">embedded</DebugType>
|
||||
|
||||
<ContinuousIntegrationBuild Condition="'$(GITHUB_ACTIONS)' == 'true'">True</ContinuousIntegrationBuild>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="../../LICENSE" Pack="true" Visible="false" PackagePath="" />
|
||||
<None Include="../../icon.png" Pack="true" Visible="false" PackagePath="" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<MinVerAutoIncrement>minor</MinVerAutoIncrement>
|
||||
<MinVerTagPrefix>is-</MinVerTagPrefix>
|
||||
<TreatWarningsAsErrors>True</TreatWarningsAsErrors>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
|
|
@ -1,101 +0,0 @@
|
|||
<Project>
|
||||
<PropertyGroup Condition=" '$(TargetFramework)' == 'net8.0'">
|
||||
<FrameworkVersion>8.0.10</FrameworkVersion>
|
||||
<ExtensionsVersion>8.0.1</ExtensionsVersion>
|
||||
<EntityFrameworkVersion>8.0.10</EntityFrameworkVersion>
|
||||
<WilsonVersion>7.1.2</WilsonVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition=" '$(TargetFramework)' == 'net9.0'">
|
||||
<FrameworkVersion>9.0.0</FrameworkVersion>
|
||||
<ExtensionsVersion>9.0.0</ExtensionsVersion>
|
||||
<EntityFrameworkVersion>9.0.0</EntityFrameworkVersion>
|
||||
<WilsonVersion>8.0.1</WilsonVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<!--our stuff -->
|
||||
<PackageReference Update="Duende.IdentityModel" Version="7.0.0"/>
|
||||
<PackageReference Update="Duende.AccessTokenManagement" Version="3.1.0-preview.1"/>
|
||||
<PackageReference Update="Duende.AccessTokenManagement.OpenIdConnect" Version="3.1.0-preview.1"/>
|
||||
|
||||
<!--build related-->
|
||||
<PackageReference Include="MinVer" Version="4.3.0" PrivateAssets="All"/>
|
||||
<PackageReference Update="SimpleExec" Version="11.0.0"/>
|
||||
<PackageReference Update="Bullseye" Version="4.2.1"/>
|
||||
|
||||
<!--tests -->
|
||||
<PackageReference Update="FluentAssertions" Version="6.5.1"/>
|
||||
<PackageReference Update="FluentAssertions.Web" Version="1.5.0"/>
|
||||
<PackageReference Update="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
|
||||
<PackageReference Update="xunit" Version="2.9.0"/>
|
||||
<PackageReference Update="xunit.runner.visualstudio" Version="2.5.4" PrivateAssets="All"/>
|
||||
|
||||
<!-- testing -->
|
||||
<PackageReference Update="Microsoft.AspNetCore.Authentication.JwtBearer" Version="$(FrameworkVersion)" />
|
||||
<PackageReference Update="AngleSharp" Version="1.1.2" />
|
||||
<PackageReference Update="Microsoft.NET.Test.Sdk" Version="17.8.0" />
|
||||
<PackageReference Update="Microsoft.Extensions.Diagnostics.Testing" Version="9.0.0" />
|
||||
<PackageReference Update="Microsoft.Extensions.TimeProvider.Testing" Version="9.0.0" />
|
||||
|
||||
<!--microsoft extensions -->
|
||||
<PackageReference Update="Microsoft.Extensions.Caching.Memory" Version="$(ExtensionsVersion)"/>
|
||||
<PackageReference Update="Microsoft.Extensions.Http" Version="$(ExtensionsVersion)"/>
|
||||
<PackageReference Update="Microsoft.Extensions.Http.Polly" Version="$(ExtensionsVersion)"/>
|
||||
<PackageReference Update="Microsoft.Extensions.Logging" Version="$(ExtensionsVersion)"/>
|
||||
<PackageReference Update="Microsoft.Extensions.Logging.Console" Version="$(ExtensionsVersion)"/>
|
||||
<PackageReference Update="Microsoft.Extensions.Options.ConfigurationExtensions" Version="$(ExtensionsVersion)"/>
|
||||
|
||||
<!--misc -->
|
||||
<PackageReference Update="Microsoft.IdentityModel.JsonWebTokens" Version="$(WilsonVersion)"/>
|
||||
<PackageReference Update="Microsoft.IdentityModel.Protocols.OpenIdConnect" Version="$(WilsonVersion)"/>
|
||||
<PackageReference Update="System.IdentityModel.Tokens.Jwt" Version="$(WilsonVersion)"/>
|
||||
<PackageReference Update="Serilog.AspNetCore" Version="8.0.3"/>
|
||||
|
||||
<!--microsoft asp.net core -->
|
||||
<PackageReference Update="Microsoft.AspNetCore.DataProtection.Abstractions" Version="$(FrameworkVersion)"/>
|
||||
<PackageReference Update="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="$(FrameworkVersion)"/>
|
||||
<PackageReference Update="Microsoft.AspNetCore.TestHost" Version="$(FrameworkVersion)"/>
|
||||
<PackageReference Update="Microsoft.AspNetCore.Identity" Version="$(FrameworkVersion)"/>
|
||||
<PackageReference Update="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="$(FrameworkVersion)"/>
|
||||
<PackageReference Update="Microsoft.AspNetCore.Authentication.Certificate" Version="$(FrameworkVersion)"/>
|
||||
<PackageReference Update="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="$(FrameworkVersion)"/>
|
||||
|
||||
<!--microsoft entity framework -->
|
||||
<PackageReference Update="Microsoft.EntityFrameworkCore.Relational" Version="$(EntityFrameworkVersion)"/>
|
||||
<PackageReference Update="Microsoft.EntityFrameworkCore.Sqlite" Version="$(EntityFrameworkVersion)"/>
|
||||
<PackageReference Update="Microsoft.EntityFrameworkCore.InMemory" Version="$(EntityFrameworkVersion)"/>
|
||||
<PackageReference Update="Microsoft.EntityFrameworkCore.SqlServer" Version="$(EntityFrameworkVersion)"/>
|
||||
<PackageReference Update="Microsoft.EntityFrameworkCore.Design" Version="$(EntityFrameworkVersion)" PrivateAssets="All"/>
|
||||
|
||||
<!-- open telemetry -->
|
||||
<PackageReference Update="OpenTelemetry" Version="1.10.0" />
|
||||
<PackageReference Update="OpenTelemetry.Exporter.Console" Version="1.10.0" />
|
||||
<PackageReference Update="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.10.0" />
|
||||
<PackageReference Update="OpenTelemetry.Exporter.Prometheus.AspNetCore" Version="1.10.0-beta.1" />
|
||||
<PackageReference Update="OpenTelemetry.Extensions.Hosting" Version="1.10.0" />
|
||||
<PackageReference Update="OpenTelemetry.Instrumentation.AspNetCore" Version="1.9.0" />
|
||||
<PackageReference Update="OpenTelemetry.Instrumentation.Http" Version="1.9.0" />
|
||||
<PackageReference Update="OpenTelemetry.Instrumentation.SqlClient" Version="1.9.0-beta.1" />
|
||||
|
||||
<!-- Transitive Dependencies -->
|
||||
<!-- These packages are all transitive dependencies that would
|
||||
otherwise resolve to a version with a security vulnerabilitiy. In future, we
|
||||
would like to update Microsoft.Data.SqlClient and
|
||||
Microsoft.EntityFrameworkCore, and remove these explicit dependencies (assuming
|
||||
that future versions of the intermediate dependencies that don't have this
|
||||
problem exist someday). -->
|
||||
<PackageReference Update="Azure.Identity" Version="1.11.4" />
|
||||
<PackageReference Update="System.Formats.Asn1" Version="$(ExtensionsVersion)" />
|
||||
<PackageReference Update="System.Drawing.Common" Version="6.0.0" />
|
||||
|
||||
<PackageReference Update="Microsoft.Data.SqlClient" Version="5.2.2" />
|
||||
|
||||
</ItemGroup>
|
||||
|
||||
<Target Name="SetAssemblyVersion" AfterTargets="MinVer">
|
||||
<PropertyGroup>
|
||||
<AssemblyVersion>$(MinVerMajor).$(MinVerMinor).$(MinVerPatch).0</AssemblyVersion>
|
||||
</PropertyGroup>
|
||||
</Target>
|
||||
</Project>
|
||||
|
|
@ -1,122 +0,0 @@
|
|||
// Copyright (c) Duende Software. All rights reserved.
|
||||
// See LICENSE in the project root for license information.
|
||||
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using static Bullseye.Targets;
|
||||
using static SimpleExec.Command;
|
||||
|
||||
namespace build
|
||||
{
|
||||
internal static class Program
|
||||
{
|
||||
private const string solution = "Duende.IdentityServer.sln";
|
||||
private const string solutionCodeQL = "Duende.IdentityServer.CodeQL.sln";
|
||||
private const string packOutput = "./artifacts";
|
||||
private const string envVarMissing = " environment variable is missing. Aborting.";
|
||||
|
||||
private static class Targets
|
||||
{
|
||||
public const string RestoreTools = "restore-tools";
|
||||
public const string CleanBuildOutput = "clean-build-output";
|
||||
public const string CleanPackOutput = "clean-pack-output";
|
||||
public const string Build = "build";
|
||||
public const string CodeQL = "codeql";
|
||||
public const string Test = "test";
|
||||
public const string Pack = "pack";
|
||||
public const string SignPackage = "sign-package";
|
||||
}
|
||||
|
||||
static async Task Main(string[] args)
|
||||
{
|
||||
Target(Targets.RestoreTools, () =>
|
||||
{
|
||||
Run("dotnet", "tool restore");
|
||||
});
|
||||
|
||||
Target(Targets.CleanBuildOutput, () =>
|
||||
{
|
||||
Run("dotnet", $"clean {solution} -c Release -v m --nologo");
|
||||
});
|
||||
|
||||
Target(Targets.Build, DependsOn(Targets.CleanBuildOutput), () =>
|
||||
{
|
||||
Run("dotnet", $"build {solution} -c Release --nologo");
|
||||
});
|
||||
|
||||
Target(Targets.CodeQL, () =>
|
||||
{
|
||||
Run("dotnet", $"build {solutionCodeQL} -c Release --nologo");
|
||||
});
|
||||
|
||||
Target(Targets.Test, DependsOn(Targets.Build), () =>
|
||||
{
|
||||
Run("dotnet", $"test {solution} -c Release --no-build --nologo");
|
||||
});
|
||||
|
||||
Target(Targets.CleanPackOutput, () =>
|
||||
{
|
||||
if (Directory.Exists(packOutput))
|
||||
{
|
||||
Directory.Delete(packOutput, true);
|
||||
}
|
||||
});
|
||||
|
||||
Target(Targets.Pack, DependsOn(Targets.Build, Targets.CleanPackOutput), () =>
|
||||
{
|
||||
var directory = Directory.CreateDirectory(packOutput).FullName;
|
||||
|
||||
Run("dotnet", $"pack ./src/Storage/Duende.IdentityServer.Storage.csproj -c Release -o {directory} --no-build --nologo");
|
||||
Run("dotnet", $"pack ./src/IdentityServer/Duende.IdentityServer.csproj -c Release -o {directory} --no-build --nologo");
|
||||
|
||||
Run("dotnet", $"pack ./src/EntityFramework.Storage/Duende.IdentityServer.EntityFramework.Storage.csproj -c Release -o {directory} --no-build --nologo");
|
||||
Run("dotnet", $"pack ./src/EntityFramework/Duende.IdentityServer.EntityFramework.csproj -c Release -o {directory} --no-build --nologo");
|
||||
|
||||
Run("dotnet", $"pack ./src/Configuration/Duende.IdentityServer.Configuration.csproj -c Release -o {directory} --no-build --nologo");
|
||||
Run("dotnet", $"pack ./src/Configuration.EntityFramework/Duende.IdentityServer.Configuration.EntityFramework.csproj -c Release -o {directory} --no-build --nologo");
|
||||
|
||||
Run("dotnet", $"pack ./src/AspNetIdentity/Duende.IdentityServer.AspNetIdentity.csproj -c Release -o {directory} --no-build --nologo");
|
||||
});
|
||||
|
||||
Target(Targets.SignPackage, DependsOn(Targets.Pack, Targets.RestoreTools), () =>
|
||||
{
|
||||
SignNuGet();
|
||||
});
|
||||
|
||||
Target("default", DependsOn(Targets.Test, Targets.Pack));
|
||||
Target("sign", DependsOn(Targets.Test, Targets.SignPackage));
|
||||
|
||||
await RunTargetsAndExitAsync(args, ex => ex is SimpleExec.ExitCodeException || ex.Message.EndsWith(envVarMissing));
|
||||
}
|
||||
|
||||
private static void SignNuGet()
|
||||
{
|
||||
var signClientSecret = Environment.GetEnvironmentVariable("SignClientSecret");
|
||||
|
||||
if (string.IsNullOrWhiteSpace(signClientSecret))
|
||||
{
|
||||
throw new Exception($"SignClientSecret{envVarMissing}");
|
||||
}
|
||||
|
||||
foreach (var file in Directory.GetFiles(packOutput, "*.nupkg", SearchOption.AllDirectories))
|
||||
{
|
||||
Console.WriteLine($" Signing {file}");
|
||||
|
||||
Run("dotnet",
|
||||
"NuGetKeyVaultSignTool " +
|
||||
$"sign {file} " +
|
||||
"--file-digest sha256 " +
|
||||
"--timestamp-rfc3161 http://timestamp.digicert.com " +
|
||||
"--azure-key-vault-url https://duendecodesigninghsm.vault.azure.net/ " +
|
||||
"--azure-key-vault-client-id 18e3de68-2556-4345-8076-a46fad79e474 " +
|
||||
"--azure-key-vault-tenant-id ed3089f0-5401-4758-90eb-066124e2d907 " +
|
||||
$"--azure-key-vault-client-secret {signClientSecret} " +
|
||||
"--azure-key-vault-certificate NuGetPackageSigning"
|
||||
,noEcho: true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
4
identity-server/clients/Directory.Build.props
Normal file
4
identity-server/clients/Directory.Build.props
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
<Import Project="../../samples.props" />
|
||||
</Project>
|
||||
|
|
@ -5,7 +5,7 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="IdentityModel.AspNetCore.OAuth2Introspection" Version="6.2.0" />
|
||||
<PackageReference Include="IdentityModel.AspNetCore.OAuth2Introspection" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" />
|
||||
<PackageReference Include="Serilog.AspNetCore" />
|
||||
</ItemGroup>
|
||||
|
|
|
|||
|
|
@ -13,6 +13,4 @@
|
|||
<ProjectReference Include="..\Constants\Constants.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
</Project>
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
<ItemGroup>
|
||||
<FrameworkReference Include="Microsoft.AspNetCore.App" />
|
||||
|
||||
<PackageReference Include="IdentityModel.OidcClient" Version="5.2.1" />
|
||||
<PackageReference Include="Duende.IdentityModel.OidcClient" />
|
||||
<PackageReference Include="Serilog.AspNetCore" />
|
||||
</ItemGroup>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
using Clients;
|
||||
using Duende.IdentityModel.Client;
|
||||
using IdentityModel.OidcClient;
|
||||
using Serilog;
|
||||
using System;
|
||||
using System.Net.Http;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using IdentityModel.OidcClient.Browser;
|
||||
using Duende.IdentityModel.OidcClient.Browser;
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
<ItemGroup>
|
||||
<FrameworkReference Include="Microsoft.AspNetCore.App"/>
|
||||
|
||||
<PackageReference Include="IdentityModel.OidcClient" Version="5.2.1"/>
|
||||
<PackageReference Include="Duende.IdentityModel.OidcClient" />
|
||||
<PackageReference Include="Serilog.AspNetCore" />
|
||||
</ItemGroup>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
using Clients;
|
||||
using IdentityModel.OidcClient;
|
||||
using Duende.IdentityModel;
|
||||
using Duende.IdentityModel.Client;
|
||||
using Duende.IdentityModel.OidcClient;
|
||||
using Serilog;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Duende.IdentityModel;
|
||||
using IdentityModel.Client;
|
||||
|
||||
namespace ConsoleResourceIndicators
|
||||
{
|
||||
|
|
|
|||
|
|
@ -2,14 +2,14 @@
|
|||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net472</TargetFramework>
|
||||
<TargetFrameworks>net472</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="IdentityModel.OidcClient" Version="4.0.0-preview.1.3" />
|
||||
<PackageReference Include="Duende.IdentityModel.OidcClient" />
|
||||
|
||||
<PackageReference Include="Serilog.Extensions.Logging" Version="3.0.1" />
|
||||
<PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" />
|
||||
<PackageReference Include="Serilog.Extensions.Logging" />
|
||||
<PackageReference Include="Serilog.Sinks.Console" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
4
identity-server/hosts/Directory.Build.props
Normal file
4
identity-server/hosts/Directory.Build.props
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
<Import Project="../../samples.props" />
|
||||
</Project>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 685 B |
4
identity-server/migrations/Directory.Build.props
Normal file
4
identity-server/migrations/Directory.Build.props
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
<Import Project="../../samples.props" />
|
||||
</Project>
|
||||
|
|
@ -5,14 +5,8 @@
|
|||
<TargetFrameworks>net8.0;net9.0</TargetFrameworks>
|
||||
<Description>ASP.NET Core Identity Integration for Duende IdentityServer</Description>
|
||||
<AssemblyName>Duende.IdentityServer.AspNetIdentity</AssemblyName>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="README.md" Pack="true" PackagePath=""/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<FrameworkReference Include="Microsoft.AspNetCore.App" />
|
||||
</ItemGroup>
|
||||
|
|
|
|||
|
|
@ -4,14 +4,8 @@
|
|||
<TargetFrameworks>net8.0;net9.0</TargetFrameworks>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="README.md" Pack="true" PackagePath="" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Configuration\Duende.IdentityServer.Configuration.csproj" />
|
||||
<ProjectReference Include="..\Storage\Duende.IdentityServer.Storage.csproj" />
|
||||
|
|
|
|||
|
|
@ -6,14 +6,8 @@
|
|||
<Nullable>enable</Nullable>
|
||||
<Description>Configuration system for Duende IdentityServer</Description>
|
||||
<AssemblyName>Duende.IdentityServer.Configuration</AssemblyName>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="README.md" Pack="true" PackagePath=""/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<FrameworkReference Include="Microsoft.AspNetCore.App" />
|
||||
</ItemGroup>
|
||||
|
|
|
|||
14
identity-server/src/Directory.Build.props
Normal file
14
identity-server/src/Directory.Build.props
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
|
||||
<Import Project="../../src.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<PackageTags>OAuth 2.0;OpenID Connect;Security;Identity;IdentityServer;ASP.NET Core</PackageTags>
|
||||
<Product>Duende IdentityServer</Product>
|
||||
<DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports>
|
||||
<MinVerTagPrefix>is-</MinVerTagPrefix>
|
||||
<MinVerMinimumMajorMinor>7.0</MinVerMinimumMajorMinor>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -4,14 +4,8 @@
|
|||
<PackageId>Duende.IdentityServer.EntityFramework.Storage</PackageId>
|
||||
<TargetFrameworks>net8.0;net9.0</TargetFrameworks>
|
||||
<Description>EntityFramework persistence layer for Duende IdentityServer</Description>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="README.md" Pack="true" PackagePath=""/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" />
|
||||
</ItemGroup>
|
||||
|
|
|
|||
|
|
@ -5,14 +5,8 @@
|
|||
<TargetFrameworks>net8.0;net9.0</TargetFrameworks>
|
||||
<Description>EntityFramework persistence layer for Duende IdentityServer</Description>
|
||||
<AssemblyName>Duende.IdentityServer.EntityFramework</AssemblyName>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="README.md" Pack="true" PackagePath=""/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\EntityFramework.Storage\Duende.IdentityServer.EntityFramework.Storage.csproj" />
|
||||
<ProjectReference Include="..\IdentityServer\Duende.IdentityServer.csproj" />
|
||||
|
|
|
|||
|
|
@ -5,14 +5,8 @@
|
|||
<TargetFrameworks>net8.0;net9.0</TargetFrameworks>
|
||||
<Description>OpenID Connect and OAuth 2.0 Framework for ASP.NET Core</Description>
|
||||
<AssemblyName>Duende.IdentityServer</AssemblyName>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="README.md" Pack="true" PackagePath=""/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<FrameworkReference Include="Microsoft.AspNetCore.App" />
|
||||
</ItemGroup>
|
||||
|
|
|
|||
|
|
@ -5,15 +5,8 @@
|
|||
|
||||
<PackageId>Duende.IdentityServer.Storage</PackageId>
|
||||
<Description>Storage interfaces and models for Duende IdentityServer</Description>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
|
||||
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="README.md" Pack="true" PackagePath=""/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Duende.IdentityModel" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.DataProtection.Abstractions" />
|
||||
|
|
|
|||
|
|
@ -16,12 +16,6 @@
|
|||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" />
|
||||
<PackageReference Include="xunit" />
|
||||
<PackageReference Include="xunit.runner.visualstudio">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="FluentAssertions" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.TestHost" />
|
||||
|
|
|
|||
4
identity-server/test/Directory.Build.props
Normal file
4
identity-server/test/Directory.Build.props
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
<Import Project="../../test.props" />
|
||||
</Project>
|
||||
|
|
@ -5,11 +5,7 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" />
|
||||
<PackageReference Include="xunit" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" />
|
||||
<PackageReference Include="FluentAssertions" />
|
||||
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" />
|
||||
|
|
|
|||
|
|
@ -55,7 +55,6 @@ public class IntegrationTest<TClass, TDbContext, TStoreOption> : IClassFixture<D
|
|||
|
||||
protected IntegrationTest(DatabaseProviderFixture<TDbContext> fixture)
|
||||
{
|
||||
fixture.Options = TestDatabaseProviders.SelectMany(x => x.Select(y => (DbContextOptions<TDbContext>) y))
|
||||
.ToList();
|
||||
fixture.Options = TestDatabaseProviders.ToList<DbContextOptions<TDbContext>>();
|
||||
}
|
||||
}
|
||||
|
|
@ -21,10 +21,10 @@ public class CorsPolicyServiceTests : IntegrationTest<CorsPolicyServiceTests, Co
|
|||
{
|
||||
public CorsPolicyServiceTests(DatabaseProviderFixture<ConfigurationDbContext> fixture) : base(fixture)
|
||||
{
|
||||
foreach (var options in TestDatabaseProviders.SelectMany(x => x.Select(y => (DbContextOptions<ConfigurationDbContext>) y)).ToList())
|
||||
foreach (var options in TestDatabaseProviders)
|
||||
{
|
||||
using (var context = new ConfigurationDbContext(options))
|
||||
context.Database.EnsureCreated();
|
||||
using var context = new ConfigurationDbContext(options);
|
||||
context.Database.EnsureCreated();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -15,10 +15,10 @@ public class ClientDbContextTests : IntegrationTest<ClientDbContextTests, Config
|
|||
{
|
||||
public ClientDbContextTests(DatabaseProviderFixture<ConfigurationDbContext> fixture) : base(fixture)
|
||||
{
|
||||
foreach (var options in TestDatabaseProviders.SelectMany(x => x.Select(y => (DbContextOptions<ConfigurationDbContext>)y)).ToList())
|
||||
foreach (var options in TestDatabaseProviders)
|
||||
{
|
||||
using (var context = new ConfigurationDbContext(options))
|
||||
context.Database.EnsureCreated();
|
||||
using var context = new ConfigurationDbContext(options);
|
||||
context.Database.EnsureCreated();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -9,11 +9,7 @@
|
|||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" />
|
||||
<PackageReference Include="xunit" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" />
|
||||
<PackageReference Include="FluentAssertions" />
|
||||
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" />
|
||||
|
|
|
|||
|
|
@ -55,7 +55,6 @@ public class IntegrationTest<TClass, TDbContext, TStoreOption> : IClassFixture<D
|
|||
|
||||
protected IntegrationTest(DatabaseProviderFixture<TDbContext> fixture)
|
||||
{
|
||||
fixture.Options = TestDatabaseProviders.SelectMany(x => x.Select(y => (DbContextOptions<TDbContext>) y))
|
||||
.ToList();
|
||||
fixture.Options = TestDatabaseProviders.ToList<DbContextOptions<TDbContext>>();
|
||||
}
|
||||
}
|
||||
|
|
@ -22,24 +22,20 @@ public class ClientStoreTests : IntegrationTest<ClientStoreTests, ConfigurationD
|
|||
{
|
||||
public ClientStoreTests(DatabaseProviderFixture<ConfigurationDbContext> fixture) : base(fixture)
|
||||
{
|
||||
foreach (var options in TestDatabaseProviders.SelectMany(x => x.Select(y => (DbContextOptions<ConfigurationDbContext>) y)).ToList())
|
||||
foreach (var options in TestDatabaseProviders)
|
||||
{
|
||||
using (var context = new ConfigurationDbContext(options))
|
||||
{
|
||||
context.Database.EnsureCreated();
|
||||
}
|
||||
using var context = new ConfigurationDbContext(options);
|
||||
context.Database.EnsureCreated();
|
||||
}
|
||||
}
|
||||
|
||||
[Theory, MemberData(nameof(TestDatabaseProviders))]
|
||||
public async Task FindClientByIdAsync_WhenClientDoesNotExist_ExpectNull(DbContextOptions<ConfigurationDbContext> options)
|
||||
{
|
||||
using (var context = new ConfigurationDbContext(options))
|
||||
{
|
||||
var store = new ClientStore(context, FakeLogger<ClientStore>.Create(), new NoneCancellationTokenProvider());
|
||||
var client = await store.FindClientByIdAsync(Guid.NewGuid().ToString());
|
||||
client.Should().BeNull();
|
||||
}
|
||||
using var context = new ConfigurationDbContext(options);
|
||||
var store = new ClientStore(context, FakeLogger<ClientStore>.Create(), new NoneCancellationTokenProvider());
|
||||
var client = await store.FindClientByIdAsync(Guid.NewGuid().ToString());
|
||||
client.Should().BeNull();
|
||||
}
|
||||
|
||||
[Theory, MemberData(nameof(TestDatabaseProviders))]
|
||||
|
|
|
|||
|
|
@ -28,10 +28,10 @@ public class DeviceFlowStoreTests : IntegrationTest<DeviceFlowStoreTests, Persis
|
|||
|
||||
public DeviceFlowStoreTests(DatabaseProviderFixture<PersistedGrantDbContext> fixture) : base(fixture)
|
||||
{
|
||||
foreach (var options in TestDatabaseProviders.SelectMany(x => x.Select(y => (DbContextOptions<PersistedGrantDbContext>)y)).ToList())
|
||||
foreach (var options in TestDatabaseProviders)
|
||||
{
|
||||
using (var context = new PersistedGrantDbContext(options))
|
||||
context.Database.EnsureCreated();
|
||||
using var context = new PersistedGrantDbContext(options);
|
||||
context.Database.EnsureCreated();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -20,10 +20,10 @@ public class IdentityProviderStoreTests : IntegrationTest<IdentityProviderStoreT
|
|||
{
|
||||
public IdentityProviderStoreTests(DatabaseProviderFixture<ConfigurationDbContext> fixture) : base(fixture)
|
||||
{
|
||||
foreach (var options in TestDatabaseProviders.SelectMany(x => x.Select(y => (DbContextOptions<ConfigurationDbContext>)y)).ToList())
|
||||
foreach (var options in TestDatabaseProviders)
|
||||
{
|
||||
using (var context = new ConfigurationDbContext(options))
|
||||
context.Database.EnsureCreated();
|
||||
using var context = new ConfigurationDbContext(options);
|
||||
context.Database.EnsureCreated();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -23,10 +23,10 @@ public class PersistedGrantStoreTests : IntegrationTest<PersistedGrantStoreTests
|
|||
{
|
||||
public PersistedGrantStoreTests(DatabaseProviderFixture<PersistedGrantDbContext> fixture) : base(fixture)
|
||||
{
|
||||
foreach (var options in TestDatabaseProviders.SelectMany(x => x.Select(y => (DbContextOptions<PersistedGrantDbContext>)y)).ToList())
|
||||
foreach (var options in TestDatabaseProviders)
|
||||
{
|
||||
using (var context = new PersistedGrantDbContext(options))
|
||||
context.Database.EnsureCreated();
|
||||
using var context = new PersistedGrantDbContext(options);
|
||||
context.Database.EnsureCreated();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -22,10 +22,10 @@ public class ScopeStoreTests : IntegrationTest<ScopeStoreTests, ConfigurationDbC
|
|||
{
|
||||
public ScopeStoreTests(DatabaseProviderFixture<ConfigurationDbContext> fixture) : base(fixture)
|
||||
{
|
||||
foreach (var options in TestDatabaseProviders.SelectMany(x => x.Select(y => (DbContextOptions<ConfigurationDbContext>)y)).ToList())
|
||||
foreach (var options in TestDatabaseProviders)
|
||||
{
|
||||
using (var context = new ConfigurationDbContext(options))
|
||||
context.Database.EnsureCreated();
|
||||
using var context = new ConfigurationDbContext(options);
|
||||
context.Database.EnsureCreated();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ public class TokenCleanupTests : IntegrationTest<TokenCleanupTests, PersistedGra
|
|||
{
|
||||
public TokenCleanupTests(DatabaseProviderFixture<PersistedGrantDbContext> fixture) : base(fixture)
|
||||
{
|
||||
foreach (var options in TestDatabaseProviders.SelectMany(x => x.Select(y => (DbContextOptions<PersistedGrantDbContext>)y)).ToList())
|
||||
foreach (var options in TestDatabaseProviders)
|
||||
{
|
||||
using (var context = new PersistedGrantDbContext(options))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -6,9 +6,6 @@
|
|||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="FluentAssertions" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" />
|
||||
<PackageReference Include="xunit" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" />
|
||||
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" />
|
||||
</ItemGroup>
|
||||
|
|
|
|||
|
|
@ -10,19 +10,16 @@
|
|||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.TimeProvider.Testing" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.TestHost" />
|
||||
<PackageReference Include="System.IdentityModel.Tokens.Jwt" />
|
||||
<PackageReference Include="AngleSharp" />
|
||||
<PackageReference Include="xunit" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" PrivateAssets="All" />
|
||||
<PackageReference Include="FluentAssertions" />
|
||||
<PackageReference Include="FluentAssertions.Web" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="System.Net.Http" Version="4.3.4" />
|
||||
<PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" />
|
||||
<PackageReference Include="System.Net.Http" />
|
||||
<PackageReference Include="System.Text.RegularExpressions" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
|
|
@ -9,12 +9,8 @@
|
|||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" />
|
||||
<PackageReference Include="Microsoft.Extensions.Diagnostics.Testing" />
|
||||
<PackageReference Include="Microsoft.Extensions.TimeProvider.Testing" />
|
||||
|
||||
<PackageReference Include="xunit" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" PrivateAssets="All" />
|
||||
<PackageReference Include="FluentAssertions" />
|
||||
</ItemGroup>
|
||||
|
||||
|
|
|
|||
12
ignore-this/.config/dotnet-tools.json
Normal file
12
ignore-this/.config/dotnet-tools.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"version": 1,
|
||||
"isRoot": true,
|
||||
"tools": {
|
||||
"NuGetKeyVaultSignTool": {
|
||||
"version": "3.2.3",
|
||||
"commands": [
|
||||
"NuGetKeyVaultSignTool"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
3
ignore-this/README.md
Normal file
3
ignore-this/README.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# Ignore This
|
||||
|
||||
Ignore this package; it's used internally to test our package publishing process.
|
||||
11
ignore-this/src/Directory.Build.props
Normal file
11
ignore-this/src/Directory.Build.props
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
|
||||
<Import Project="../../src.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<MinVerTagPrefix>it-</MinVerTagPrefix>
|
||||
<MinVerMinimumMajorMinor>0.1</MinVerMinimumMajorMinor>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
10
ignore-this/src/IgnoreThis/IgnoreThis.csproj
Normal file
10
ignore-this/src/IgnoreThis/IgnoreThis.csproj
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<PackageId>Duende.IgnoreThis</PackageId>
|
||||
<AssemblyName>$(PackageId)</AssemblyName>
|
||||
<RootNamespace>$(PackageId)</RootNamespace>
|
||||
<Description>Automatic access token management for OAuth client credential flows</Description>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
4
ignore-this/test/Directory.Build.props
Normal file
4
ignore-this/test/Directory.Build.props
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
<Import Project="../../test.props" />
|
||||
</Project>
|
||||
11
ignore-this/test/IgnoreThis.Tests/Class1.cs
Normal file
11
ignore-this/test/IgnoreThis.Tests/Class1.cs
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
// Copyright (c) Duende Software. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.
|
||||
|
||||
namespace Duende.IgnoreThis;
|
||||
|
||||
public class Class1
|
||||
{
|
||||
[Fact]
|
||||
public void Test1()
|
||||
{ }
|
||||
}
|
||||
|
|
@ -1,13 +1,9 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<RootNamespace>Duende.IgnoreThis</RootNamespace>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Bullseye" />
|
||||
<PackageReference Include="SimpleExec" />
|
||||
<ProjectReference Include="..\..\src\IgnoreThis\IgnoreThis.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
</Project>
|
||||
5
ignore-this/test/IgnoreThis.Tests/Usings.cs
Normal file
5
ignore-this/test/IgnoreThis.Tests/Usings.cs
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
// Copyright (c) Duende Software. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.
|
||||
|
||||
global using Xunit;
|
||||
global using Shouldly;
|
||||
10
samples.props
Normal file
10
samples.props
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
|
||||
<PropertyGroup>
|
||||
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<IsPackable>false</IsPackable>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
68
src.props
Normal file
68
src.props
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<Authors>Duende Software</Authors>
|
||||
<Company>Duende Software</Company>
|
||||
<Copyright>Duende Software</Copyright>
|
||||
|
||||
|
||||
<!-- TODO - This is different between foss and is/bff -->
|
||||
<!-- This is what foss does -->
|
||||
<!-- <DebugType>full</DebugType> -->
|
||||
<!-- This is what is/bff do -->
|
||||
<DebugType Condition="'$(GITHUB_ACTIONS)' == 'true'">embedded</DebugType>
|
||||
|
||||
<!-- TODO - we want to enable nullable everywhere eventually -->
|
||||
<!-- <Nullable>enable</Nullable> -->
|
||||
<LangVersion>latest</LangVersion>
|
||||
<ImplicitUsings>true</ImplicitUsings>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<ContinuousIntegrationBuild Condition="'$(GITHUB_ACTIONS)' == 'true'">True</ContinuousIntegrationBuild>
|
||||
<Deterministic>true</Deterministic>
|
||||
<NoWarn>$(NoWarn);CS1591,NU1507</NoWarn>
|
||||
<IsTestProject>false</IsTestProject>
|
||||
<IsPackable>true</IsPackable>
|
||||
|
||||
<!--NuGet-->
|
||||
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
|
||||
<!-- TODO - Verify that license is included in nuget packages -->
|
||||
<PackageLicenseFile>LICENSE</PackageLicenseFile>
|
||||
<PackageIcon>icon.png</PackageIcon>
|
||||
<PackageProjectUrl>https://github.com/duendesoftware/products</PackageProjectUrl>
|
||||
<PackageReleaseNotes>https://github.com/duendesoftware/products/releases</PackageReleaseNotes>
|
||||
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||
|
||||
<!--Minver-->
|
||||
<BUILD_NUMBER Condition="'$(BUILD_NUMBER)' == ''">0</BUILD_NUMBER>
|
||||
<MinVerBuildMetadata>build.$(BUILD_NUMBER)</MinVerBuildMetadata>
|
||||
<MinVerAutoIncrement>patch</MinVerAutoIncrement>
|
||||
|
||||
<!--SourceLink-->
|
||||
<PublishRepositoryUrl>true</PublishRepositoryUrl>
|
||||
<EmbedUntrackedSources>true</EmbedUntrackedSources>
|
||||
<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
|
||||
<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
|
||||
|
||||
<PackageReadmePath>../../README.md</PackageReadmePath>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.SourceLink.GitHub">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="MinVer">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="../../../icon.png" Pack="true" Visible="false" PackagePath="" />
|
||||
<None Include="$(PackageReadmePath)" Pack="true" PackagePath="" />
|
||||
<None Include="../../../LICENSE" Pack="true" PackagePath="" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue