diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b339a45c43a1dcb4b80ab99e6224bc7232abd723..690e1a1b5ff98301e8ddd862fdbcb37b0aead23e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,55 +1,33 @@ +include: + - project: coscine/tools/gitlab-ci-templates + file: + - /dotnet.yml + stages: + - build - test - - release - - releasetrigger - -cake:Test: - stage: test - script: - - PowerShell .\build.ps1 -Target Test -Configuration Debug - variables: - GIT_STRATEGY: clone - artifacts: - reports: - junit: "./Artifacts/TestResults.xml" - paths: - - "./Artifacts/*" - except: - - master - - tags - -cake:Release: - stage: release - script: - - PowerShell .\build.ps1 -Target Release -Configuration Release --nugetApiKey="${NUGET_API_KEY}" - variables: - GIT_STRATEGY: clone - dependencies: - - cake:Test - artifacts: - paths: - - "./Artifacts/*" - only: - - tags - -cake:Prerelease: - stage: release - script: - - PowerShell .\build.ps1 -Target Prerelease -Configuration Release - variables: - GIT_STRATEGY: clone - dependencies: - - cake:Test - artifacts: - paths: - - "./Artifacts/*" - except: - - tags - - master - -cake:GitlabRelease: - stage: releasetrigger - script: - - PowerShell .\build.ps1 -Target GitlabRelease --GitlabProjectPath="${CI_PROJECT_PATH}" --gitlabProjectId="${CI_PROJECT_ID}" --gitlabToken="${GITLAB_TOKEN}" - only: - - master \ No newline at end of file + - publish + +variables: + DOTNET_MAIN_PROJECT_FOLDER: ECSManager + +build-branch: + extends: .build-branch + +build-nuget-release: + extends: .build-nuget-release + +test: + extends: .test + +publish-branch-prerelease: + extends: .publish-branch-prerelease + +publish-gitlab-release: + extends: .publish-gitlab-release + +publish-master-release: + extends: .publish-master-release + +publish-nuget-release: + extends: .publish-nuget-release diff --git a/LICENSE b/LICENSE index b8cd48a4db77aeee8a31fbec89cd7c8c4fb0b5ff..b2b571a29a4e6a417fc7c74b7ab46bc0cc9f1897 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2020 RWTH Aachen University +Copyright (c) 2021 RWTH Aachen University Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/build.cake b/build.cake deleted file mode 100644 index 81648ff61bbee492e1bc7b4390eb8e0cc33d3056..0000000000000000000000000000000000000000 --- a/build.cake +++ /dev/null @@ -1,351 +0,0 @@ -#tool nuget:?package=NUnit.ConsoleRunner&version=3.10.0 -#tool nuget:?package=vswhere&version=2.8.4 -#tool nuget:?package=GitVersion.CommandLine&version=5.1.3 - -#addin nuget:https://api.nuget.org/v3/index.json?package=Cake.Json&version=4.0.0 -#addin nuget:https://api.nuget.org/v3/index.json?package=Newtonsoft.Json&version=11.0.2 -#addin nuget:https://api.nuget.org/v3/index.json?package=Cake.FileHelpers&version=3.2.1 - -using System.Net; -using System.Net.Http; - -// Commandline arguments -var target = Argument("target", "Default"); -var configuration = Argument("configuration", "Release"); -var nugetApiKey = Argument<string>("nugetApiKey", null); -var version = Argument("nugetVersion", ""); -var gitlabProjectPath = Argument("gitlabProjectPath", ""); -var gitlabProjectId = Argument("gitlabProjectId", ""); -var gitlabToken = Argument("gitlabToken", ""); - -// Define directories -var projects = GetFiles("./**/*.csproj"); -var artifactsDir = Directory("./Artifacts"); -string nupkgDir; -var solutionFile = GetFiles("./**/*.sln").First(); -var projectName = solutionFile.GetFilenameWithoutExtension().ToString(); -var nugetSource = "https://api.nuget.org/v3/index.json"; -var assemblyInfoSubPath = "Properties/AssemblyInfo.cs"; -var semanticVersion = ""; -string localNugetFeed; - -// get latest MSBuild version -var vsLatest = VSWhereLatest(); -var msBuildPathX64 = (vsLatest == null) ? null : vsLatest.CombineWithFilePath("./MSBuild/Current/Bin/MSBuild.exe"); - -Setup(context =>{ - nupkgDir = $"{artifactsDir.ToString()}/nupkg"; - var branch = GitVersion(new GitVersionSettings { - UpdateAssemblyInfo = false - }).BranchName.Replace("/", "-"); - - localNugetFeed = $"C:\\coscine\\LocalNugetFeeds\\{branch}"; - Information("{0}", branch); - Information("Started at {0}", DateTime.Now); -}); - -Teardown(context =>{ - Information("Finished at {0}", DateTime.Now); -}); - -Task("Clean") -.Description("Cleans all build and artifacts directories") -.Does(() =>{ - var settings = new DeleteDirectorySettings { - Recursive = true, - Force = true - }; - - var directoriesToClean = new List<DirectoryPath>(); - - foreach(var project in projects) { - directoriesToClean.Add(Directory($"{project.GetDirectory()}/obj")); - directoriesToClean.Add(Directory($"{project.GetDirectory()}/bin")); - } - - directoriesToClean.Add(artifactsDir); - - foreach(var dir in directoriesToClean) { - Information("Cleaning {0}", dir.ToString()); - if (DirectoryExists(dir)) { - DeleteDirectory(dir, settings); - CreateDirectory(dir); - } else { - CreateDirectory(dir); - } - } -}); - -Task("Restore") -.Does(() =>{ - NuGetRestore(solutionFile, new NuGetRestoreSettings { - NoCache = true, - FallbackSource = new List<string>{ localNugetFeed }, - }); -}); - -Task("Test") -.IsDependentOn("Build") -.Does(() =>{ - NUnit3($"./src/**/bin/{configuration}/*.Tests.dll", new NUnit3Settings { - // generate the xml file - NoResults = false, - Results = new NUnit3Result[] { - new NUnit3Result() { - FileName = $"{artifactsDir}/TestResults.xml", - Transform = $"{Context.Environment.WorkingDirectory}/nunit3-junit.xslt" - } - } - }); -}); - -Task("GitVersion") -.Does(() => { - if(string.IsNullOrWhiteSpace(version)) { - version = GitVersion(new GitVersionSettings { - UpdateAssemblyInfo = false - }).NuGetVersionV2; - } - var index = version.IndexOf("-"); - semanticVersion = index > 0 ? version.Substring(0, index) : version; - Information("Version: {0}, SemanticVersion: {1}", version, semanticVersion); -}); - -Task("UpdateAssemblyInfo") -.Does(() =>{ - var index = version.IndexOf("-"); - var semanticVersion = index > 0 ? version.Substring(0, index) : version; - - foreach(var project in projects) { - CreateAssemblyInfo($"{project.GetDirectory()}/{assemblyInfoSubPath}", new AssemblyInfoSettings { - Product = project.GetFilenameWithoutExtension().ToString(), - Title = project.GetFilenameWithoutExtension().ToString(), - Company = "IT Center, RWTH Aachen University", - Version = semanticVersion, - FileVersion = semanticVersion, - InformationalVersion = version, - Copyright = $"{DateTime.Now.Year} IT Center, RWTH Aachen University", - Description = $"{project.GetFilenameWithoutExtension().ToString()} is a part of the CoScInE group." - }); - } -}); - -Task("GitlabRelease") -.IsDependentOn("GitVersion") -.Does(() => { - var client = new HttpClient(); - client.DefaultRequestHeaders.Add("PRIVATE-TOKEN", gitlabToken); - - // get the latest tag - var result = client.GetAsync($"https://git.rwth-aachen.de/api/v4/projects/{gitlabProjectId}/repository/tags").Result; - if(!result.IsSuccessStatusCode) { - throw new Exception("Tag query failed."); - } - - var tagList = result.Content.ReadAsStringAsync().Result; - var jArray = JArray.Parse(tagList); - // null if not tags exists yet - var lastTag = jArray.Select(x => x["name"]).FirstOrDefault(); - - var url = $"https://git.rwth-aachen.de/{gitlabProjectPath}"; - - if(url.EndsWith(".git")) { - url = url.Substring(0, url.Length - ".git".Length); - } - - if(url.EndsWith("/")) { - url = url.Substring(0, url.Length - 1); - } - - var description = ""; - // First line of description - // Gitlab compare url, if something can be compared - if(lastTag == null) { - description = $"# {semanticVersion} ({DateTime.Now.Year}-{DateTime.Now.Month}-{DateTime.Now.Day})\n\n\n"; - } else { - description = $"# [{semanticVersion}]({url}/compare/{lastTag}...v{semanticVersion}) ({DateTime.Now.Year}-{DateTime.Now.Month}-{DateTime.Now.Day})\n\n\n"; - } - - // From when will messages be parsed, null results in all messages - var logParam = ""; - if(lastTag != null) { - logParam = $"{lastTag}..Head"; - } - - Information(lastTag); - - IEnumerable<string> redirectedStandardOutput; - var exitCodeWithArgument = - StartProcess( - "git", - new ProcessSettings { - Arguments = $"log {logParam} --pretty=format:HASH%h:%B", - RedirectStandardOutput = true - }, - out redirectedStandardOutput - ); - - var prefixList = new Dictionary<string, List<string>>{ - {"Fix", new List<string>()}, - {"Update", new List<string>()}, - {"New", new List<string>()}, - {"Breaking", new List<string>()}, - {"Docs", new List<string>()}, - {"Build", new List<string>()}, - {"Upgrade", new List<string>()}, - {"Chore", new List<string>()}, - }; - - var currentHash = ""; - // Output last line of process output. - foreach(var line in redirectedStandardOutput) { - var commitMessage = ""; - if(line.StartsWith("HASH")) { - currentHash = line.Substring("HASH".Length); - currentHash = currentHash.Substring(0, currentHash.IndexOf(":")); - commitMessage = line.Substring(currentHash.Length + line.IndexOf(currentHash) + 1); - } else { - commitMessage = line; - } - - foreach(var kv in prefixList) { - if(commitMessage.StartsWith($"{kv.Key}:")) { - kv.Value.Add($"* {commitMessage.Substring(kv.Key.Length + 1).Trim()} {currentHash}"); - break; - } - }; - } - - foreach(var kv in prefixList) { - if(kv.Value.Any()) { - description += $" ### {kv.Key}\n\n"; - foreach(var line in kv.Value) { - description += $"{line}\n"; - } - description += "\n"; - } - } - // correctly escape the json newlines - description = description.Replace("\n", "\\n"); - Information("Description: {0}", description); - - // create tag - result = client.PostAsync($"https://git.rwth-aachen.de/api/v4/projects/{gitlabProjectId}/repository/tags?tag_name=v{semanticVersion}&ref=master", null).Result; - Information("Create tag: {0}", result.Content.ReadAsStringAsync().Result); - if(!result.IsSuccessStatusCode) { - throw new Exception("Tag creation failed."); - } - - // create release - var json = $"{{\"name\": \"v{semanticVersion}\", \"tag_name\": \"v{semanticVersion}\", \"description\": \"{description}\"}}"; - var content = new StringContent(json, Encoding.UTF8, "application/json"); - result = client.PostAsync($"https://git.rwth-aachen.de/api/v4/projects/{gitlabProjectId}/releases", content).Result; - Information("Create release: {0}", result.Content.ReadAsStringAsync().Result); - if(!result.IsSuccessStatusCode) { - throw new Exception("Release creation failed."); - } -}); - -Task("Build") -.IsDependentOn("Clean") -.IsDependentOn("GitVersion") -.IsDependentOn("UpdateAssemblyInfo") -.IsDependentOn("Restore") -.Does(() =>{ - var frameworkSettingsWindows = new MSBuildSettings { - Configuration = configuration - }; - - frameworkSettingsWindows.ToolPath = msBuildPathX64; - frameworkSettingsWindows.WorkingDirectory = Context.Environment.WorkingDirectory; - - if (configuration.Equals("Release")) { - frameworkSettingsWindows.WithProperty("DebugSymbols", "false"); - frameworkSettingsWindows.WithProperty("DebugType", "None"); - } - - // Use MSBuild - Information("Building {0}", solutionFile); - MSBuild(solutionFile, frameworkSettingsWindows); -}); - -Task("NugetPack") -.IsDependentOn("Build") -.Does(() =>{ - foreach(var project in projects) { - var nuspec = $"{project.GetDirectory()}/{project.GetFilenameWithoutExtension()}.nuspec"; - if(!project.ToString().EndsWith(".Tests") && FileExists(nuspec)) - { - var settings = new NuGetPackSettings - { - OutputDirectory = nupkgDir, - Version = version, - Properties = new Dictionary<string, string> - { - { "Configuration", configuration} - } - }; - NuGetPack(project.ToString(), settings); - } - } -}); - -Task("NugetPush") -.IsDependentOn("NugetPack") -.Does(() =>{ - var nupkgs = GetFiles($"{nupkgDir}/*.nupkg"); - Information("Need to push {0} packages", nupkgs.Count); - if(!String.IsNullOrWhiteSpace(nugetApiKey)) { - foreach(var nupkg in nupkgs) { - Information("Pushing {0}", nupkg); - NuGetPush(nupkg, new NuGetPushSettings { - Source = nugetSource, - ApiKey = nugetApiKey - }); - } - } else { - Information("NugetApiKey is not set. Can't push."); - throw new Exception("NugetApiKey is not set. Can't push."); - } -}); - -Task("CopyToArtifacts") -.Does(() =>{ - foreach(var project in projects) { - if(!project.GetDirectory().ToString().EndsWith(".Tests") - && !FileExists($"{project.GetDirectory()}/{project.GetFilenameWithoutExtension()}.nuspec") - && DirectoryExists(project.GetDirectory())) - { - Information("Copying {0}/* to {1}", $"{project.GetDirectory()}/bin/{configuration}", artifactsDir); - CopyDirectory($"{project.GetDirectory()}/bin/{configuration}/", artifactsDir); - } - } -}); - -Task("NugetPushLocal") -.IsDependentOn("NugetPack") -.Does(() =>{ - var nupkgs = GetFiles($"{nupkgDir}/*.nupkg"); - foreach(var nupkg in nupkgs) { - if(!DirectoryExists(localNugetFeed)) { - CreateDirectory(localNugetFeed); - } - CopyFile(nupkg.ToString(), $"{localNugetFeed}\\{nupkg.GetFilename()}"); - } -}); - -Task("Prerelease") -.IsDependentOn("Build") -.IsDependentOn("CopyToArtifacts") -.IsDependentOn("NugetPushLocal"); - -Task("Release") -.IsDependentOn("NugetPack") -.IsDependentOn("CopyToArtifacts") -.IsDependentOn("NugetPushLocal") -.IsDependentOn("NugetPush"); - -Task("Default") -.IsDependentOn("Test"); - -RunTarget(target); diff --git a/build.ps1 b/build.ps1 deleted file mode 100644 index f83382e8e4092ba6cf32a47f9dfa4e211c878430..0000000000000000000000000000000000000000 --- a/build.ps1 +++ /dev/null @@ -1,255 +0,0 @@ -#The MIT License (MIT) -# -#Copyright (c) 2014 - 2016 Patrik Svensson, Mattias Karlsson, Gary Ewan Park and contributors -# -#Permission is hereby granted, free of charge, to any person obtaining a copy of -#this software and associated documentation files (the "Software"), to deal in -#the Software without restriction, including without limitation the rights to -#use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -#the Software, and to permit persons to whom the Software is furnished to do so, -#subject to the following conditions: -# -#The above copyright notice and this permission notice shall be included in all -#copies or substantial portions of the Software. -# -#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -#FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -#COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -#IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -#CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -########################################################################## -# This is the Cake bootstrapper script for PowerShell. -# This file was downloaded from https://github.com/cake-build/resources -# Feel free to change this file to fit your needs. -########################################################################## - -<# - -.SYNOPSIS -This is a Powershell script to bootstrap a Cake build. - -.DESCRIPTION -This Powershell script will download NuGet if missing, restore NuGet tools (including Cake) -and execute your Cake build script with the parameters you provide. - -.PARAMETER Script -The build script to execute. -.PARAMETER Target -The build script target to run. -.PARAMETER Configuration -The build configuration to use. -.PARAMETER Verbosity -Specifies the amount of information to be displayed. -.PARAMETER ShowDescription -Shows description about tasks. -.PARAMETER DryRun -Performs a dry run. -.PARAMETER Experimental -Uses the nightly builds of the Roslyn script engine. -.PARAMETER Mono -Uses the Mono Compiler rather than the Roslyn script engine. -.PARAMETER SkipToolPackageRestore -Skips restoring of packages. -.PARAMETER ScriptArgs -Remaining arguments are added here. - -.LINK -https://cakebuild.net - -#> - -[CmdletBinding()] -Param( - [string]$Script = "build.cake", - [string]$Target, - [string]$Configuration, - [ValidateSet("Quiet", "Minimal", "Normal", "Verbose", "Diagnostic")] - [string]$Verbosity, - [switch]$ShowDescription, - [Alias("WhatIf", "Noop")] - [switch]$DryRun, - [switch]$Experimental, - [switch]$Mono, - [switch]$SkipToolPackageRestore, - [Parameter(Position=0,Mandatory=$false,ValueFromRemainingArguments=$true)] - [string[]]$ScriptArgs -) - -[Reflection.Assembly]::LoadWithPartialName("System.Security") | Out-Null -function MD5HashFile([string] $filePath) -{ - if ([string]::IsNullOrEmpty($filePath) -or !(Test-Path $filePath -PathType Leaf)) - { - return $null - } - - [System.IO.Stream] $file = $null; - [System.Security.Cryptography.MD5] $md5 = $null; - try - { - $md5 = [System.Security.Cryptography.MD5]::Create() - $file = [System.IO.File]::OpenRead($filePath) - return [System.BitConverter]::ToString($md5.ComputeHash($file)) - } - finally - { - if ($file -ne $null) - { - $file.Dispose() - } - } -} - -function GetProxyEnabledWebClient -{ - $wc = New-Object System.Net.WebClient - $proxy = [System.Net.WebRequest]::GetSystemWebProxy() - $proxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials - $wc.Proxy = $proxy - return $wc -} - -Write-Host "Preparing to run build script..." - -if(!$PSScriptRoot){ - $PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent -} - -$TOOLS_DIR = Join-Path $PSScriptRoot "tools" -$ADDINS_DIR = Join-Path $TOOLS_DIR "Addins" -$MODULES_DIR = Join-Path $TOOLS_DIR "Modules" -$NUGET_EXE = Join-Path $TOOLS_DIR "nuget.exe" -$CAKE_EXE = Join-Path $TOOLS_DIR "Cake/Cake.exe" -$NUGET_URL = "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe" -$PACKAGES_CONFIG = Join-Path $TOOLS_DIR "packages.config" -$PACKAGES_CONFIG_MD5 = Join-Path $TOOLS_DIR "packages.config.md5sum" -$ADDINS_PACKAGES_CONFIG = Join-Path $ADDINS_DIR "packages.config" -$MODULES_PACKAGES_CONFIG = Join-Path $MODULES_DIR "packages.config" - -# Make sure tools folder exists -if ((Test-Path $PSScriptRoot) -and !(Test-Path $TOOLS_DIR)) { - Write-Verbose -Message "Creating tools directory..." - New-Item -Path $TOOLS_DIR -Type directory | out-null -} - -# Make sure that packages.config exist. -if (!(Test-Path $PACKAGES_CONFIG)) { - Write-Verbose -Message "Downloading packages.config..." - try { - $wc = GetProxyEnabledWebClient - $wc.DownloadFile("https://cakebuild.net/download/bootstrapper/packages", $PACKAGES_CONFIG) } catch { - Throw "Could not download packages.config." - } -} - -# Try find NuGet.exe in path if not exists -if (!(Test-Path $NUGET_EXE)) { - Write-Verbose -Message "Trying to find nuget.exe in PATH..." - $existingPaths = $Env:Path -Split ';' | Where-Object { (![string]::IsNullOrEmpty($_)) -and (Test-Path $_ -PathType Container) } - $NUGET_EXE_IN_PATH = Get-ChildItem -Path $existingPaths -Filter "nuget.exe" | Select -First 1 - if ($NUGET_EXE_IN_PATH -ne $null -and (Test-Path $NUGET_EXE_IN_PATH.FullName)) { - Write-Verbose -Message "Found in PATH at $($NUGET_EXE_IN_PATH.FullName)." - $NUGET_EXE = $NUGET_EXE_IN_PATH.FullName - } -} - -# Try download NuGet.exe if not exists -if (!(Test-Path $NUGET_EXE)) { - Write-Verbose -Message "Downloading NuGet.exe..." - try { - $wc = GetProxyEnabledWebClient - $wc.DownloadFile($NUGET_URL, $NUGET_EXE) - } catch { - Throw "Could not download NuGet.exe." - } -} - -# Save nuget.exe path to environment to be available to child processed -$ENV:NUGET_EXE = $NUGET_EXE - -# Restore tools from NuGet? -if(-Not $SkipToolPackageRestore.IsPresent) { - Push-Location - Set-Location $TOOLS_DIR - - # Check for changes in packages.config and remove installed tools if true. - [string] $md5Hash = MD5HashFile($PACKAGES_CONFIG) - if((!(Test-Path $PACKAGES_CONFIG_MD5)) -Or - ($md5Hash -ne (Get-Content $PACKAGES_CONFIG_MD5 ))) { - Write-Verbose -Message "Missing or changed package.config hash..." - Remove-Item * -Recurse -Exclude packages.config,nuget.exe - } - - Write-Verbose -Message "Restoring tools from NuGet..." - $NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -OutputDirectory `"$TOOLS_DIR`"" - - if ($LASTEXITCODE -ne 0) { - Throw "An error occurred while restoring NuGet tools." - } - else - { - $md5Hash | Out-File $PACKAGES_CONFIG_MD5 -Encoding "ASCII" - } - Write-Verbose -Message ($NuGetOutput | out-string) - - Pop-Location -} - -# Restore addins from NuGet -if (Test-Path $ADDINS_PACKAGES_CONFIG) { - Push-Location - Set-Location $ADDINS_DIR - - Write-Verbose -Message "Restoring addins from NuGet..." - $NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -OutputDirectory `"$ADDINS_DIR`"" - - if ($LASTEXITCODE -ne 0) { - Throw "An error occurred while restoring NuGet addins." - } - - Write-Verbose -Message ($NuGetOutput | out-string) - - Pop-Location -} - -# Restore modules from NuGet -if (Test-Path $MODULES_PACKAGES_CONFIG) { - Push-Location - Set-Location $MODULES_DIR - - Write-Verbose -Message "Restoring modules from NuGet..." - $NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -OutputDirectory `"$MODULES_DIR`"" - - if ($LASTEXITCODE -ne 0) { - Throw "An error occurred while restoring NuGet modules." - } - - Write-Verbose -Message ($NuGetOutput | out-string) - - Pop-Location -} - -# Make sure that Cake has been installed. -if (!(Test-Path $CAKE_EXE)) { - Throw "Could not find Cake.exe at $CAKE_EXE" -} - - - -# Build Cake arguments -$cakeArguments = @("$Script"); -if ($Target) { $cakeArguments += "-target=$Target" } -if ($Configuration) { $cakeArguments += "-configuration=$Configuration" } -if ($Verbosity) { $cakeArguments += "-verbosity=$Verbosity" } -if ($ShowDescription) { $cakeArguments += "-showdescription" } -if ($DryRun) { $cakeArguments += "-dryrun" } -if ($Experimental) { $cakeArguments += "-experimental" } -if ($Mono) { $cakeArguments += "-mono" } -$cakeArguments += $ScriptArgs - -# Start Cake -Write-Host "Running build script..." -&$CAKE_EXE $cakeArguments -exit $LASTEXITCODE diff --git a/build.sh b/build.sh deleted file mode 100644 index d088917ed78538ff57cf654cf71aad6bf045d655..0000000000000000000000000000000000000000 --- a/build.sh +++ /dev/null @@ -1,122 +0,0 @@ -#!/usr/bin/env bash - -#The MIT License (MIT) -# -#Copyright (c) 2014 - 2016 Patrik Svensson, Mattias Karlsson, Gary Ewan Park and contributors -# -#Permission is hereby granted, free of charge, to any person obtaining a copy of -#this software and associated documentation files (the "Software"), to deal in -#the Software without restriction, including without limitation the rights to -#use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -#the Software, and to permit persons to whom the Software is furnished to do so, -#subject to the following conditions: -# -#The above copyright notice and this permission notice shall be included in all -#copies or substantial portions of the Software. -# -#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -#FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -#COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -#IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -#CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -########################################################################## -# This is the Cake bootstrapper script for Linux and OS X. -# This file was downloaded from https://github.com/cake-build/resources -# Feel free to change this file to fit your needs. -########################################################################## - -# Define directories. -SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) -TOOLS_DIR=$SCRIPT_DIR/tools -NUGET_EXE=$TOOLS_DIR/nuget.exe -CAKE_EXE=$TOOLS_DIR/Cake/Cake.exe -PACKAGES_CONFIG=$TOOLS_DIR/packages.config -PACKAGES_CONFIG_MD5=$TOOLS_DIR/packages.config.md5sum - -# Define md5sum or md5 depending on Linux/OSX -MD5_EXE= -if [[ "$(uname -s)" == "Darwin" ]]; then - MD5_EXE="md5 -r" -else - MD5_EXE="md5sum" -fi - -# Define default arguments. -SCRIPT="build.cake" -TARGET="Default" -CONFIGURATION="Release" -VERBOSITY="verbose" -DRYRUN= -SHOW_VERSION=false -SCRIPT_ARGUMENTS=() - -# Parse arguments. -for i in "$@"; do - case $1 in - -s|--script) SCRIPT="$2"; shift ;; - -t|--target) TARGET="$2"; shift ;; - -c|--configuration) CONFIGURATION="$2"; shift ;; - -v|--verbosity) VERBOSITY="$2"; shift ;; - -d|--dryrun) DRYRUN="-dryrun" ;; - --version) SHOW_VERSION=true ;; - --) shift; SCRIPT_ARGUMENTS+=("$@"); break ;; - *) SCRIPT_ARGUMENTS+=("$1") ;; - esac - shift -done - -# Make sure the tools folder exist. -if [ ! -d "$TOOLS_DIR" ]; then - mkdir "$TOOLS_DIR" -fi - -# Make sure that packages.config exist. -if [ ! -f "$TOOLS_DIR/packages.config" ]; then - echo "Downloading packages.config..." - curl -Lsfo "$TOOLS_DIR/packages.config" https://cakebuild.net/download/bootstrapper/packages - if [ $? -ne 0 ]; then - echo "An error occurred while downloading packages.config." - exit 1 - fi -fi - -# Download NuGet if it does not exist. -if [ ! -f "$NUGET_EXE" ]; then - echo "Downloading NuGet..." - curl -Lsfo "$NUGET_EXE" https://dist.nuget.org/win-x86-commandline/latest/nuget.exe - if [ $? -ne 0 ]; then - echo "An error occurred while downloading nuget.exe." - exit 1 - fi -fi - -# Restore tools from NuGet. -pushd "$TOOLS_DIR" >/dev/null -if [ ! -f $PACKAGES_CONFIG_MD5 ] || [ "$( cat $PACKAGES_CONFIG_MD5 | sed 's/\r$//' )" != "$( $MD5_EXE $PACKAGES_CONFIG | awk '{ print $1 }' )" ]; then - find . -type d ! -name . | xargs rm -rf -fi - -mono "$NUGET_EXE" install -ExcludeVersion -if [ $? -ne 0 ]; then - echo "Could not restore NuGet packages." - exit 1 -fi - -$MD5_EXE $PACKAGES_CONFIG | awk '{ print $1 }' >| $PACKAGES_CONFIG_MD5 - -popd >/dev/null - -# Make sure that Cake has been installed. -if [ ! -f "$CAKE_EXE" ]; then - echo "Could not find Cake.exe at '$CAKE_EXE'." - exit 1 -fi - -# Start Cake -if $SHOW_VERSION; then - exec mono "$CAKE_EXE" -version -else - exec mono "$CAKE_EXE" $SCRIPT -verbosity=$VERBOSITY -configuration=$CONFIGURATION -target=$TARGET $DRYRUN "${SCRIPT_ARGUMENTS[@]}" -fi \ No newline at end of file diff --git a/src/ECSManager.Tests/EcsManager.Tests.csproj b/src/ECSManager.Tests/EcsManager.Tests.csproj index 0c7af6c5f74a86b4f0989bf038752dd7674ddebb..1f4e67956f250fcbfd212cf51ad4b5c40a98300d 100644 --- a/src/ECSManager.Tests/EcsManager.Tests.csproj +++ b/src/ECSManager.Tests/EcsManager.Tests.csproj @@ -1,79 +1,18 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <Import Project="..\packages\NUnit3TestAdapter.3.17.0\build\net35\NUnit3TestAdapter.props" Condition="Exists('..\packages\NUnit3TestAdapter.3.17.0\build\net35\NUnit3TestAdapter.props')" /> - <Import Project="..\packages\NUnit.3.12.0\build\NUnit.props" Condition="Exists('..\packages\NUnit.3.12.0\build\NUnit.props')" /> - <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> - <PropertyGroup> - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProjectGuid>{680BC188-42CC-4C00-BFFF-C7C59F612444}</ProjectGuid> - <OutputType>Library</OutputType> - <AppDesignerFolder>Properties</AppDesignerFolder> - <RootNamespace>Coscine.ECSManager.Tests</RootNamespace> - <AssemblyName>Coscine.ECSManager.Tests</AssemblyName> - <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> - <FileAlignment>512</FileAlignment> - <Deterministic>true</Deterministic> - <NuGetPackageImportStamp> - </NuGetPackageImportStamp> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> - <DebugSymbols>true</DebugSymbols> - <DebugType>full</DebugType> - <Optimize>false</Optimize> - <OutputPath>bin\Debug\</OutputPath> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <DebugType>pdbonly</DebugType> - <Optimize>true</Optimize> - <OutputPath>bin\Release\</OutputPath> - <DefineConstants>TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <ItemGroup> - <Reference Include="Consul, Version=0.7.2.6, Culture=neutral, PublicKeyToken=20a6ad9a81df1d95, processorArchitecture=MSIL"> - <HintPath>..\packages\Consul.0.7.2.6\lib\net45\Consul.dll</HintPath> - </Reference> - <Reference Include="Coscine.Configuration, Version=1.5.0.0, Culture=neutral, PublicKeyToken=ce3d7a32d7dc1e5a, processorArchitecture=MSIL"> - <HintPath>..\packages\Coscine.Configuration.1.5.0\lib\net461\Coscine.Configuration.dll</HintPath> - </Reference> - <Reference Include="nunit.framework, Version=3.12.0.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL"> - <HintPath>..\packages\NUnit.3.12.0\lib\net45\nunit.framework.dll</HintPath> - </Reference> - <Reference Include="System" /> - <Reference Include="System.Core" /> - <Reference Include="System.Net.Http.WebRequest" /> - <Reference Include="System.Xml.Linq" /> - <Reference Include="System.Data.DataSetExtensions" /> - <Reference Include="Microsoft.CSharp" /> - <Reference Include="System.Data" /> - <Reference Include="System.Net.Http" /> - <Reference Include="System.Xml" /> - </ItemGroup> - <ItemGroup> - <Compile Include="EcsManagerTests.cs" /> - <Compile Include="Properties\AssemblyInfo.cs" /> - </ItemGroup> - <ItemGroup> - <None Include="app.config" /> - <None Include="packages.config" /> - </ItemGroup> - <ItemGroup> - <ProjectReference Include="..\ECSManager\EcsManager.csproj"> - <Project>{dd73734b-3b55-44d3-843d-6eba0f3601d7}</Project> - <Name>EcsManager</Name> - </ProjectReference> - </ItemGroup> - <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> - <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> - <PropertyGroup> - <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText> - </PropertyGroup> - <Error Condition="!Exists('..\packages\NUnit.3.12.0\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NUnit.3.12.0\build\NUnit.props'))" /> - <Error Condition="!Exists('..\packages\NUnit3TestAdapter.3.17.0\build\net35\NUnit3TestAdapter.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NUnit3TestAdapter.3.17.0\build\net35\NUnit3TestAdapter.props'))" /> - </Target> +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <OutputType>Library</OutputType> + <RootNamespace>Coscine.ECSManager.Tests</RootNamespace> + <AssemblyName>Coscine.ECSManager.Tests</AssemblyName> + <TargetFrameworks>net5.0;net461</TargetFrameworks> + </PropertyGroup> + <ItemGroup> + <ProjectReference Include="..\ECSManager\EcsManager.csproj" /> + </ItemGroup> + <ItemGroup> + <PackageReference Include="Consul" Version="1.6.1.1" /> + <PackageReference Include="Coscine.Configuration" Version="*-*" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" /> + <PackageReference Include="NUnit" Version="3.13.0" /> + <PackageReference Include="NUnit3TestAdapter" Version="3.17.0" /> + </ItemGroup> </Project> \ No newline at end of file diff --git a/src/ECSManager.Tests/Properties/AssemblyInfo.cs b/src/ECSManager.Tests/Properties/AssemblyInfo.cs index a648fbe25d7cb7bb87049ebd306908656040f3cc..cbe550fbe3ccad45542149ec77777dfe32d3f4ef 100644 --- a/src/ECSManager.Tests/Properties/AssemblyInfo.cs +++ b/src/ECSManager.Tests/Properties/AssemblyInfo.cs @@ -5,12 +5,5 @@ //------------------------------------------------------------------------------ using System.Reflection; -[assembly: AssemblyTitle("EcsManager.Tests")] [assembly: AssemblyDescription("EcsManager.Tests is a part of the CoScInE group.")] -[assembly: AssemblyCompany("IT Center, RWTH Aachen University")] -[assembly: AssemblyProduct("EcsManager.Tests")] -[assembly: AssemblyVersion("1.1.1")] -[assembly: AssemblyFileVersion("1.1.1")] -[assembly: AssemblyInformationalVersion("1.1.1-topic-1279-quota0001")] [assembly: AssemblyCopyright("2021 IT Center, RWTH Aachen University")] - diff --git a/src/ECSManager.Tests/app.config b/src/ECSManager.Tests/app.config deleted file mode 100644 index dde2c3cc64e799408ff0170f1089525f1b140c2b..0000000000000000000000000000000000000000 --- a/src/ECSManager.Tests/app.config +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<configuration> - <runtime> - <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> - <dependentAssembly> - <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" /> - </dependentAssembly> - </assemblyBinding> - </runtime> -</configuration> \ No newline at end of file diff --git a/src/ECSManager.Tests/packages.config b/src/ECSManager.Tests/packages.config deleted file mode 100644 index 16347db03504209c2ef684cbdd76d47463e9e4ff..0000000000000000000000000000000000000000 --- a/src/ECSManager.Tests/packages.config +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<packages> - <package id="Consul" version="0.7.2.6" targetFramework="net461" /> - <package id="Coscine.Configuration" version="1.5.0" targetFramework="net461" /> - <package id="NUnit" version="3.12.0" targetFramework="net461" /> - <package id="NUnit3TestAdapter" version="3.17.0" targetFramework="net461" /> -</packages> \ No newline at end of file diff --git a/src/ECSManager/EcsManager.csproj b/src/ECSManager/EcsManager.csproj index dc75b4b837bb80d11ad22a92ca9620f2fa530b27..98a4ab5f476c9cdc19e1763d072b564f4410ebce 100644 --- a/src/ECSManager/EcsManager.csproj +++ b/src/ECSManager/EcsManager.csproj @@ -1,69 +1,15 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> - <PropertyGroup> - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProjectGuid>{DD73734B-3B55-44D3-843D-6EBA0F3601D7}</ProjectGuid> - <OutputType>Library</OutputType> - <AppDesignerFolder>Properties</AppDesignerFolder> - <RootNamespace>Coscine.ECSManager</RootNamespace> - <AssemblyName>Coscine.ECSManager</AssemblyName> - <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> - <FileAlignment>512</FileAlignment> - <Deterministic>true</Deterministic> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> - <DebugSymbols>true</DebugSymbols> - <DebugType>full</DebugType> - <Optimize>false</Optimize> - <OutputPath>bin\Debug\</OutputPath> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <DebugType>pdbonly</DebugType> - <Optimize>true</Optimize> - <OutputPath>bin\Release\</OutputPath> - <DefineConstants>TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <ItemGroup> - <Reference Include="Consul, Version=0.7.2.6, Culture=neutral, PublicKeyToken=20a6ad9a81df1d95, processorArchitecture=MSIL"> - <HintPath>..\packages\Consul.0.7.2.6\lib\net45\Consul.dll</HintPath> - </Reference> - <Reference Include="Coscine.Configuration, Version=1.5.0.0, Culture=neutral, PublicKeyToken=ce3d7a32d7dc1e5a, processorArchitecture=MSIL"> - <HintPath>..\packages\Coscine.Configuration.1.5.0\lib\net461\Coscine.Configuration.dll</HintPath> - </Reference> - <Reference Include="ECSManagementSDK, Version=1.2.2.0, Culture=neutral, processorArchitecture=MSIL"> - <HintPath>..\packages\ECSManagementSDK.1.2.2\lib\net45\ECSManagementSDK.dll</HintPath> - </Reference> - <Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> - <HintPath>..\packages\Newtonsoft.Json.10.0.1\lib\net45\Newtonsoft.Json.dll</HintPath> - </Reference> - <Reference Include="System" /> - <Reference Include="System.Core" /> - <Reference Include="System.Net.Http.Formatting, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> - <HintPath>..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll</HintPath> - </Reference> - <Reference Include="System.Net.Http.WebRequest" /> - <Reference Include="System.Xml.Linq" /> - <Reference Include="System.Data.DataSetExtensions" /> - <Reference Include="Microsoft.CSharp" /> - <Reference Include="System.Data" /> - <Reference Include="System.Net.Http" /> - <Reference Include="System.Xml" /> - </ItemGroup> - <ItemGroup> - <Compile Include="EcsManager.cs" /> - <Compile Include="EcsManagerConfiguration.cs" /> - <Compile Include="Properties\AssemblyInfo.cs" /> - </ItemGroup> - <ItemGroup> - <None Include="app.config" /> - <None Include="packages.config" /> - </ItemGroup> - <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <OutputType>Library</OutputType> + <RootNamespace>Coscine.ECSManager</RootNamespace> + <AssemblyName>Coscine.ECSManager</AssemblyName> + <TargetFrameworks>net5.0;net461</TargetFrameworks> + </PropertyGroup> + <ItemGroup> + <PackageReference Include="Consul" Version="1.6.1.1" /> + <PackageReference Include="Coscine.Configuration" Version="*-*" /> + <PackageReference Include="ECSManagementSDK" Version="1.2.2" /> + <PackageReference Include="Microsoft.AspNet.WebApi.Client" Version="5.2.7" /> + <PackageReference Include="Newtonsoft.Json" Version="12.0.3" /> + </ItemGroup> </Project> \ No newline at end of file diff --git a/src/ECSManager/Properties/AssemblyInfo.cs b/src/ECSManager/Properties/AssemblyInfo.cs index a9432fb0fe9a4f038817ddd5bcca10d714057be7..d0bb9b82e12b197a6b35bf479f52e8e17862cf3a 100644 --- a/src/ECSManager/Properties/AssemblyInfo.cs +++ b/src/ECSManager/Properties/AssemblyInfo.cs @@ -5,12 +5,5 @@ //------------------------------------------------------------------------------ using System.Reflection; -[assembly: AssemblyTitle("EcsManager")] [assembly: AssemblyDescription("EcsManager is a part of the CoScInE group.")] -[assembly: AssemblyCompany("IT Center, RWTH Aachen University")] -[assembly: AssemblyProduct("EcsManager")] -[assembly: AssemblyVersion("1.1.1")] -[assembly: AssemblyFileVersion("1.1.1")] -[assembly: AssemblyInformationalVersion("1.1.1-topic-1279-quota0001")] [assembly: AssemblyCopyright("2021 IT Center, RWTH Aachen University")] - diff --git a/src/ECSManager/app.config b/src/ECSManager/app.config deleted file mode 100644 index dde2c3cc64e799408ff0170f1089525f1b140c2b..0000000000000000000000000000000000000000 --- a/src/ECSManager/app.config +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<configuration> - <runtime> - <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> - <dependentAssembly> - <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" /> - </dependentAssembly> - </assemblyBinding> - </runtime> -</configuration> \ No newline at end of file diff --git a/src/ECSManager/packages.config b/src/ECSManager/packages.config deleted file mode 100644 index dd9b026f5da2834310d2c08fa4c3995fb28c2cb7..0000000000000000000000000000000000000000 --- a/src/ECSManager/packages.config +++ /dev/null @@ -1,8 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<packages> - <package id="Consul" version="0.7.2.6" targetFramework="net461" /> - <package id="Coscine.Configuration" version="1.5.0" targetFramework="net461" /> - <package id="ECSManagementSDK" version="1.2.2" targetFramework="net461" /> - <package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net461" /> - <package id="Newtonsoft.Json" version="10.0.1" targetFramework="net461" /> -</packages> \ No newline at end of file diff --git a/tools/packages.config b/tools/packages.config deleted file mode 100644 index 14aef3bf00189e621993b61ccea2e4a203e73b9b..0000000000000000000000000000000000000000 --- a/tools/packages.config +++ /dev/null @@ -1,4 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<packages> - <package id="Cake" version="0.36.0" /> -</packages>