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");