Update all the things

This commit is contained in:
Robert Marshall 2023-02-18 13:47:09 +00:00
parent 09cdc84367
commit 09e545ec3e
18 changed files with 379 additions and 87 deletions

1
.nuke
View file

@ -1 +0,0 @@
src/Robware.Api.Auth.sln

114
.nuke/build.schema.json Normal file
View file

@ -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"
]
}
}
}
}
}

4
.nuke/parameters.json Normal file
View file

@ -0,0 +1,4 @@
{
"$schema": "./build.schema.json",
"Solution": "src/Robware.Api.Auth.sln"
}

View file

@ -0,0 +1,5 @@
5955c86dedd1297c5beb35cdbb991e55
Restore
Compile
Test
Publish

View file

@ -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)

79
.nuke/temp/build.log Normal file
View file

@ -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)

View file

@ -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/<DatabaseConnectionString>/${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"]

7
build.cmd Executable file
View file

@ -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" %*

View file

@ -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 }

View file

@ -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 -- "$@"

View file

@ -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 {

16
build/Configuration.cs Normal file
View file

@ -0,0 +1,16 @@
using System;
using System.ComponentModel;
using System.Linq;
using Nuke.Common.Tooling;
[TypeConverter(typeof(TypeConverter<Configuration>))]
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;
}
}

View file

@ -2,33 +2,23 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net7.0</TargetFramework>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<RootNamespace></RootNamespace>
<IsPackable>False</IsPackable>
<NoWarn>CS0649;CS0169</NoWarn>
<NukeTelemetryVersion>1</NukeTelemetryVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Nuke.Common" Version="0.24.8" />
<PackageReference Include="Nuke.Common" Version="6.3.0" />
</ItemGroup>
<ItemGroup>
<NukeSpecificationFiles Include="**\*.json" Exclude="bin\**;obj\**" />
<NukeExternalFiles Include="**\*.*.ext" Exclude="bin\**;obj\**" />
<None Remove="*.csproj.DotSettings;*.ref.*.txt" />
<!-- Common build related files -->
<None Include="..\build.ps1" />
<None Include="..\build.sh" />
<None Include="..\.nuke" />
<None Include="..\global.json" Condition="Exists('..\global.json')" />
<None Include="..\nuget.config" Condition="Exists('..\nuget.config')" />
<None Include="..\azure-pipelines.yml" Condition="Exists('..\azure-pipelines.yml')" />
<None Include="..\Jenkinsfile" Condition="Exists('..\Jenkinsfile')" />
<None Include="..\appveyor.yml" Condition="Exists('..\appveyor.yml')" />
<None Include="..\.travis.yml" Condition="Exists('..\.travis.yml')" />
<None Include="..\GitVersion.yml" Condition="Exists('..\GitVersion.yml')" />
</ItemGroup>
</Project>

View file

@ -1,18 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net7.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="FluentAssertions" Version="5.10.3" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.2.0" />
<PackageReference Include="NSubstitute" Version="4.2.1" />
<PackageReference Include="xunit" Version="2.4.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
<PackageReference Include="coverlet.collector" Version="1.0.1" />
<PackageReference Include="FluentAssertions" Version="6.10.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.4.1" />
<PackageReference Include="NSubstitute" Version="5.0.0" />
<PackageReference Include="xunit" Version="2.4.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5" />
<PackageReference Include="coverlet.collector" Version="3.2.0" />
</ItemGroup>
<ItemGroup>

View file

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net7.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
@ -10,7 +10,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="MongoDB.Driver" Version="2.10.4" />
<PackageReference Include="MongoDB.Driver" Version="2.19.0" />
</ItemGroup>

View file

@ -1,18 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net7.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="FluentAssertions" Version="5.10.3" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.2.0" />
<PackageReference Include="NSubstitute" Version="4.2.1" />
<PackageReference Include="xunit" Version="2.4.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
<PackageReference Include="coverlet.collector" Version="1.0.1" />
<PackageReference Include="FluentAssertions" Version="6.10.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.4.1" />
<PackageReference Include="NSubstitute" Version="5.0.0" />
<PackageReference Include="xunit" Version="2.4.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5" />
<PackageReference Include="coverlet.collector" Version="3.2.0" />
</ItemGroup>
<ItemGroup>

View file

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net7.0</TargetFramework>
</PropertyGroup>
</Project>

View file

@ -1,15 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net7.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MongoDB.Driver" Version="2.10.4" />
<ItemGroup>
<PackageReference Include="MongoDB.Driver" Version="2.19.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Robware.Auth\Robware.Auth.csproj" />
<ItemGroup>
<ProjectReference Include="..\Robware.Auth\Robware.Auth.csproj" />
</ItemGroup>
</Project>