diff --git a/.nuke b/.nuke deleted file mode 100644 index c11a315..0000000 --- a/.nuke +++ /dev/null @@ -1 +0,0 @@ -src/Robware.Api.Auth.sln \ No newline at end of file diff --git a/.nuke/build.schema.json b/.nuke/build.schema.json new file mode 100644 index 0000000..878f137 --- /dev/null +++ b/.nuke/build.schema.json @@ -0,0 +1,114 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Build Schema", + "$ref": "#/definitions/build", + "definitions": { + "build": { + "type": "object", + "properties": { + "Configuration": { + "type": "string", + "description": "Configuration to build - Default is 'Debug' (local) or 'Release' (server)", + "enum": [ + "Debug", + "Release" + ] + }, + "Continue": { + "type": "boolean", + "description": "Indicates to continue a previously failed build attempt" + }, + "Help": { + "type": "boolean", + "description": "Shows the help text for this build assembly" + }, + "Host": { + "type": "string", + "description": "Host for execution. Default is 'automatic'", + "enum": [ + "AppVeyor", + "AzurePipelines", + "Bamboo", + "Bitbucket", + "Bitrise", + "GitHubActions", + "GitLab", + "Jenkins", + "Rider", + "SpaceAutomation", + "TeamCity", + "Terminal", + "TravisCI", + "VisualStudio", + "VSCode" + ] + }, + "NoLogo": { + "type": "boolean", + "description": "Disables displaying the NUKE logo" + }, + "Partition": { + "type": "string", + "description": "Partition to use on CI" + }, + "Plan": { + "type": "boolean", + "description": "Shows the execution plan (HTML)" + }, + "Profile": { + "type": "array", + "description": "Defines the profiles to load", + "items": { + "type": "string" + } + }, + "Root": { + "type": "string", + "description": "Root directory during build execution" + }, + "Skip": { + "type": "array", + "description": "List of targets to be skipped. Empty list skips all dependencies", + "items": { + "type": "string", + "enum": [ + "Clean", + "Compile", + "Publish", + "Restore", + "Test" + ] + } + }, + "Solution": { + "type": "string", + "description": "Path to a solution file that is automatically loaded" + }, + "Target": { + "type": "array", + "description": "List of targets to be invoked. Default is '{default_target}'", + "items": { + "type": "string", + "enum": [ + "Clean", + "Compile", + "Publish", + "Restore", + "Test" + ] + } + }, + "Verbosity": { + "type": "string", + "description": "Logging verbosity during build execution. Default is 'Normal'", + "enum": [ + "Minimal", + "Normal", + "Quiet", + "Verbose" + ] + } + } + } + } +} \ No newline at end of file diff --git a/.nuke/parameters.json b/.nuke/parameters.json new file mode 100644 index 0000000..20befae --- /dev/null +++ b/.nuke/parameters.json @@ -0,0 +1,4 @@ +{ + "$schema": "./build.schema.json", + "Solution": "src/Robware.Api.Auth.sln" +} \ No newline at end of file diff --git a/.nuke/temp/build-attempt.log b/.nuke/temp/build-attempt.log new file mode 100644 index 0000000..2c52d3f --- /dev/null +++ b/.nuke/temp/build-attempt.log @@ -0,0 +1,5 @@ +5955c86dedd1297c5beb35cdbb991e55 +Restore +Compile +Test +Publish diff --git a/.nuke/temp/build.2023-02-18_13-31-58.log b/.nuke/temp/build.2023-02-18_13-31-58.log new file mode 100644 index 0000000..be4cd57 --- /dev/null +++ b/.nuke/temp/build.2023-02-18_13-31-58.log @@ -0,0 +1,79 @@ +V | | ArgumentsFromParametersFile.OnBuildCreated (150) +V | | Passing value for Build.Solution (src/Robware.Api.Auth.sln) +V | | InjectParameterValues.OnBuildCreated (100) +V | | HandleShellCompletion.OnBuildCreated (75) +V | | GenerateBuildServerConfigurations.OnBuildCreated (50) +V | | InvokeBuildServerConfigurationGeneration.OnBuildCreated (45) +V | | UpdateNotification.OnBuildCreated (10) +V | | UnsetVisualStudioEnvironmentVariables.OnBuildCreated (0) +V | | HandleVisualStudioDebugging.OnBuildCreated (0) +V | | HandleSingleFileExecution.OnBuildCreated (-50) +V | | EventInvoker.OnBuildCreated (-3.4028235E+38) +V | | HandleHelpRequests.OnBuildInitialized (5) +V | | CheckBuildProjectConfigurations.OnBuildInitialized (0) +V | | Telemetry.OnBuildInitialized (0) +V | | InjectNonParameterValues.OnBuildInitialized (-100) +V | | EventInvoker.OnBuildInitialized (-3.4028235E+38) +V | Restore | EventInvoker.OnTargetRunning (-3.4028235E+38) +I | Restore | > /usr/bin/dotnet restore /home/rob/Code/Api.Auth/src/Robware.Api.Auth.sln +D | Restore | Determining projects to restore... +D | Restore | All projects are up-to-date for restore. +V | Restore | Telemetry.OnTargetSucceeded (0) +V | Restore | EventInvoker.OnTargetSucceeded (-3.4028235E+38) +V | Compile | EventInvoker.OnTargetRunning (-3.4028235E+38) +I | Compile | > /usr/bin/dotnet build /home/rob/Code/Api.Auth/src/Robware.Api.Auth.sln --configuration Debug --no-restore +D | Compile | MSBuild version 17.5.0-preview-23061-01+040e2a90e for .NET +D | Compile | Robware.Auth -> /home/rob/Code/Api.Auth/src/Robware.Auth/bin/Debug/net7.0/Robware.Auth.dll +D | Compile | Robware.Data -> /home/rob/Code/Api.Auth/src/Robware.Data/bin/Debug/net7.0/Robware.Data.dll +D | Compile | Robware.Auth.Tests -> /home/rob/Code/Api.Auth/src/Robware.Auth.Tests/bin/Debug/net7.0/Robware.Auth.Tests.dll +W | Compile | /home/rob/Code/Api.Auth/src/Robware.Api.Auth/Authentication/ApiKeyAuthenticationHandler.cs(56,33): warning CS1998: This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread. [/home/rob/Code/Api.Auth/src/Robware.Api.Auth/Robware.Api.Auth.csproj] +W | Compile | /home/rob/Code/Api.Auth/src/Robware.Api.Auth/Authentication/ApiKeyAuthenticationHandler.cs(60,33): warning CS1998: This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread. [/home/rob/Code/Api.Auth/src/Robware.Api.Auth/Robware.Api.Auth.csproj] +D | Compile | Robware.Api.Auth -> /home/rob/Code/Api.Auth/src/Robware.Api.Auth/bin/Debug/net7.0/Robware.Api.Auth.dll +D | Compile | Robware.Api.Auth.Tests -> /home/rob/Code/Api.Auth/src/Robware.Api.Auth.Tests/bin/Debug/net7.0/Robware.Api.Auth.Tests.dll +D | Compile | +D | Compile | Build succeeded. +D | Compile | +W | Compile | /home/rob/Code/Api.Auth/src/Robware.Api.Auth/Authentication/ApiKeyAuthenticationHandler.cs(56,33): warning CS1998: This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread. [/home/rob/Code/Api.Auth/src/Robware.Api.Auth/Robware.Api.Auth.csproj] +W | Compile | /home/rob/Code/Api.Auth/src/Robware.Api.Auth/Authentication/ApiKeyAuthenticationHandler.cs(60,33): warning CS1998: This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread. [/home/rob/Code/Api.Auth/src/Robware.Api.Auth/Robware.Api.Auth.csproj] +D | Compile | 2 Warning(s) +D | Compile | 0 Error(s) +D | Compile | +D | Compile | Time Elapsed 00:00:03.90 +V | Compile | Telemetry.OnTargetSucceeded (0) +V | Compile | EventInvoker.OnTargetSucceeded (-3.4028235E+38) +V | Test | EventInvoker.OnTargetRunning (-3.4028235E+38) +I | Test | > /usr/bin/dotnet test /home/rob/Code/Api.Auth/src/Robware.Api.Auth.sln --no-restore +D | Test | Robware.Auth -> /home/rob/Code/Api.Auth/src/Robware.Auth/bin/Debug/net7.0/Robware.Auth.dll +D | Test | Robware.Data -> /home/rob/Code/Api.Auth/src/Robware.Data/bin/Debug/net7.0/Robware.Data.dll +D | Test | Robware.Auth.Tests -> /home/rob/Code/Api.Auth/src/Robware.Auth.Tests/bin/Debug/net7.0/Robware.Auth.Tests.dll +D | Test | Test run for /home/rob/Code/Api.Auth/src/Robware.Auth.Tests/bin/Debug/net7.0/Robware.Auth.Tests.dll (.NETCoreApp,Version=v7.0) +D | Test | Microsoft (R) Test Execution Command Line Tool Version 17.5.0 (x64) +D | Test | Copyright (c) Microsoft Corporation. All rights reserved. +D | Test | +D | Test | Starting test execution, please wait... +D | Test | Robware.Api.Auth -> /home/rob/Code/Api.Auth/src/Robware.Api.Auth/bin/Debug/net7.0/Robware.Api.Auth.dll +D | Test | A total of 1 test files matched the specified pattern. +D | Test | Robware.Api.Auth.Tests -> /home/rob/Code/Api.Auth/src/Robware.Api.Auth.Tests/bin/Debug/net7.0/Robware.Api.Auth.Tests.dll +D | Test | Test run for /home/rob/Code/Api.Auth/src/Robware.Api.Auth.Tests/bin/Debug/net7.0/Robware.Api.Auth.Tests.dll (.NETCoreApp,Version=v7.0) +D | Test | Microsoft (R) Test Execution Command Line Tool Version 17.5.0 (x64) +D | Test | Copyright (c) Microsoft Corporation. All rights reserved. +D | Test | +D | Test | Starting test execution, please wait... +D | Test | A total of 1 test files matched the specified pattern. +D | Test | +D | Test | Passed! - Failed: 0, Passed: 10, Skipped: 0, Total: 10, Duration: 207 ms - Robware.Auth.Tests.dll (net7.0) +D | Test | +D | Test | Passed! - Failed: 0, Passed: 16, Skipped: 0, Total: 16, Duration: 52 ms - Robware.Api.Auth.Tests.dll (net7.0) +V | Test | Telemetry.OnTargetSucceeded (0) +V | Test | EventInvoker.OnTargetSucceeded (-3.4028235E+38) +V | Publish | EventInvoker.OnTargetRunning (-3.4028235E+38) +I | Publish | > /usr/bin/dotnet publish /home/rob/Code/Api.Auth/src/Robware.Api.Auth/Robware.Api.Auth.csproj --configuration Debug --output /home/rob/Code/Api.Auth/output +D | Publish | MSBuild version 17.5.0-preview-23061-01+040e2a90e for .NET +D | Publish | Determining projects to restore... +D | Publish | All projects are up-to-date for restore. +D | Publish | Robware.Auth -> /home/rob/Code/Api.Auth/src/Robware.Auth/bin/Debug/net7.0/Robware.Auth.dll +D | Publish | Robware.Data -> /home/rob/Code/Api.Auth/src/Robware.Data/bin/Debug/net7.0/Robware.Data.dll +D | Publish | Robware.Api.Auth -> /home/rob/Code/Api.Auth/src/Robware.Api.Auth/bin/Debug/net7.0/Robware.Api.Auth.dll +D | Publish | Robware.Api.Auth -> /home/rob/Code/Api.Auth/output/ +V | Publish | Telemetry.OnTargetSucceeded (0) +V | Publish | EventInvoker.OnTargetSucceeded (-3.4028235E+38) diff --git a/.nuke/temp/build.log b/.nuke/temp/build.log new file mode 100644 index 0000000..f141ec5 --- /dev/null +++ b/.nuke/temp/build.log @@ -0,0 +1,79 @@ +13:31:58.453 | V | | ArgumentsFromParametersFile.OnBuildCreated (150) +13:31:58.496 | V | | Passing value for Build.Solution (src/Robware.Api.Auth.sln) +13:31:58.506 | V | | InjectParameterValues.OnBuildCreated (100) +13:31:58.550 | V | | HandleShellCompletion.OnBuildCreated (75) +13:31:58.655 | V | | GenerateBuildServerConfigurations.OnBuildCreated (50) +13:31:58.655 | V | | InvokeBuildServerConfigurationGeneration.OnBuildCreated (45) +13:31:58.667 | V | | UpdateNotification.OnBuildCreated (10) +13:31:58.667 | V | | UnsetVisualStudioEnvironmentVariables.OnBuildCreated (0) +13:31:58.667 | V | | HandleVisualStudioDebugging.OnBuildCreated (0) +13:31:58.668 | V | | HandleSingleFileExecution.OnBuildCreated (-50) +13:31:58.668 | V | | EventInvoker.OnBuildCreated (-3.4028235E+38) +13:31:58.685 | V | | HandleHelpRequests.OnBuildInitialized (5) +13:31:58.685 | V | | CheckBuildProjectConfigurations.OnBuildInitialized (0) +13:31:58.895 | V | | Telemetry.OnBuildInitialized (0) +13:32:25.683 | V | | InjectNonParameterValues.OnBuildInitialized (-100) +13:32:25.684 | V | | EventInvoker.OnBuildInitialized (-3.4028235E+38) +13:32:25.696 | V | Restore | EventInvoker.OnTargetRunning (-3.4028235E+38) +13:32:25.716 | I | Restore | > /usr/bin/dotnet restore /home/rob/Code/Api.Auth/src/Robware.Api.Auth.sln +13:32:26.594 | D | Restore | Determining projects to restore... +13:32:26.964 | D | Restore | All projects are up-to-date for restore. +13:32:27.006 | V | Restore | Telemetry.OnTargetSucceeded (0) +13:32:27.007 | V | Restore | EventInvoker.OnTargetSucceeded (-3.4028235E+38) +13:32:27.008 | V | Compile | EventInvoker.OnTargetRunning (-3.4028235E+38) +13:32:27.016 | I | Compile | > /usr/bin/dotnet build /home/rob/Code/Api.Auth/src/Robware.Api.Auth.sln --configuration Debug --no-restore +13:32:27.180 | D | Compile | MSBuild version 17.5.0-preview-23061-01+040e2a90e for .NET +13:32:29.220 | D | Compile | Robware.Auth -> /home/rob/Code/Api.Auth/src/Robware.Auth/bin/Debug/net7.0/Robware.Auth.dll +13:32:29.869 | D | Compile | Robware.Data -> /home/rob/Code/Api.Auth/src/Robware.Data/bin/Debug/net7.0/Robware.Data.dll +13:32:29.945 | D | Compile | Robware.Auth.Tests -> /home/rob/Code/Api.Auth/src/Robware.Auth.Tests/bin/Debug/net7.0/Robware.Auth.Tests.dll +13:32:30.421 | W | Compile | /home/rob/Code/Api.Auth/src/Robware.Api.Auth/Authentication/ApiKeyAuthenticationHandler.cs(56,33): warning CS1998: This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread. [/home/rob/Code/Api.Auth/src/Robware.Api.Auth/Robware.Api.Auth.csproj] +13:32:30.422 | W | Compile | /home/rob/Code/Api.Auth/src/Robware.Api.Auth/Authentication/ApiKeyAuthenticationHandler.cs(60,33): warning CS1998: This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread. [/home/rob/Code/Api.Auth/src/Robware.Api.Auth/Robware.Api.Auth.csproj] +13:32:30.655 | D | Compile | Robware.Api.Auth -> /home/rob/Code/Api.Auth/src/Robware.Api.Auth/bin/Debug/net7.0/Robware.Api.Auth.dll +13:32:31.102 | D | Compile | Robware.Api.Auth.Tests -> /home/rob/Code/Api.Auth/src/Robware.Api.Auth.Tests/bin/Debug/net7.0/Robware.Api.Auth.Tests.dll +13:32:31.132 | D | Compile | +13:32:31.132 | D | Compile | Build succeeded. +13:32:31.132 | D | Compile | +13:32:31.132 | W | Compile | /home/rob/Code/Api.Auth/src/Robware.Api.Auth/Authentication/ApiKeyAuthenticationHandler.cs(56,33): warning CS1998: This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread. [/home/rob/Code/Api.Auth/src/Robware.Api.Auth/Robware.Api.Auth.csproj] +13:32:31.132 | W | Compile | /home/rob/Code/Api.Auth/src/Robware.Api.Auth/Authentication/ApiKeyAuthenticationHandler.cs(60,33): warning CS1998: This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread. [/home/rob/Code/Api.Auth/src/Robware.Api.Auth/Robware.Api.Auth.csproj] +13:32:31.132 | D | Compile | 2 Warning(s) +13:32:31.132 | D | Compile | 0 Error(s) +13:32:31.132 | D | Compile | +13:32:31.133 | D | Compile | Time Elapsed 00:00:03.90 +13:32:31.156 | V | Compile | Telemetry.OnTargetSucceeded (0) +13:32:31.156 | V | Compile | EventInvoker.OnTargetSucceeded (-3.4028235E+38) +13:32:31.157 | V | Test | EventInvoker.OnTargetRunning (-3.4028235E+38) +13:32:31.162 | I | Test | > /usr/bin/dotnet test /home/rob/Code/Api.Auth/src/Robware.Api.Auth.sln --no-restore +13:32:32.638 | D | Test | Robware.Auth -> /home/rob/Code/Api.Auth/src/Robware.Auth/bin/Debug/net7.0/Robware.Auth.dll +13:32:32.790 | D | Test | Robware.Data -> /home/rob/Code/Api.Auth/src/Robware.Data/bin/Debug/net7.0/Robware.Data.dll +13:32:32.831 | D | Test | Robware.Auth.Tests -> /home/rob/Code/Api.Auth/src/Robware.Auth.Tests/bin/Debug/net7.0/Robware.Auth.Tests.dll +13:32:32.853 | D | Test | Test run for /home/rob/Code/Api.Auth/src/Robware.Auth.Tests/bin/Debug/net7.0/Robware.Auth.Tests.dll (.NETCoreApp,Version=v7.0) +13:32:32.955 | D | Test | Microsoft (R) Test Execution Command Line Tool Version 17.5.0 (x64) +13:32:32.955 | D | Test | Copyright (c) Microsoft Corporation. All rights reserved. +13:32:32.961 | D | Test | +13:32:33.059 | D | Test | Starting test execution, please wait... +13:32:33.089 | D | Test | Robware.Api.Auth -> /home/rob/Code/Api.Auth/src/Robware.Api.Auth/bin/Debug/net7.0/Robware.Api.Auth.dll +13:32:33.099 | D | Test | A total of 1 test files matched the specified pattern. +13:32:33.405 | D | Test | Robware.Api.Auth.Tests -> /home/rob/Code/Api.Auth/src/Robware.Api.Auth.Tests/bin/Debug/net7.0/Robware.Api.Auth.Tests.dll +13:32:33.440 | D | Test | Test run for /home/rob/Code/Api.Auth/src/Robware.Api.Auth.Tests/bin/Debug/net7.0/Robware.Api.Auth.Tests.dll (.NETCoreApp,Version=v7.0) +13:32:33.547 | D | Test | Microsoft (R) Test Execution Command Line Tool Version 17.5.0 (x64) +13:32:33.547 | D | Test | Copyright (c) Microsoft Corporation. All rights reserved. +13:32:33.557 | D | Test | +13:32:33.707 | D | Test | Starting test execution, please wait... +13:32:33.775 | D | Test | A total of 1 test files matched the specified pattern. +13:32:34.800 | D | Test | +13:32:34.806 | D | Test | Passed! - Failed: 0, Passed: 10, Skipped: 0, Total: 10, Duration: 207 ms - Robware.Auth.Tests.dll (net7.0) +13:32:35.522 | D | Test | +13:32:35.529 | D | Test | Passed! - Failed: 0, Passed: 16, Skipped: 0, Total: 16, Duration: 52 ms - Robware.Api.Auth.Tests.dll (net7.0) +13:32:35.636 | V | Test | Telemetry.OnTargetSucceeded (0) +13:32:35.636 | V | Test | EventInvoker.OnTargetSucceeded (-3.4028235E+38) +13:32:35.637 | V | Publish | EventInvoker.OnTargetRunning (-3.4028235E+38) +13:32:35.640 | I | Publish | > /usr/bin/dotnet publish /home/rob/Code/Api.Auth/src/Robware.Api.Auth/Robware.Api.Auth.csproj --configuration Debug --output /home/rob/Code/Api.Auth/output +13:32:35.784 | D | Publish | MSBuild version 17.5.0-preview-23061-01+040e2a90e for .NET +13:32:36.162 | D | Publish | Determining projects to restore... +13:32:36.495 | D | Publish | All projects are up-to-date for restore. +13:32:36.679 | D | Publish | Robware.Auth -> /home/rob/Code/Api.Auth/src/Robware.Auth/bin/Debug/net7.0/Robware.Auth.dll +13:32:36.807 | D | Publish | Robware.Data -> /home/rob/Code/Api.Auth/src/Robware.Data/bin/Debug/net7.0/Robware.Data.dll +13:32:36.931 | D | Publish | Robware.Api.Auth -> /home/rob/Code/Api.Auth/src/Robware.Api.Auth/bin/Debug/net7.0/Robware.Api.Auth.dll +13:32:36.975 | D | Publish | Robware.Api.Auth -> /home/rob/Code/Api.Auth/output/ +13:32:36.996 | V | Publish | Telemetry.OnTargetSucceeded (0) +13:32:36.996 | V | Publish | EventInvoker.OnTargetSucceeded (-3.4028235E+38) diff --git a/Dockerfile b/Dockerfile index 1d6500a..a5d8b60 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,9 @@ -FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build-env +FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build-env WORKDIR /app COPY . ./ RUN ./build.sh -RUN sed -i "s//${ConnectionString}/g" output/appsettings.json -FROM mcr.microsoft.com/dotnet/aspnet:3.1 +FROM mcr.microsoft.com/dotnet/aspnet:7.0 WORKDIR /app COPY --from=build-env /app/output . ENTRYPOINT ["dotnet", "Robware.Api.Auth.dll"] diff --git a/build.cmd b/build.cmd new file mode 100755 index 0000000..b08cc59 --- /dev/null +++ b/build.cmd @@ -0,0 +1,7 @@ +:; set -eo pipefail +:; SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd) +:; ${SCRIPT_DIR}/build.sh "$@" +:; exit $? + +@ECHO OFF +powershell -ExecutionPolicy ByPass -NoProfile -File "%~dp0build.ps1" %* diff --git a/build.ps1 b/build.ps1 index cb7fbdb..8c52d63 100644 --- a/build.ps1 +++ b/build.ps1 @@ -4,9 +4,9 @@ Param( [string[]]$BuildArguments ) -Write-Output "Windows PowerShell $($Host.Version)" +Write-Output "PowerShell $($PSVersionTable.PSEdition) version $($PSVersionTable.PSVersion)" -Set-StrictMode -Version 2.0; $ErrorActionPreference = "Stop"; $ConfirmPreference = "None"; trap { exit 1 } +Set-StrictMode -Version 2.0; $ErrorActionPreference = "Stop"; $ConfirmPreference = "None"; trap { Write-Error $_ -ErrorAction Continue; exit 1 } $PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent ########################################################################### @@ -14,14 +14,15 @@ $PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent ########################################################################### $BuildProjectFile = "$PSScriptRoot\build\_build.csproj" -$TempDirectory = "$PSScriptRoot\\.tmp" +$TempDirectory = "$PSScriptRoot\\.nuke\temp" $DotNetGlobalFile = "$PSScriptRoot\\global.json" -$DotNetInstallUrl = "https://raw.githubusercontent.com/dotnet/cli/master/scripts/obtain/dotnet-install.ps1" +$DotNetInstallUrl = "https://dot.net/v1/dotnet-install.ps1" $DotNetChannel = "Current" $env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE = 1 $env:DOTNET_CLI_TELEMETRY_OPTOUT = 1 +$env:DOTNET_MULTILEVEL_LOOKUP = 0 ########################################################################### # EXECUTION @@ -32,37 +33,37 @@ function ExecSafe([scriptblock] $cmd) { if ($LASTEXITCODE) { exit $LASTEXITCODE } } -# If global.json exists, load expected version -if (Test-Path $DotNetGlobalFile) { - $DotNetGlobal = $(Get-Content $DotNetGlobalFile | Out-String | ConvertFrom-Json) - if ($DotNetGlobal.PSObject.Properties["sdk"] -and $DotNetGlobal.sdk.PSObject.Properties["version"]) { - $DotNetVersion = $DotNetGlobal.sdk.version - } -} - -# If dotnet is installed locally, and expected version is not set or installation matches the expected version -if ((Get-Command "dotnet" -ErrorAction SilentlyContinue) -ne $null -and ` - (!(Test-Path variable:DotNetVersion) -or $(& dotnet --version) -eq $DotNetVersion)) { +# If dotnet CLI is installed globally and it matches requested version, use for execution +if ($null -ne (Get-Command "dotnet" -ErrorAction SilentlyContinue) -and ` + $(dotnet --version) -and $LASTEXITCODE -eq 0) { $env:DOTNET_EXE = (Get-Command "dotnet").Path } else { - $DotNetDirectory = "$TempDirectory\dotnet-win" - $env:DOTNET_EXE = "$DotNetDirectory\dotnet.exe" - # Download install script $DotNetInstallFile = "$TempDirectory\dotnet-install.ps1" - md -force $TempDirectory > $null + New-Item -ItemType Directory -Path $TempDirectory -Force | Out-Null + [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 (New-Object System.Net.WebClient).DownloadFile($DotNetInstallUrl, $DotNetInstallFile) - # Install by channel or version - if (!(Test-Path variable:DotNetVersion)) { - ExecSafe { & $DotNetInstallFile -InstallDir $DotNetDirectory -Channel $DotNetChannel -NoPath } - } else { - ExecSafe { & $DotNetInstallFile -InstallDir $DotNetDirectory -Version $DotNetVersion -NoPath } + # If global.json exists, load expected version + if (Test-Path $DotNetGlobalFile) { + $DotNetGlobal = $(Get-Content $DotNetGlobalFile | Out-String | ConvertFrom-Json) + if ($DotNetGlobal.PSObject.Properties["sdk"] -and $DotNetGlobal.sdk.PSObject.Properties["version"]) { + $DotNetVersion = $DotNetGlobal.sdk.version + } } + + # Install by channel or version + $DotNetDirectory = "$TempDirectory\dotnet-win" + if (!(Test-Path variable:DotNetVersion)) { + ExecSafe { & powershell $DotNetInstallFile -InstallDir $DotNetDirectory -Channel $DotNetChannel -NoPath } + } else { + ExecSafe { & powershell $DotNetInstallFile -InstallDir $DotNetDirectory -Version $DotNetVersion -NoPath } + } + $env:DOTNET_EXE = "$DotNetDirectory\dotnet.exe" } -Write-Output "Microsoft (R) .NET Core SDK version $(& $env:DOTNET_EXE --version)" +Write-Output "Microsoft (R) .NET SDK version $(& $env:DOTNET_EXE --version)" -ExecSafe { & $env:DOTNET_EXE build $BuildProjectFile /nodeReuse:false } +ExecSafe { & $env:DOTNET_EXE build $BuildProjectFile /nodeReuse:false /p:UseSharedCompilation=false -nologo -clp:NoSummary --verbosity quiet } ExecSafe { & $env:DOTNET_EXE run --project $BuildProjectFile --no-build -- $BuildArguments } diff --git a/build.sh b/build.sh index 6d6e2ad..1f3ba09 100755 --- a/build.sh +++ b/build.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -echo $(bash --version 2>&1 | head -n 1) +bash --version 2>&1 | head -n 1 set -eo pipefail SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd) @@ -10,53 +10,53 @@ SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd) ########################################################################### BUILD_PROJECT_FILE="$SCRIPT_DIR/build/_build.csproj" -TEMP_DIRECTORY="$SCRIPT_DIR//.tmp" +TEMP_DIRECTORY="$SCRIPT_DIR//.nuke/temp" DOTNET_GLOBAL_FILE="$SCRIPT_DIR//global.json" -DOTNET_INSTALL_URL="https://raw.githubusercontent.com/dotnet/cli/master/scripts/obtain/dotnet-install.sh" +DOTNET_INSTALL_URL="https://dot.net/v1/dotnet-install.sh" DOTNET_CHANNEL="Current" export DOTNET_CLI_TELEMETRY_OPTOUT=1 export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 +export DOTNET_MULTILEVEL_LOOKUP=0 ########################################################################### # EXECUTION ########################################################################### function FirstJsonValue { - perl -nle 'print $1 if m{"'$1'": "([^"\-]+)",?}' <<< ${@:2} + perl -nle 'print $1 if m{"'"$1"'": "([^"]+)",?}' <<< "${@:2}" } -# If global.json exists, load expected version -if [ -f "$DOTNET_GLOBAL_FILE" ]; then - DOTNET_VERSION=$(FirstJsonValue "version" $(cat "$DOTNET_GLOBAL_FILE")) - if [ "$DOTNET_VERSION" == "" ]; then - unset DOTNET_VERSION - fi -fi - -# If dotnet is installed locally, and expected version is not set or installation matches the expected version -if [[ -x "$(command -v dotnet)" && (-z ${DOTNET_VERSION+x} || $(dotnet --version) == "$DOTNET_VERSION") ]]; then +# If dotnet CLI is installed globally and it matches requested version, use for execution +if [ -x "$(command -v dotnet)" ] && dotnet --version &>/dev/null; then export DOTNET_EXE="$(command -v dotnet)" else - DOTNET_DIRECTORY="$TEMP_DIRECTORY/dotnet-unix" - export DOTNET_EXE="$DOTNET_DIRECTORY/dotnet" - # Download install script DOTNET_INSTALL_FILE="$TEMP_DIRECTORY/dotnet-install.sh" mkdir -p "$TEMP_DIRECTORY" curl -Lsfo "$DOTNET_INSTALL_FILE" "$DOTNET_INSTALL_URL" chmod +x "$DOTNET_INSTALL_FILE" - + + # If global.json exists, load expected version + if [[ -f "$DOTNET_GLOBAL_FILE" ]]; then + DOTNET_VERSION=$(FirstJsonValue "version" "$(cat "$DOTNET_GLOBAL_FILE")") + if [[ "$DOTNET_VERSION" == "" ]]; then + unset DOTNET_VERSION + fi + fi + # Install by channel or version - if [ -z ${DOTNET_VERSION+x} ]; then + DOTNET_DIRECTORY="$TEMP_DIRECTORY/dotnet-unix" + if [[ -z ${DOTNET_VERSION+x} ]]; then "$DOTNET_INSTALL_FILE" --install-dir "$DOTNET_DIRECTORY" --channel "$DOTNET_CHANNEL" --no-path else "$DOTNET_INSTALL_FILE" --install-dir "$DOTNET_DIRECTORY" --version "$DOTNET_VERSION" --no-path fi + export DOTNET_EXE="$DOTNET_DIRECTORY/dotnet" fi -echo "Microsoft (R) .NET Core SDK version $("$DOTNET_EXE" --version)" +echo "Microsoft (R) .NET SDK version $("$DOTNET_EXE" --version)" -"$DOTNET_EXE" build "$BUILD_PROJECT_FILE" /nodeReuse:false +"$DOTNET_EXE" build "$BUILD_PROJECT_FILE" /nodeReuse:false /p:UseSharedCompilation=false -nologo -clp:NoSummary --verbosity quiet "$DOTNET_EXE" run --project "$BUILD_PROJECT_FILE" --no-build -- "$@" diff --git a/build/Build.cs b/build/Build.cs index 3fc7b00..08be55f 100644 --- a/build/Build.cs +++ b/build/Build.cs @@ -7,7 +7,6 @@ using Nuke.Common.Utilities.Collections; using static Nuke.Common.IO.FileSystemTasks; using static Nuke.Common.Tools.DotNet.DotNetTasks; -[CheckBuildProjectConfigurations] [UnsetVisualStudioEnvironmentVariables] class Build : NukeBuild { diff --git a/build/Configuration.cs b/build/Configuration.cs new file mode 100644 index 0000000..9c08b1a --- /dev/null +++ b/build/Configuration.cs @@ -0,0 +1,16 @@ +using System; +using System.ComponentModel; +using System.Linq; +using Nuke.Common.Tooling; + +[TypeConverter(typeof(TypeConverter))] +public class Configuration : Enumeration +{ + public static Configuration Debug = new Configuration { Value = nameof(Debug) }; + public static Configuration Release = new Configuration { Value = nameof(Release) }; + + public static implicit operator string(Configuration configuration) + { + return configuration.Value; + } +} diff --git a/build/_build.csproj b/build/_build.csproj index 3bc05f7..b801670 100644 --- a/build/_build.csproj +++ b/build/_build.csproj @@ -2,33 +2,23 @@ Exe - netcoreapp3.1 + net7.0 false False CS0649;CS0169 + 1 - + - - - - - - - - - - - diff --git a/src/Robware.Api.Auth.Tests/Robware.Api.Auth.Tests.csproj b/src/Robware.Api.Auth.Tests/Robware.Api.Auth.Tests.csproj index a2e56d7..3ce1b6b 100644 --- a/src/Robware.Api.Auth.Tests/Robware.Api.Auth.Tests.csproj +++ b/src/Robware.Api.Auth.Tests/Robware.Api.Auth.Tests.csproj @@ -1,18 +1,18 @@ - netcoreapp3.1 + net7.0 false - - - - - - + + + + + + diff --git a/src/Robware.Api.Auth/Robware.Api.Auth.csproj b/src/Robware.Api.Auth/Robware.Api.Auth.csproj index dfbe54b..4960ffc 100644 --- a/src/Robware.Api.Auth/Robware.Api.Auth.csproj +++ b/src/Robware.Api.Auth/Robware.Api.Auth.csproj @@ -1,7 +1,7 @@ - netcoreapp3.1 + net7.0 @@ -10,7 +10,7 @@ - + diff --git a/src/Robware.Auth.Tests/Robware.Auth.Tests.csproj b/src/Robware.Auth.Tests/Robware.Auth.Tests.csproj index 3986329..a4274fb 100644 --- a/src/Robware.Auth.Tests/Robware.Auth.Tests.csproj +++ b/src/Robware.Auth.Tests/Robware.Auth.Tests.csproj @@ -1,18 +1,18 @@ - netcoreapp3.1 + net7.0 false - - - - - - + + + + + + diff --git a/src/Robware.Auth/Robware.Auth.csproj b/src/Robware.Auth/Robware.Auth.csproj index cb63190..8268829 100644 --- a/src/Robware.Auth/Robware.Auth.csproj +++ b/src/Robware.Auth/Robware.Auth.csproj @@ -1,7 +1,7 @@ - netcoreapp3.1 + net7.0 diff --git a/src/Robware.Data/Robware.Data.csproj b/src/Robware.Data/Robware.Data.csproj index 9cfdad2..638526c 100644 --- a/src/Robware.Data/Robware.Data.csproj +++ b/src/Robware.Data/Robware.Data.csproj @@ -1,15 +1,15 @@ - netcoreapp3.1 + net7.0 - - + + - - + +