From 820f46e6bf00ec3102e249fa7b696dc312968a8a Mon Sep 17 00:00:00 2001 From: Next Turn <45985406+NextTurn@users.noreply.github.com> Date: Tue, 8 Dec 2020 01:59:24 +0800 Subject: [PATCH] Upgrade build flows (#729) --- Directory.Build.props | 8 ++ Directory.Build.targets | 2 +- LICENSE.txt | 2 +- WinSW.nuspec | 8 +- eng/build.yml | 77 +++++++++---------- examples/sample-allOptions.xml | 32 ++++---- examples/sample-minimal.xml | 32 ++++---- .../Configuration/DefaultSettings.cs | 4 +- src/WinSW.Core/Download.cs | 2 +- .../Extensions/WinSWExtensionManager.cs | 2 +- src/WinSW.Core/ServiceDescriptor.cs | 20 ++--- src/WinSW.Core/Util/FileHelper.cs | 2 +- src/WinSW.Core/WinSW.Core.csproj | 8 +- src/WinSW.Plugins/WinSW.Plugins.csproj | 4 +- src/WinSW.Tests/WinSW.Tests.csproj | 4 +- src/WinSW/Program.cs | 12 +-- src/WinSW/WinSW.csproj | 37 +++++---- src/WinSW/WrapperService.cs | 2 +- 18 files changed, 137 insertions(+), 121 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 402beb4..3280c82 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -4,6 +4,14 @@ true full $(MSBuildThisFileDirectory)artifacts\ + $(ArtifactsDir)bin\ + $(ArtifactsDir)obj\ + $(ArtifactsDir)publish\ + + + + $(ArtifactsBinDir)$(MSBuildProjectName)\ + $(ArtifactsObjDir)$(MSBuildProjectName)\ diff --git a/Directory.Build.targets b/Directory.Build.targets index 3d3afd7..cb2d8e0 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -1,6 +1,6 @@  - + VNEXT diff --git a/LICENSE.txt b/LICENSE.txt index 8a41c03..59ea54d 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,6 +1,6 @@ MIT License -Copyright (c) Kohsuke Kawaguchi, Sun Microsystems, Inc., CloudBees, Inc., Oleg Nenashev and other contributors +Copyright (c) 2008-2020 Kohsuke Kawaguchi, Sun Microsystems, Inc., CloudBees, Inc., Oleg Nenashev and other 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 diff --git a/WinSW.nuspec b/WinSW.nuspec index 5e939cb..013370d 100644 --- a/WinSW.nuspec +++ b/WinSW.nuspec @@ -17,7 +17,7 @@ More info about the wrapper is available in the projects GitHub repository. MIT https://github.com/winsw/winsw - Copyright (c) 2010-2016 Kohsuke Kawaguchi, Sun Microsystems, Inc., CloudBees, Inc., Oleg Nenashev and other contributors + Copyright (c) 2008-2020 Kohsuke Kawaguchi, Sun Microsystems, Inc., CloudBees, Inc., Oleg Nenashev and other contributors false service wrapper @@ -25,9 +25,9 @@ More info about the wrapper is available in the projects GitHub repository. - - - + + + diff --git a/eng/build.yml b/eng/build.yml index 8ab3256..f50fd7b 100644 --- a/eng/build.yml +++ b/eng/build.yml @@ -28,11 +28,18 @@ jobs: Release: BuildConfiguration: Release steps: - - script: | - dotnet build -c $(BuildConfiguration) src\WinSW.sln -p:Version=$(BuildVersion) - dotnet publish -c $(BuildConfiguration) -f netcoreapp3.1 -r win-x64 src\WinSW\WinSW.csproj -p:PublishSingleFile=true -p:PublishTrimmed=true -p:Version=$(BuildVersion) - dotnet publish -c $(BuildConfiguration) -f netcoreapp3.1 -r win-x86 src\WinSW\WinSW.csproj -p:PublishSingleFile=true -p:PublishTrimmed=true -p:Version=$(BuildVersion) + - task: DotNetCoreCLI@2 displayName: Build + inputs: + command: build + projects: src\WinSW.sln + arguments: -c $(BuildConfiguration) -p:Version=$(BuildVersion) + - script: | + dotnet publish -c $(BuildConfiguration) -f net5.0-windows -r win-x64 src\WinSW\WinSW.csproj -p:PublishSingleFile=true -p:PublishTrimmed=true -p:Version=$(BuildVersion) + dotnet publish -c $(BuildConfiguration) -f net5.0-windows -r win-x86 src\WinSW\WinSW.csproj -p:PublishSingleFile=true -p:PublishTrimmed=true -p:Version=$(BuildVersion) + displayName: Build + - script: dotnet test -c $(BuildConfiguration) --collect "XPlat Code Coverage" --no-build src\WinSW.Tests\WinSW.Tests.csproj + displayName: Test - task: NuGetToolInstaller@1 displayName: Install Nuget inputs: @@ -44,51 +51,41 @@ jobs: packagesToPack: WinSW.nuspec versioningScheme: byEnvVar versionEnvVar: BuildVersion - - script: dotnet test -c $(BuildConfiguration) --collect "XPlat Code Coverage" --no-build src\WinSW.Tests\WinSW.Tests.csproj - displayName: Test - script: dotnet tool restore displayName: Restore tools - script: dotnet tool run codecov -- -f "src\**\TestResults\*\coverage.cobertura.xml" --required displayName: Upload code coverage reports - - task: PublishBuildArtifacts@1 + + - publish: artifacts\publish\WinSW.NET2.exe + artifact: WinSW.NET2.exe_$(BuildConfiguration) displayName: Publish .NET 2.0 - inputs: - PathtoPublish: artifacts\WinSW.NET2.exe - ArtifactName: WinSW.NET2.exe_$(BuildConfiguration) - - task: PublishBuildArtifacts@1 + + - publish: artifacts\publish\WinSW.NET4.exe + artifact: WinSW.NET4.exe_$(BuildConfiguration) displayName: Publish .NET 4.0 - inputs: - PathtoPublish: artifacts\WinSW.NET4.exe - ArtifactName: WinSW.NET4.exe_$(BuildConfiguration) - - task: PublishBuildArtifacts@1 + + - publish: artifacts\publish\WinSW.NET461.exe + artifact: WinSW.NET461.exe_$(BuildConfiguration) displayName: Publish .NET 4.6.1 - inputs: - PathtoPublish: artifacts\WinSW.NET461.exe - ArtifactName: WinSW.NET461.exe_$(BuildConfiguration) - - task: PublishBuildArtifacts@1 - displayName: Publish .NET Core 3.1 x64 - inputs: - PathtoPublish: artifacts\WinSW.NETCore31.x64.exe - ArtifactName: WinSW.NETCore31.x64.exe_$(BuildConfiguration) - - task: PublishBuildArtifacts@1 - displayName: Publish .NET Core 3.1 x86 - inputs: - PathtoPublish: artifacts\WinSW.NETCore31.x86.exe - ArtifactName: WinSW.NETCore31.x86.exe_$(BuildConfiguration) - - task: PublishBuildArtifacts@1 + + - publish: artifacts\publish\WinSW-x64.exe + artifact: WinSW-x64.exe_$(BuildConfiguration) + displayName: Publish .NET Core x64 + + - publish: artifacts\publish\WinSW-x86.exe + artifact: WinSW-x86.exe_$(BuildConfiguration) + displayName: Publish .NET Core x86 + + - publish: $(Build.ArtifactStagingDirectory)\WinSW.$(BuildVersion).nupkg + artifact: WinSW.nupkg_$(BuildConfiguration) displayName: Publish Nuget - inputs: - PathtoPublish: $(Build.ArtifactStagingDirectory)\WinSW.$(BuildVersion).nupkg - ArtifactName: WinSW.nupkg_$(BuildConfiguration) - - task: PublishBuildArtifacts@1 + + - publish: examples\sample-allOptions.xml + artifact: sample-allOptions.xml displayName: Publish full sample condition: and(succeeded(), eq(variables['BuildConfiguration'], 'Release')) - inputs: - PathtoPublish: examples\sample-allOptions.xml - ArtifactName: sample-allOptions.xml - - task: PublishBuildArtifacts@1 + + - publish: examples\sample-minimal.xml + artifact: sample-minimal.xml displayName: Publish minimal sample condition: and(succeeded(), eq(variables['BuildConfiguration'], 'Release')) - inputs: - PathtoPublish: examples\sample-minimal.xml - ArtifactName: sample-minimal.xml diff --git a/examples/sample-allOptions.xml b/examples/sample-allOptions.xml index 23a8816..b4f90ab 100644 --- a/examples/sample-allOptions.xml +++ b/examples/sample-allOptions.xml @@ -1,20 +1,26 @@ - + @@ -34,7 +34,7 @@ - + diff --git a/src/WinSW.Plugins/WinSW.Plugins.csproj b/src/WinSW.Plugins/WinSW.Plugins.csproj index ae5d002..69ad08b 100644 --- a/src/WinSW.Plugins/WinSW.Plugins.csproj +++ b/src/WinSW.Plugins/WinSW.Plugins.csproj @@ -1,13 +1,13 @@  - net20;net40;net461;netcoreapp3.1 + net20;net40;net461;net5.0-windows latest enable true - + diff --git a/src/WinSW.Tests/WinSW.Tests.csproj b/src/WinSW.Tests/WinSW.Tests.csproj index 95a3e48..46f3ff3 100644 --- a/src/WinSW.Tests/WinSW.Tests.csproj +++ b/src/WinSW.Tests/WinSW.Tests.csproj @@ -1,7 +1,7 @@ - net40;net461;netcoreapp3.1 + net40;net461;net5.0-windows latest @@ -15,7 +15,7 @@ - + diff --git a/src/WinSW/Program.cs b/src/WinSW/Program.cs index 3ea852a..01553f5 100644 --- a/src/WinSW/Program.cs +++ b/src/WinSW/Program.cs @@ -4,7 +4,7 @@ using System.ComponentModel; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.IO; -#if NETCOREAPP +#if NET using System.Reflection; #endif using System.Runtime.InteropServices; @@ -512,8 +512,8 @@ namespace WinSW { UseShellExecute = true, Verb = "runas", - FileName = current.MainModule.FileName, -#if NETCOREAPP + FileName = current.MainModule!.FileName!, +#if NET Arguments = "/elevated " + string.Join(' ', args), #elif !NET20 Arguments = "/elevated " + string.Join(" ", args), @@ -525,7 +525,7 @@ namespace WinSW try { - using Process elevated = Process.Start(startInfo); + using Process elevated = Process.Start(startInfo)!; elevated.WaitForExit(); Environment.Exit(elevated.ExitCode); @@ -596,7 +596,7 @@ namespace WinSW appenders.Add(systemEventLogger); BasicConfigurator.Configure( -#if NETCOREAPP +#if NET LogManager.GetRepository(Assembly.GetExecutingAssembly()), #endif appenders.ToArray()); @@ -664,7 +664,7 @@ namespace WinSW var executablePath = new DefaultWinSWSettings().ExecutablePath; var baseName = Path.GetFileNameWithoutExtension(executablePath); - var d = new DirectoryInfo(Path.GetDirectoryName(executablePath)); + var d = new DirectoryInfo(Path.GetDirectoryName(executablePath)!); if (File.Exists(Path.Combine(d.FullName, baseName + ".xml"))) { diff --git a/src/WinSW/WinSW.csproj b/src/WinSW/WinSW.csproj index 88c1902..3688b2c 100644 --- a/src/WinSW/WinSW.csproj +++ b/src/WinSW/WinSW.csproj @@ -2,27 +2,34 @@ Exe - net20;net40;net461;netcoreapp3.1 + net20;net40;net461;net5.0-windows latest enable true + true + Link Windows Service Wrapper Allows arbitrary process to run as a Windows service by wrapping it. CloudBees, Inc. Windows Service Wrapper - Copyright 2008-2016 Oleg Nenashev, CloudBees, Inc. and other contributors + Copyright (c) 2008-2020 Kohsuke Kawaguchi, Sun Microsystems, Inc., CloudBees, Inc., Oleg Nenashev and other contributors - + + true + true + + + 3.0.41 - + - + @@ -33,14 +40,7 @@ - - - - - - - - + x64 @@ -50,13 +50,13 @@ x86 - - + + - + v2 @@ -80,7 +80,7 @@ $(InputAssemblies) "$(OutDir)WinSW.Plugins.dll" $(InputAssemblies) "$(OutDir)log4net.dll" $(InputAssemblies) "$(OutDir)YamlDotNet.dll" - "$(ArtifactsDir)WinSW.$(IdentifierSuffix).exe" + "$(ArtifactsPublishDir)WinSW.$(IdentifierSuffix).exe" @@ -93,8 +93,7 @@ "$(ILMerge)" $(ILMergeArgs) - - + diff --git a/src/WinSW/WrapperService.cs b/src/WinSW/WrapperService.cs index 6641e20..0740bfb 100644 --- a/src/WinSW/WrapperService.cs +++ b/src/WinSW/WrapperService.cs @@ -31,7 +31,7 @@ namespace WinSW internal WinSWExtensionManager ExtensionManager { get; private set; } private static readonly ILog Log = LogManager.GetLogger( -#if NETCOREAPP +#if NET Assembly.GetExecutingAssembly(), #endif "WinSW");