зеркало из https://github.com/akkadotnet/Hyperion.git
CI through FAKE script tasks
This commit is contained in:
Родитель
27c2d8808f
Коммит
3163dd3f69
|
@ -21,6 +21,7 @@ build/
|
|||
bld/
|
||||
[Bb]in/
|
||||
[Oo]bj/
|
||||
.fake/
|
||||
|
||||
# Visual Studo 2015 cache/options directory
|
||||
.vs/
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<solution>
|
||||
<add key="disableSourceControlIntegration" value="true" />
|
||||
</solution>
|
||||
<packageSources>
|
||||
<add key="nuget.org" value="https://www.nuget.org/api/v2/" />
|
||||
</packageSources>
|
||||
</configuration>
|
Двоичный файл не отображается.
|
@ -0,0 +1,144 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">$(MSBuildProjectDirectory)\..\</SolutionDir>
|
||||
|
||||
<!-- Enable the restore command to run before builds -->
|
||||
<RestorePackages Condition=" '$(RestorePackages)' == '' ">false</RestorePackages>
|
||||
|
||||
<!-- Property that enables building a package from a project -->
|
||||
<BuildPackage Condition=" '$(BuildPackage)' == '' ">false</BuildPackage>
|
||||
|
||||
<!-- Determines if package restore consent is required to restore packages -->
|
||||
<RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'false' ">true</RequireRestoreConsent>
|
||||
|
||||
<!-- Download NuGet.exe if it does not already exist -->
|
||||
<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">false</DownloadNuGetExe>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup Condition=" '$(PackageSources)' == '' ">
|
||||
<!-- Package sources used to restore packages. By default, registered sources under %APPDATA%\NuGet\NuGet.Config will be used -->
|
||||
<!-- The official NuGet package source (https://www.nuget.org/api/v2/) will be excluded if package sources are specified and it does not appear in the list -->
|
||||
<!--
|
||||
<PackageSource Include="https://www.nuget.org/api/v2/" />
|
||||
<PackageSource Include="https://my-nuget-source/nuget/" />
|
||||
-->
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup Condition=" '$(OS)' == 'Windows_NT'">
|
||||
<!-- Windows specific commands -->
|
||||
<NuGetToolsPath>$([System.IO.Path]::Combine($(SolutionDir), ".nuget"))</NuGetToolsPath>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition=" '$(OS)' != 'Windows_NT'">
|
||||
<!-- We need to launch nuget.exe with the mono command if we're not on windows -->
|
||||
<NuGetToolsPath>$(SolutionDir).nuget</NuGetToolsPath>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<PackagesProjectConfig Condition=" '$(OS)' == 'Windows_NT'">$(MSBuildProjectDirectory)\packages.$(MSBuildProjectName.Replace(' ', '_')).config</PackagesProjectConfig>
|
||||
<PackagesProjectConfig Condition=" '$(OS)' != 'Windows_NT'">$(MSBuildProjectDirectory)\packages.$(MSBuildProjectName).config</PackagesProjectConfig>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<PackagesConfig Condition="Exists('$(MSBuildProjectDirectory)\packages.config')">$(MSBuildProjectDirectory)\packages.config</PackagesConfig>
|
||||
<PackagesConfig Condition="Exists('$(PackagesProjectConfig)')">$(PackagesProjectConfig)</PackagesConfig>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<!-- NuGet command -->
|
||||
<NuGetExePath Condition=" '$(NuGetExePath)' == '' ">$(NuGetToolsPath)\NuGet.exe</NuGetExePath>
|
||||
<PackageSources Condition=" $(PackageSources) == '' ">@(PackageSource)</PackageSources>
|
||||
|
||||
<NuGetCommand Condition=" '$(OS)' == 'Windows_NT'">"$(NuGetExePath)"</NuGetCommand>
|
||||
<NuGetCommand Condition=" '$(OS)' != 'Windows_NT' ">mono --runtime=v4.0.30319 "$(NuGetExePath)"</NuGetCommand>
|
||||
|
||||
<PackageOutputDir Condition="$(PackageOutputDir) == ''">$(TargetDir.Trim('\\'))</PackageOutputDir>
|
||||
|
||||
<RequireConsentSwitch Condition=" $(RequireRestoreConsent) == 'true' ">-RequireConsent</RequireConsentSwitch>
|
||||
<NonInteractiveSwitch Condition=" '$(VisualStudioVersion)' != '' AND '$(OS)' == 'Windows_NT' ">-NonInteractive</NonInteractiveSwitch>
|
||||
|
||||
<PaddedSolutionDir Condition=" '$(OS)' == 'Windows_NT'">"$(SolutionDir) "</PaddedSolutionDir>
|
||||
<PaddedSolutionDir Condition=" '$(OS)' != 'Windows_NT' ">"$(SolutionDir)"</PaddedSolutionDir>
|
||||
|
||||
<!-- Commands -->
|
||||
<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir)</RestoreCommand>
|
||||
<BuildCommand>$(NuGetCommand) pack "$(ProjectPath)" -Properties "Configuration=$(Configuration);Platform=$(Platform)" $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols</BuildCommand>
|
||||
|
||||
<!-- We need to ensure packages are restored prior to assembly resolve -->
|
||||
<BuildDependsOn Condition="$(RestorePackages) == 'true'">
|
||||
RestorePackages;
|
||||
$(BuildDependsOn);
|
||||
</BuildDependsOn>
|
||||
|
||||
<!-- Make the build depend on restore packages -->
|
||||
<BuildDependsOn Condition="$(BuildPackage) == 'true'">
|
||||
$(BuildDependsOn);
|
||||
BuildPackage;
|
||||
</BuildDependsOn>
|
||||
</PropertyGroup>
|
||||
|
||||
<Target Name="CheckPrerequisites">
|
||||
<!-- Raise an error if we're unable to locate nuget.exe -->
|
||||
<Error Condition="'$(DownloadNuGetExe)' != 'true' AND !Exists('$(NuGetExePath)')" Text="Unable to locate '$(NuGetExePath)'" />
|
||||
<!--
|
||||
Take advantage of MsBuild's build dependency tracking to make sure that we only ever download nuget.exe once.
|
||||
This effectively acts as a lock that makes sure that the download operation will only happen once and all
|
||||
parallel builds will have to wait for it to complete.
|
||||
-->
|
||||
<MsBuild Targets="_DownloadNuGet" Projects="$(MSBuildThisFileFullPath)" Properties="Configuration=NOT_IMPORTANT;DownloadNuGetExe=$(DownloadNuGetExe)" />
|
||||
</Target>
|
||||
|
||||
<Target Name="_DownloadNuGet">
|
||||
<DownloadNuGet OutputFilename="$(NuGetExePath)" Condition=" '$(DownloadNuGetExe)' == 'true' AND !Exists('$(NuGetExePath)')" />
|
||||
</Target>
|
||||
|
||||
<Target Name="RestorePackages" DependsOnTargets="CheckPrerequisites">
|
||||
<Exec Command="$(RestoreCommand)"
|
||||
Condition="'$(OS)' != 'Windows_NT' And Exists('$(PackagesConfig)')" />
|
||||
|
||||
<Exec Command="$(RestoreCommand)"
|
||||
LogStandardErrorAsError="true"
|
||||
Condition="'$(OS)' == 'Windows_NT' And Exists('$(PackagesConfig)')" />
|
||||
</Target>
|
||||
|
||||
<Target Name="BuildPackage" DependsOnTargets="CheckPrerequisites">
|
||||
<Exec Command="$(BuildCommand)"
|
||||
Condition=" '$(OS)' != 'Windows_NT' " />
|
||||
|
||||
<Exec Command="$(BuildCommand)"
|
||||
LogStandardErrorAsError="true"
|
||||
Condition=" '$(OS)' == 'Windows_NT' " />
|
||||
</Target>
|
||||
|
||||
<UsingTask TaskName="DownloadNuGet" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
|
||||
<ParameterGroup>
|
||||
<OutputFilename ParameterType="System.String" Required="true" />
|
||||
</ParameterGroup>
|
||||
<Task>
|
||||
<Reference Include="System.Core" />
|
||||
<Using Namespace="System" />
|
||||
<Using Namespace="System.IO" />
|
||||
<Using Namespace="System.Net" />
|
||||
<Using Namespace="Microsoft.Build.Framework" />
|
||||
<Using Namespace="Microsoft.Build.Utilities" />
|
||||
<Code Type="Fragment" Language="cs">
|
||||
<![CDATA[
|
||||
try {
|
||||
OutputFilename = Path.GetFullPath(OutputFilename);
|
||||
|
||||
Log.LogMessage("Downloading latest version of NuGet.exe...");
|
||||
WebClient webClient = new WebClient();
|
||||
webClient.DownloadFile("https://www.nuget.org/nuget.exe", OutputFilename);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex) {
|
||||
Log.LogErrorFromException(ex);
|
||||
return false;
|
||||
}
|
||||
]]>
|
||||
</Code>
|
||||
</Task>
|
||||
</UsingTask>
|
||||
</Project>
|
|
@ -0,0 +1,3 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
</packages>
|
|
@ -0,0 +1,2 @@
|
|||
### New in 0.9.0 (Released 2016/11/24)
|
||||
* TODO
|
|
@ -0,0 +1,8 @@
|
|||
// <auto-generated/>
|
||||
using System.Reflection;
|
||||
|
||||
[assembly: AssemblyCompanyAttribute("AsynkronIT")]
|
||||
[assembly: AssemblyCopyrightAttribute("Copyright <20> 2013-2016 AsynkronIT")]
|
||||
[assembly: AssemblyTrademarkAttribute("")]
|
||||
[assembly: AssemblyVersionAttribute("0.9.0.0")]
|
||||
[assembly: AssemblyFileVersionAttribute("0.9.0.0")]
|
|
@ -1,41 +1,18 @@
|
|||
namespace Wire.FSharpTestTypes.AssemblyInfo
|
||||
|
||||
namespace System
|
||||
open System
|
||||
open System.Reflection
|
||||
open System.Runtime.CompilerServices
|
||||
open System.Runtime.InteropServices
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[<assembly: AssemblyTitle("Wire.FSharpTestTypes")>]
|
||||
[<assembly: AssemblyDescription("")>]
|
||||
[<assembly: AssemblyConfiguration("")>]
|
||||
[<assembly: AssemblyCompany("")>]
|
||||
[<assembly: AssemblyProduct("Wire.FSharpTestTypes")>]
|
||||
[<assembly: AssemblyCopyright("Copyright © 2015")>]
|
||||
[<assembly: AssemblyTrademark("")>]
|
||||
[<assembly: AssemblyCulture("")>]
|
||||
[<assembly: AssemblyTitleAttribute("Wire")>]
|
||||
[<assembly: AssemblyProductAttribute("Wire")>]
|
||||
[<assembly: AssemblyDescriptionAttribute("Binary serializer for POCO objects")>]
|
||||
[<assembly: AssemblyCopyrightAttribute("Copyright <EFBFBD> 2013-2016 AsynkronIT")>]
|
||||
[<assembly: AssemblyCompanyAttribute("AsynkronIT")>]
|
||||
[<assembly: ComVisibleAttribute(false)>]
|
||||
[<assembly: CLSCompliantAttribute(true)>]
|
||||
[<assembly: AssemblyVersionAttribute("0.9.0.0")>]
|
||||
[<assembly: AssemblyFileVersionAttribute("0.9.0.0")>]
|
||||
do ()
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[<assembly: ComVisible(false)>]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[<assembly: Guid("2d321671-6320-4dd2-b174-2773192d2a5a")>]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [<assembly: AssemblyVersion("1.0.*")>]
|
||||
[<assembly: AssemblyVersion("1.0.0.0")>]
|
||||
[<assembly: AssemblyFileVersion("1.0.0.0")>]
|
||||
|
||||
do
|
||||
()
|
||||
module internal AssemblyVersionInformation =
|
||||
let [<Literal>] Version = "0.9.0.0"
|
||||
|
|
8
Wire.sln
8
Wire.sln
|
@ -13,6 +13,14 @@ Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Wire.FSharpTestTypes", "Wir
|
|||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wire.PerformanceTests", "Wire.PerformanceTests\Wire.PerformanceTests.csproj", "{19E9324E-C3E9-4751-8B8F-5A456CA98E8C}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{2F3D4EC4-3A41-48C2-9DEA-0510B0FF89B4}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
build.cmd = build.cmd
|
||||
build.fsx = build.fsx
|
||||
build.sh = build.sh
|
||||
RELEASE_NOTES.md = RELEASE_NOTES.md
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
|
|
|
@ -2715,7 +2715,6 @@
|
|||
"NETStandard.Library/1.6.0": {
|
||||
"sha512": "ypsCvIdCZ4IoYASJHt6tF2fMo7N30NLgV1EbmC+snO490OMl9FvVxmumw14rhReWU3j3g7BYudG6YCrchwHJlA==",
|
||||
"type": "package",
|
||||
"path": "NETStandard.Library/1.6.0",
|
||||
"files": [
|
||||
"NETStandard.Library.1.6.0.nupkg.sha512",
|
||||
"NETStandard.Library.nuspec",
|
||||
|
@ -3152,7 +3151,6 @@
|
|||
"runtime.native.System.IO.Compression/4.1.0": {
|
||||
"sha512": "Ob7nvnJBox1aaB222zSVZSkf4WrebPG4qFscfK7vmD7P7NxoSxACQLtO7ytWpqXDn2wcd/+45+EAZ7xjaPip8A==",
|
||||
"type": "package",
|
||||
"path": "runtime.native.System.IO.Compression/4.1.0",
|
||||
"files": [
|
||||
"ThirdPartyNotices.txt",
|
||||
"dotnet_library_license.txt",
|
||||
|
@ -3162,9 +3160,8 @@
|
|||
]
|
||||
},
|
||||
"runtime.native.System.Net.Http/4.0.1": {
|
||||
"sha512": "mBsKYpKLQUYz4a8NpS0VxC4DQNCcYVYOjtz9UdyVQAxL6CBRI6FBZoqwly+k1JBbcl7GZ4OS1N/xLaV5UIAteQ==",
|
||||
"sha512": "Nh0UPZx2Vifh8r+J+H2jxifZUD3sBrmolgiFWJd2yiNrxO0xTa6bAw3YwRn1VOiSen/tUXMS31ttNItCZ6lKuA==",
|
||||
"type": "package",
|
||||
"path": "runtime.native.System.Net.Http/4.0.1",
|
||||
"files": [
|
||||
"ThirdPartyNotices.txt",
|
||||
"dotnet_library_license.txt",
|
||||
|
@ -3176,7 +3173,6 @@
|
|||
"runtime.native.System.Security.Cryptography/4.0.0": {
|
||||
"sha512": "2CQK0jmO6Eu7ZeMgD+LOFbNJSXHFVQbCJJkEyEwowh1SCgYnrn9W9RykMfpeeVGw7h4IBvYikzpGUlmZTUafJw==",
|
||||
"type": "package",
|
||||
"path": "runtime.native.System.Security.Cryptography/4.0.0",
|
||||
"files": [
|
||||
"ThirdPartyNotices.txt",
|
||||
"dotnet_library_license.txt",
|
||||
|
@ -3353,7 +3349,6 @@
|
|||
"System.Buffers/4.0.0": {
|
||||
"sha512": "msXumHfjjURSkvxUjYuq4N2ghHoRi2VpXcKMA7gK6ujQfU3vGpl+B6ld0ATRg+FZFpRyA6PgEPA+VlIkTeNf2w==",
|
||||
"type": "package",
|
||||
"path": "System.Buffers/4.0.0",
|
||||
"files": [
|
||||
"System.Buffers.4.0.0.nupkg.sha512",
|
||||
"System.Buffers.nuspec",
|
||||
|
@ -3600,7 +3595,6 @@
|
|||
"System.Diagnostics.DiagnosticSource/4.0.0": {
|
||||
"sha512": "YKglnq4BMTJxfcr6nuT08g+yJ0UxdePIHxosiLuljuHIUR6t4KhFsyaHOaOc1Ofqp0PUvJ0EmcgiEz6T7vEx3w==",
|
||||
"type": "package",
|
||||
"path": "System.Diagnostics.DiagnosticSource/4.0.0",
|
||||
"files": [
|
||||
"System.Diagnostics.DiagnosticSource.4.0.0.nupkg.sha512",
|
||||
"System.Diagnostics.DiagnosticSource.nuspec",
|
||||
|
@ -3674,7 +3668,6 @@
|
|||
"System.Diagnostics.Tracing/4.1.0": {
|
||||
"sha512": "vDN1PoMZCkkdNjvZLql592oYJZgS7URcJzJ7bxeBgGtx5UtR5leNm49VmfHGqIffX4FKacHbI3H6UyNSHQknBg==",
|
||||
"type": "package",
|
||||
"path": "System.Diagnostics.Tracing/4.1.0",
|
||||
"files": [
|
||||
"System.Diagnostics.Tracing.4.1.0.nupkg.sha512",
|
||||
"System.Diagnostics.Tracing.nuspec",
|
||||
|
@ -3897,7 +3890,6 @@
|
|||
"System.Globalization.Calendars/4.0.1": {
|
||||
"sha512": "L1c6IqeQ88vuzC1P81JeHmHA8mxq8a18NUBNXnIY/BVb+TCyAaGIFbhpZt60h9FJNmisymoQkHEFSE9Vslja1Q==",
|
||||
"type": "package",
|
||||
"path": "System.Globalization.Calendars/4.0.1",
|
||||
"files": [
|
||||
"System.Globalization.Calendars.4.0.1.nupkg.sha512",
|
||||
"System.Globalization.Calendars.nuspec",
|
||||
|
@ -3933,7 +3925,6 @@
|
|||
"System.Globalization.Extensions/4.0.1": {
|
||||
"sha512": "KKo23iKeOaIg61SSXwjANN7QYDr/3op3OWGGzDzz7mypx0Za0fZSeG0l6cco8Ntp8YMYkIQcAqlk8yhm5/Uhcg==",
|
||||
"type": "package",
|
||||
"path": "System.Globalization.Extensions/4.0.1",
|
||||
"files": [
|
||||
"System.Globalization.Extensions.4.0.1.nupkg.sha512",
|
||||
"System.Globalization.Extensions.nuspec",
|
||||
|
@ -4051,7 +4042,6 @@
|
|||
"System.IO.Compression/4.1.0": {
|
||||
"sha512": "TjnBS6eztThSzeSib+WyVbLzEdLKUcEHN69VtS3u8aAsSc18FU6xCZlNWWsEd8SKcXAE+y1sOu7VbU8sUeM0sg==",
|
||||
"type": "package",
|
||||
"path": "System.IO.Compression/4.1.0",
|
||||
"files": [
|
||||
"System.IO.Compression.4.1.0.nupkg.sha512",
|
||||
"System.IO.Compression.nuspec",
|
||||
|
@ -4120,7 +4110,6 @@
|
|||
"System.IO.Compression.ZipFile/4.0.1": {
|
||||
"sha512": "hBQYJzfTbQURF10nLhd+az2NHxsU6MU7AB8RUf4IolBP5lOAm4Luho851xl+CqslmhI5ZH/el8BlngEk4lBkaQ==",
|
||||
"type": "package",
|
||||
"path": "System.IO.Compression.ZipFile/4.0.1",
|
||||
"files": [
|
||||
"System.IO.Compression.ZipFile.4.0.1.nupkg.sha512",
|
||||
"System.IO.Compression.ZipFile.nuspec",
|
||||
|
@ -4382,7 +4371,6 @@
|
|||
"System.Net.Http/4.1.0": {
|
||||
"sha512": "ULq9g3SOPVuupt+Y3U+A37coXzdNisB1neFCSKzBwo182u0RDddKJF8I5+HfyXqK6OhJPgeoAwWXrbiUXuRDsg==",
|
||||
"type": "package",
|
||||
"path": "System.Net.Http/4.1.0",
|
||||
"files": [
|
||||
"System.Net.Http.4.1.0.nupkg.sha512",
|
||||
"System.Net.Http.nuspec",
|
||||
|
@ -4462,7 +4450,6 @@
|
|||
"System.Net.NameResolution/4.0.0": {
|
||||
"sha512": "JdqRdM1Qym3YehqdKIi5LHrpypP4JMfxKQSNCJ2z4WawkG0il+N3XfNeJOxll2XrTnG7WgYYPoeiu/KOwg0DQw==",
|
||||
"type": "package",
|
||||
"path": "System.Net.NameResolution/4.0.0",
|
||||
"files": [
|
||||
"System.Net.NameResolution.4.0.0.nupkg.sha512",
|
||||
"System.Net.NameResolution.nuspec",
|
||||
|
@ -4502,7 +4489,6 @@
|
|||
"System.Net.Primitives/4.0.11": {
|
||||
"sha512": "hVvfl4405DRjA2408luZekbPhplJK03j2Y2lSfMlny7GHXlkByw1iLnc9mgKW0GdQn73vvMcWrWewAhylXA4Nw==",
|
||||
"type": "package",
|
||||
"path": "System.Net.Primitives/4.0.11",
|
||||
"files": [
|
||||
"System.Net.Primitives.4.0.11.nupkg.sha512",
|
||||
"System.Net.Primitives.nuspec",
|
||||
|
@ -4579,7 +4565,6 @@
|
|||
"System.Net.Sockets/4.1.0": {
|
||||
"sha512": "xAz0N3dAV/aR/9g8r0Y5oEqU1JRsz29F5EGb/WVHmX3jVSLqi2/92M5hTad2aNWovruXrJpJtgZ9fccPMG9uSw==",
|
||||
"type": "package",
|
||||
"path": "System.Net.Sockets/4.1.0",
|
||||
"files": [
|
||||
"System.Net.Sockets.4.1.0.nupkg.sha512",
|
||||
"System.Net.Sockets.nuspec",
|
||||
|
@ -4833,7 +4818,7 @@
|
|||
]
|
||||
},
|
||||
"System.Reflection.Emit.Lightweight/4.0.1": {
|
||||
"sha512": "tqPJ0LLLpQKsVGQqVqKe4i1KVq6m6TJjeYQLygDovNsVtyI8dWFvZC+CQQrfqo1AnbbDq/7S+TQNkOfzxNqPvw==",
|
||||
"sha512": "sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==",
|
||||
"type": "package",
|
||||
"path": "System.Reflection.Emit.Lightweight/4.0.1",
|
||||
"files": [
|
||||
|
@ -5408,7 +5393,6 @@
|
|||
"System.Runtime.Numerics/4.0.1": {
|
||||
"sha512": "+XbKFuzdmLP3d1o9pdHu2nxjNr2OEPqGzKeegPLCUMM71a0t50A/rOcIRmGs9wR7a8KuHX6hYs/7/TymIGLNqg==",
|
||||
"type": "package",
|
||||
"path": "System.Runtime.Numerics/4.0.1",
|
||||
"files": [
|
||||
"System.Runtime.Numerics.4.0.1.nupkg.sha512",
|
||||
"System.Runtime.Numerics.nuspec",
|
||||
|
@ -5463,7 +5447,6 @@
|
|||
"System.Security.Claims/4.0.1": {
|
||||
"sha512": "4Jlp0OgJLS/Voj1kyFP6MJlIYp3crgfH8kNQk2p7+4JYfc1aAmh9PZyAMMbDhuoolGNtux9HqSOazsioRiDvCw==",
|
||||
"type": "package",
|
||||
"path": "System.Security.Claims/4.0.1",
|
||||
"files": [
|
||||
"System.Security.Claims.4.0.1.nupkg.sha512",
|
||||
"System.Security.Claims.nuspec",
|
||||
|
@ -5500,7 +5483,6 @@
|
|||
"System.Security.Cryptography.Algorithms/4.2.0": {
|
||||
"sha512": "8JQFxbLVdrtIOKMDN38Fn0GWnqYZw/oMlwOUG/qz1jqChvyZlnUmu+0s7wLx7JYua/nAXoESpHA3iw11QFWhXg==",
|
||||
"type": "package",
|
||||
"path": "System.Security.Cryptography.Algorithms/4.2.0",
|
||||
"files": [
|
||||
"System.Security.Cryptography.Algorithms.4.2.0.nupkg.sha512",
|
||||
"System.Security.Cryptography.Algorithms.nuspec",
|
||||
|
@ -5536,9 +5518,8 @@
|
|||
]
|
||||
},
|
||||
"System.Security.Cryptography.Cng/4.2.0": {
|
||||
"sha512": "k4YzVPC/8jwgmiwLGRteetYrd/qp+us5CpagrPJ5XmCj8JrwtZnD3c6wQ0Qv3kK02nc0x15vVIxp+yL4EGjAsA==",
|
||||
"sha512": "cUJ2h+ZvONDe28Szw3st5dOHdjndhJzQ2WObDEXAWRPEQBtVItVoxbXM/OEsTthl3cNn2dk2k0I3y45igCQcLw==",
|
||||
"type": "package",
|
||||
"path": "System.Security.Cryptography.Cng/4.2.0",
|
||||
"files": [
|
||||
"System.Security.Cryptography.Cng.4.2.0.nupkg.sha512",
|
||||
"System.Security.Cryptography.Cng.nuspec",
|
||||
|
@ -5562,9 +5543,8 @@
|
|||
]
|
||||
},
|
||||
"System.Security.Cryptography.Csp/4.0.0": {
|
||||
"sha512": "RskCiZVzL8Ygo/MB4SNsNVch5fRtWyCPdpkxcIEYAPdVV7fWZW2HABm67773xUsQr+hsbQg2KN5H9RlPt0NquA==",
|
||||
"sha512": "/i1Usuo4PgAqgbPNC0NjbO3jPW//BoBlTpcWFD1EHVbidH21y4c1ap5bbEMSGAXjAShhMH4abi/K8fILrnu4BQ==",
|
||||
"type": "package",
|
||||
"path": "System.Security.Cryptography.Csp/4.0.0",
|
||||
"files": [
|
||||
"System.Security.Cryptography.Csp.4.0.0.nupkg.sha512",
|
||||
"System.Security.Cryptography.Csp.nuspec",
|
||||
|
@ -5594,7 +5574,6 @@
|
|||
"System.Security.Cryptography.Encoding/4.0.0": {
|
||||
"sha512": "FbKgE5MbxSQMPcSVRgwM6bXN3GtyAh04NkV8E5zKCBE26X0vYW0UtTa2FIgkH33WVqBVxRgxljlVYumWtU+HcQ==",
|
||||
"type": "package",
|
||||
"path": "System.Security.Cryptography.Encoding/4.0.0",
|
||||
"files": [
|
||||
"System.Security.Cryptography.Encoding.4.0.0.nupkg.sha512",
|
||||
"System.Security.Cryptography.Encoding.nuspec",
|
||||
|
@ -5631,9 +5610,8 @@
|
|||
]
|
||||
},
|
||||
"System.Security.Cryptography.OpenSsl/4.0.0": {
|
||||
"sha512": "tINzoEUUUftkzGRK17WhXpx9W6ntHQqpgUg80pnR03Ix+vbME7s4BBV7AykYn2HNq6x8TelCJQ7wgX0p3y6ozg==",
|
||||
"sha512": "HUG/zNUJwEiLkoURDixzkzZdB5yGA5pQhDP93ArOpDPQMteURIGERRNzzoJlmTreLBWr5lkFSjjMSk8ySEpQMw==",
|
||||
"type": "package",
|
||||
"path": "System.Security.Cryptography.OpenSsl/4.0.0",
|
||||
"files": [
|
||||
"System.Security.Cryptography.OpenSsl.4.0.0.nupkg.sha512",
|
||||
"System.Security.Cryptography.OpenSsl.nuspec",
|
||||
|
@ -5647,7 +5625,6 @@
|
|||
"System.Security.Cryptography.Primitives/4.0.0": {
|
||||
"sha512": "Wkd7QryWYjkQclX0bngpntW5HSlMzeJU24UaLJQ7YTfI8ydAVAaU2J+HXLLABOVJlKTVvAeL0Aj39VeTe7L+oA==",
|
||||
"type": "package",
|
||||
"path": "System.Security.Cryptography.Primitives/4.0.0",
|
||||
"files": [
|
||||
"System.Security.Cryptography.Primitives.4.0.0.nupkg.sha512",
|
||||
"System.Security.Cryptography.Primitives.nuspec",
|
||||
|
@ -5674,7 +5651,6 @@
|
|||
"System.Security.Cryptography.X509Certificates/4.1.0": {
|
||||
"sha512": "4HEfsQIKAhA1+ApNn729Gi09zh+lYWwyIuViihoMDWp1vQnEkL2ct7mAbhBlLYm+x/L4Rr/pyGge1lIY635e0w==",
|
||||
"type": "package",
|
||||
"path": "System.Security.Cryptography.X509Certificates/4.1.0",
|
||||
"files": [
|
||||
"System.Security.Cryptography.X509Certificates.4.1.0.nupkg.sha512",
|
||||
"System.Security.Cryptography.X509Certificates.nuspec",
|
||||
|
@ -5728,7 +5704,6 @@
|
|||
"System.Security.Principal/4.0.1": {
|
||||
"sha512": "On+SKhXY5rzxh/S8wlH1Rm0ogBlu7zyHNxeNBiXauNrhHRXAe9EuX8Yl5IOzLPGU5Z4kLWHMvORDOCG8iu9hww==",
|
||||
"type": "package",
|
||||
"path": "System.Security.Principal/4.0.1",
|
||||
"files": [
|
||||
"System.Security.Principal.4.0.1.nupkg.sha512",
|
||||
"System.Security.Principal.nuspec",
|
||||
|
@ -5785,7 +5760,6 @@
|
|||
"System.Security.Principal.Windows/4.0.0": {
|
||||
"sha512": "iFx15AF3RMEPZn3COh8+Bb2Thv2zsmLd93RchS1b8Mj5SNYeGqbYNCSn5AES1+gq56p4ujGZPrl0xN7ngkXOHg==",
|
||||
"type": "package",
|
||||
"path": "System.Security.Principal.Windows/4.0.0",
|
||||
"files": [
|
||||
"System.Security.Principal.Windows.4.0.0.nupkg.sha512",
|
||||
"System.Security.Principal.Windows.nuspec",
|
||||
|
@ -6094,7 +6068,6 @@
|
|||
"System.Threading.Overlapped/4.0.1": {
|
||||
"sha512": "f7aLuLkBoCQM2kng7zqLFBXz9Gk48gDK8lk1ih9rH/1arJJzZK9gJwNvPDhL6Ps/l6rwOr8jw+4FCHL0KKWiEg==",
|
||||
"type": "package",
|
||||
"path": "System.Threading.Overlapped/4.0.1",
|
||||
"files": [
|
||||
"System.Threading.Overlapped.4.0.1.nupkg.sha512",
|
||||
"System.Threading.Overlapped.nuspec",
|
||||
|
@ -6203,7 +6176,6 @@
|
|||
"System.Threading.Timer/4.0.1": {
|
||||
"sha512": "saGfUV8uqVW6LeURiqxcGhZ24PzuRNaUBtbhVeuUAvky1naH395A/1nY0P2bWvrw/BreRtIB/EzTDkGBpqCwEw==",
|
||||
"type": "package",
|
||||
"path": "System.Threading.Timer/4.0.1",
|
||||
"files": [
|
||||
"System.Threading.Timer.4.0.1.nupkg.sha512",
|
||||
"System.Threading.Timer.nuspec",
|
||||
|
@ -6397,7 +6369,5 @@
|
|||
"Microsoft.CSharp >= 4.0.1",
|
||||
"NETStandard.Library >= 1.6.0"
|
||||
]
|
||||
},
|
||||
"tools": {},
|
||||
"projectFileToolGroups": {}
|
||||
}
|
||||
}
|
40
build.cmd
40
build.cmd
|
@ -1,4 +1,42 @@
|
|||
@echo off
|
||||
|
||||
pushd %~dp0
|
||||
|
||||
echo Placehold build.cmd untill we fix CI
|
||||
SETLOCAL
|
||||
SET CACHED_NUGET=%LocalAppData%\NuGet\NuGet.exe
|
||||
|
||||
IF EXIST %CACHED_NUGET% goto copynuget
|
||||
echo Downloading latest version of NuGet.exe...
|
||||
IF NOT EXIST %LocalAppData%\NuGet md %LocalAppData%\NuGet
|
||||
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "$ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest 'https://www.nuget.org/nuget.exe' -OutFile '%CACHED_NUGET%'"
|
||||
|
||||
:copynuget
|
||||
IF EXIST .nuget\nuget.exe goto restore
|
||||
md .nuget
|
||||
copy %CACHED_NUGET% .nuget\nuget.exe > nul
|
||||
|
||||
:restore
|
||||
|
||||
.nuget\NuGet.exe update -self
|
||||
|
||||
|
||||
pushd %~dp0
|
||||
|
||||
.nuget\NuGet.exe update -self
|
||||
|
||||
.nuget\NuGet.exe install FAKE -ConfigFile .nuget\Nuget.Config -OutputDirectory packages -ExcludeVersion -Version 4.16.1
|
||||
|
||||
.nuget\NuGet.exe install NUnit.Console -ConfigFile .nuget\Nuget.Config -OutputDirectory packages\FAKE -ExcludeVersion -Version 3.2.1
|
||||
.nuget\NuGet.exe install xunit.runner.console -ConfigFile .nuget\Nuget.Config -OutputDirectory packages\FAKE -ExcludeVersion -Version 2.0.0
|
||||
.nuget\NuGet.exe install NBench.Runner -OutputDirectory packages -ExcludeVersion -Version 0.3.1
|
||||
.nuget\NuGet.exe install Microsoft.SourceBrowser -OutputDirectory packages -ExcludeVersion
|
||||
|
||||
if not exist packages\SourceLink.Fake\tools\SourceLink.fsx (
|
||||
.nuget\nuget.exe install SourceLink.Fake -ConfigFile .nuget\Nuget.Config -OutputDirectory packages -ExcludeVersion
|
||||
)
|
||||
rem cls
|
||||
|
||||
set encoding=utf-8
|
||||
packages\FAKE\tools\FAKE.exe build.fsx %*
|
||||
|
||||
popd
|
||||
|
|
|
@ -0,0 +1,452 @@
|
|||
#I @"packages/FAKE/tools"
|
||||
#r "FakeLib.dll"
|
||||
#r "System.Xml.Linq"
|
||||
|
||||
open System
|
||||
open System.IO
|
||||
open System.Text
|
||||
open Fake
|
||||
open Fake.FileUtils
|
||||
open Fake.TaskRunnerHelper
|
||||
open Fake.ProcessHelper
|
||||
|
||||
cd __SOURCE_DIRECTORY__
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
// Information about the project for Nuget and Assembly info files
|
||||
//--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
let product = "Wire"
|
||||
let authors = [ "Roger Johansson" ]
|
||||
let copyright = "Copyright © 2013-2016 AsynkronIT"
|
||||
let company = "AsynkronIT"
|
||||
let description = "Binary serializer for POCO objects"
|
||||
let tags = [ "serializer" ]
|
||||
let configuration = "Release"
|
||||
let toolDir = "tools"
|
||||
let CloudCopyDir = toolDir @@ "CloudCopy"
|
||||
let AzCopyDir = toolDir @@ "AzCopy"
|
||||
|
||||
// Read release notes and version
|
||||
|
||||
let root = @".\"
|
||||
let solutionName = "Wire.sln"
|
||||
let solutionPath = root @@ solutionName
|
||||
let parsedRelease =
|
||||
File.ReadLines "RELEASE_NOTES.md"
|
||||
|> ReleaseNotesHelper.parseReleaseNotes
|
||||
|
||||
let envBuildNumber = System.Environment.GetEnvironmentVariable("BUILD_NUMBER")
|
||||
let buildNumber = if String.IsNullOrWhiteSpace(envBuildNumber) then "0" else envBuildNumber
|
||||
|
||||
let version = parsedRelease.AssemblyVersion + "." + buildNumber
|
||||
let preReleaseVersion = version + "-beta"
|
||||
|
||||
let isUnstableDocs = hasBuildParam "unstable"
|
||||
let isPreRelease = hasBuildParam "nugetprerelease"
|
||||
let release = if isPreRelease then ReleaseNotesHelper.ReleaseNotes.New(version, version + "-beta", parsedRelease.Notes) else parsedRelease
|
||||
|
||||
printfn "Assembly version: %s\nNuget version; %s\n" release.AssemblyVersion release.NugetVersion
|
||||
//--------------------------------------------------------------------------------
|
||||
// Directories
|
||||
|
||||
let binDir = "bin"
|
||||
let testOutput = FullName "TestResults"
|
||||
let perfOutput = FullName "PerfResults"
|
||||
|
||||
let nugetDir = binDir @@ "nuget"
|
||||
let workingDir = binDir @@ "build"
|
||||
let libDir = workingDir @@ @"lib\net45\"
|
||||
let nugetExe = FullName (root @@ @".nuget\NuGet.exe")
|
||||
let docDir = "bin" @@ "doc"
|
||||
let sourceBrowserDocsDir = binDir @@ "sourcebrowser"
|
||||
let msdeployPath = "C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe"
|
||||
|
||||
open Fake.RestorePackageHelper
|
||||
Target "RestorePackages" (fun _ ->
|
||||
solutionPath
|
||||
|> RestoreMSSolutionPackages (fun p ->
|
||||
{ p with
|
||||
OutputPath = root + "packages"
|
||||
Retries = 4 })
|
||||
)
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
// Clean build results
|
||||
|
||||
Target "Clean" <| fun _ ->
|
||||
DeleteDir binDir
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
// Generate AssemblyInfo files with the version for release notes
|
||||
|
||||
open AssemblyInfoFile
|
||||
|
||||
Target "AssemblyInfo" <| fun _ ->
|
||||
CreateCSharpAssemblyInfoWithConfig (root + "SharedAssemblyInfo.cs") [
|
||||
Attribute.Company company
|
||||
Attribute.Copyright copyright
|
||||
Attribute.Trademark ""
|
||||
Attribute.Version version
|
||||
Attribute.FileVersion version ] <| AssemblyInfoFileConfig(false)
|
||||
|
||||
for file in !! (root @@ "**/AssemblyInfo.fs") do
|
||||
let title =
|
||||
file
|
||||
|> Path.GetDirectoryName
|
||||
|> Path.GetDirectoryName
|
||||
|> Path.GetFileName
|
||||
|
||||
CreateFSharpAssemblyInfo file [
|
||||
Attribute.Title title
|
||||
Attribute.Product product
|
||||
Attribute.Description description
|
||||
Attribute.Copyright copyright
|
||||
Attribute.Company company
|
||||
Attribute.ComVisible false
|
||||
Attribute.CLSCompliant true
|
||||
Attribute.Version version
|
||||
Attribute.FileVersion version ]
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
// Build the solution
|
||||
|
||||
Target "Build" <| fun _ ->
|
||||
!! solutionPath
|
||||
|> MSBuildRelease "" "Rebuild"
|
||||
|> ignore
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
// Build the docs
|
||||
Target "Docs" <| fun _ ->
|
||||
!! "documentation/wiredoc.shfbproj"
|
||||
|> MSBuildRelease "" "Rebuild"
|
||||
|> ignore
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
// Push DOCs content to Windows Azure blob storage
|
||||
Target "AzureDocsDeploy" (fun _ ->
|
||||
let rec pushToAzure docDir azureUrl container azureKey trialsLeft =
|
||||
let tracing = enableProcessTracing
|
||||
enableProcessTracing <- false
|
||||
let arguments = sprintf "/Source:%s /Dest:%s /DestKey:%s /S /Y /SetContentType" (Path.GetFullPath docDir) (azureUrl @@ container) azureKey
|
||||
tracefn "Pushing docs to %s. Attempts left: %d" (azureUrl) trialsLeft
|
||||
try
|
||||
|
||||
let result = ExecProcess(fun info ->
|
||||
info.FileName <- AzCopyDir @@ "AzCopy.exe"
|
||||
info.Arguments <- arguments) (TimeSpan.FromMinutes 120.0) //takes a very long time to upload
|
||||
if result <> 0 then failwithf "Error during AzCopy.exe upload to azure."
|
||||
with exn ->
|
||||
if (trialsLeft > 0) then (pushToAzure docDir azureUrl container azureKey (trialsLeft-1))
|
||||
else raise exn
|
||||
let canPush = hasBuildParam "azureKey" && hasBuildParam "azureUrl"
|
||||
if (canPush) then
|
||||
printfn "Uploading API docs to Azure..."
|
||||
let azureUrl = getBuildParam "azureUrl"
|
||||
let azureKey = (getBuildParam "azureKey") + "==" //hack, because it looks like FAKE arg parsing chops off the "==" that gets tacked onto the end of each Azure storage key
|
||||
if(isUnstableDocs) then
|
||||
pushToAzure docDir azureUrl "unstable" azureKey 3
|
||||
if(not isUnstableDocs) then
|
||||
pushToAzure docDir azureUrl "stable" azureKey 3
|
||||
pushToAzure docDir azureUrl release.NugetVersion azureKey 3
|
||||
if(not canPush) then
|
||||
printfn "Missing required parameters to push docs to Azure. Run build HelpDocs to find out!"
|
||||
|
||||
)
|
||||
|
||||
Target "PublishDocs" DoNothing
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
// Build the SourceBrowser docs
|
||||
//--------------------------------------------------------------------------------
|
||||
Target "GenerateSourceBrowser" <| (fun _ ->
|
||||
DeleteDir sourceBrowserDocsDir
|
||||
|
||||
let htmlGeneratorPath = root @@ "packages/Microsoft.SourceBrowser/tools/HtmlGenerator.exe"
|
||||
let arguments = sprintf "/out:%s %s" sourceBrowserDocsDir solutionPath
|
||||
printfn "Using SourceBrowser: %s %s" htmlGeneratorPath arguments
|
||||
|
||||
let result = ExecProcess(fun info ->
|
||||
info.FileName <- htmlGeneratorPath
|
||||
info.Arguments <- arguments) (System.TimeSpan.FromMinutes 20.0)
|
||||
|
||||
if result <> 0 then failwithf "SourceBrowser failed. %s %s" htmlGeneratorPath arguments
|
||||
)
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
// Publish the SourceBrowser docs
|
||||
//--------------------------------------------------------------------------------
|
||||
Target "PublishSourceBrowser" <| (fun _ ->
|
||||
let canPublish = hasBuildParam "publishsettings"
|
||||
if (canPublish) then
|
||||
let sourceBrowserPublishSettingsPath = getBuildParam "publishsettings"
|
||||
let arguments = sprintf "-verb:sync -source:contentPath=\"%s\" -dest:contentPath=sourcebrowser,publishSettings=\"%s\"" (Path.GetFullPath sourceBrowserDocsDir) sourceBrowserPublishSettingsPath
|
||||
printfn "Using MSDeploy: %s %s" msdeployPath arguments
|
||||
|
||||
let result = ExecProcess(fun info ->
|
||||
info.FileName <- msdeployPath
|
||||
info.Arguments <- arguments) (System.TimeSpan.FromMinutes 30.0) //takes a long time to upload
|
||||
|
||||
if result <> 0 then failwithf "MSDeploy failed. %s %s" msdeployPath arguments
|
||||
else
|
||||
printfn "Missing required parameter to publish SourceBrowser docs. Run build HelpSourceBrowserDocs to find out!"
|
||||
)
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
// Copy the build output to bin directory
|
||||
//--------------------------------------------------------------------------------
|
||||
|
||||
Target "CopyOutput" <| fun _ ->
|
||||
|
||||
let copyOutput project =
|
||||
let src = root @@ project @@ @"bin/Release/"
|
||||
let dst = binDir @@ project
|
||||
CopyDir dst src allFiles
|
||||
[ "Wire" ]
|
||||
|> List.iter copyOutput
|
||||
|
||||
Target "BuildRelease" DoNothing
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
// Clean test output
|
||||
|
||||
Target "CleanTests" <| fun _ ->
|
||||
DeleteDir testOutput
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
// Run tests
|
||||
|
||||
open Fake.Testing
|
||||
Target "RunTests" <| fun _ ->
|
||||
let testAssemblies = !! (root @@ "**/bin/Release/Wire.Tests.dll")
|
||||
|
||||
mkdir testOutput
|
||||
let xunitToolPath = findToolInSubPath "xunit.console.exe" (root @@ "packages/xunit.runner.console*/tools")
|
||||
|
||||
printfn "Using XUnit runner: %s" xunitToolPath
|
||||
xUnit2
|
||||
(fun p -> { p with XmlOutputPath = Some (testOutput + @"\XUnitTestResults.xml"); HtmlOutputPath = Some (testOutput + @"\XUnitTestResults.HTML"); ToolPath = xunitToolPath; TimeOut = System.TimeSpan.FromMinutes 30.0; Parallel = ParallelMode.NoParallelization })
|
||||
testAssemblies
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
// Nuget targets
|
||||
//--------------------------------------------------------------------------------
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
// Clean nuget directory
|
||||
|
||||
Target "CleanNuget" <| fun _ ->
|
||||
CleanDir nugetDir
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
// Pack nuget for all projects
|
||||
// Publish to nuget.org if nugetkey is specified
|
||||
|
||||
let createNugetPackages _ =
|
||||
let removeDir dir =
|
||||
let del _ =
|
||||
DeleteDir dir
|
||||
not (directoryExists dir)
|
||||
runWithRetries del 3 |> ignore
|
||||
|
||||
let mutable dirId = 1
|
||||
|
||||
ensureDirectory nugetDir
|
||||
for nuspec in !! (root @@ "**/Wire.nuspec") do
|
||||
printfn "Creating nuget packages for %s" nuspec
|
||||
|
||||
let tempBuildDir = workingDir + dirId.ToString()
|
||||
ensureDirectory tempBuildDir
|
||||
|
||||
CleanDir tempBuildDir
|
||||
|
||||
let project = Path.GetFileNameWithoutExtension nuspec
|
||||
let projectDir = Path.GetDirectoryName nuspec
|
||||
let projectFile = (!! (projectDir @@ project + ".*sproj")) |> Seq.head
|
||||
let releaseDir = projectDir @@ @"bin\Release"
|
||||
let packages = projectDir @@ "packages.config"
|
||||
let packageDependencies = if (fileExists packages) then (getDependencies packages) else []
|
||||
let pack outputDir symbolPackage =
|
||||
NuGetHelper.NuGet
|
||||
(fun p ->
|
||||
{ p with
|
||||
Description = description
|
||||
Authors = authors
|
||||
Copyright = copyright
|
||||
Project = project
|
||||
Properties = ["Configuration", "Release"]
|
||||
ReleaseNotes = release.Notes |> String.concat "\n"
|
||||
Version = release.NugetVersion
|
||||
Tags = tags |> String.concat " "
|
||||
OutputPath = outputDir
|
||||
WorkingDir = tempBuildDir
|
||||
SymbolPackage = symbolPackage
|
||||
Dependencies = packageDependencies })
|
||||
nuspec
|
||||
|
||||
// Copy dll, pdb and xml to libdir = tempBuildDir/lib/net45/
|
||||
let tempLibDir = tempBuildDir @@ @"lib\net45\"
|
||||
ensureDirectory tempLibDir
|
||||
!! (releaseDir @@ project + ".dll")
|
||||
++ (releaseDir @@ project + ".pdb")
|
||||
++ (releaseDir @@ project + ".xml")
|
||||
++ (releaseDir @@ project + ".ExternalAnnotations.xml")
|
||||
|> CopyFiles tempLibDir
|
||||
|
||||
// Copy all src-files (.cs and .fs files) to tempBuildDir/src
|
||||
let nugetSrcDir = tempBuildDir @@ root
|
||||
// CreateDir nugetSrcDir
|
||||
|
||||
let isCs = hasExt ".cs"
|
||||
let isFs = hasExt ".fs"
|
||||
let isAssemblyInfo f = (filename f).Contains("AssemblyInfo")
|
||||
let isSrc f = (isCs f || isFs f) && not (isAssemblyInfo f)
|
||||
CopyDir nugetSrcDir projectDir isSrc
|
||||
|
||||
//Remove tempBuildDir/src/obj and tempBuildDir/src/bin
|
||||
removeDir (nugetSrcDir @@ "obj")
|
||||
removeDir (nugetSrcDir @@ "bin")
|
||||
|
||||
// Create both normal nuget package and symbols nuget package.
|
||||
// Uses the files we copied to workingDir and outputs to nugetdir
|
||||
pack nugetDir NugetSymbolPackage.Nuspec
|
||||
|
||||
dirId <- dirId + 1
|
||||
|
||||
let publishNugetPackages _ =
|
||||
let rec publishPackage url accessKey trialsLeft packageFile =
|
||||
let tracing = enableProcessTracing
|
||||
enableProcessTracing <- false
|
||||
let args p =
|
||||
match p with
|
||||
| (pack, key, "") -> sprintf "push \"%s\" %s" pack key
|
||||
| (pack, key, url) -> sprintf "push \"%s\" %s -source %s" pack key url
|
||||
|
||||
tracefn "Pushing %s Attempts left: %d" (FullName packageFile) trialsLeft
|
||||
try
|
||||
let result = ExecProcess (fun info ->
|
||||
info.FileName <- nugetExe
|
||||
info.WorkingDirectory <- (Path.GetDirectoryName (FullName packageFile))
|
||||
info.Arguments <- args (packageFile, accessKey,url)) (System.TimeSpan.FromMinutes 1.0)
|
||||
enableProcessTracing <- tracing
|
||||
if result <> 0 then failwithf "Error during NuGet symbol push. %s %s" nugetExe (args (packageFile, "key omitted",url))
|
||||
with exn ->
|
||||
if (trialsLeft > 0) then (publishPackage url accessKey (trialsLeft-1) packageFile)
|
||||
else raise exn
|
||||
let shouldPushNugetPackages = hasBuildParam "nugetkey"
|
||||
let shouldPushSymbolsPackages = (hasBuildParam "symbolspublishurl") && (hasBuildParam "symbolskey")
|
||||
|
||||
if (shouldPushNugetPackages || shouldPushSymbolsPackages) then
|
||||
printfn "Pushing nuget packages"
|
||||
if shouldPushNugetPackages then
|
||||
let normalPackages=
|
||||
!! (nugetDir @@ "*.nupkg")
|
||||
-- (nugetDir @@ "*.symbols.nupkg") |> Seq.sortBy(fun x -> x.ToLower())
|
||||
for package in normalPackages do
|
||||
try
|
||||
publishPackage (getBuildParamOrDefault "nugetpublishurl" "") (getBuildParam "nugetkey") 3 package
|
||||
with exn ->
|
||||
printfn "%s" exn.Message
|
||||
|
||||
if shouldPushSymbolsPackages then
|
||||
let symbolPackages= !! (nugetDir @@ "*.symbols.nupkg") |> Seq.sortBy(fun x -> x.ToLower())
|
||||
for package in symbolPackages do
|
||||
try
|
||||
publishPackage (getBuildParam "symbolspublishurl") (getBuildParam "symbolskey") 3 package
|
||||
with exn ->
|
||||
printfn "%s" exn.Message
|
||||
|
||||
|
||||
Target "Nuget" <| fun _ ->
|
||||
createNugetPackages()
|
||||
publishNugetPackages()
|
||||
|
||||
Target "CreateNuget" <| fun _ ->
|
||||
createNugetPackages()
|
||||
|
||||
Target "PublishNuget" <| fun _ ->
|
||||
publishNugetPackages()
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
// Help
|
||||
//--------------------------------------------------------------------------------
|
||||
|
||||
Target "Help" <| fun _ ->
|
||||
List.iter printfn [
|
||||
"usage:"
|
||||
"build [target]"
|
||||
""
|
||||
" Targets for building:"
|
||||
" * Build Builds"
|
||||
" * Nuget Create and optionally publish nugets packages"
|
||||
" * RunTests Runs tests"
|
||||
" * All Builds, run tests, creates and optionally publish nuget packages"
|
||||
""
|
||||
" Other Targets"
|
||||
" * Help Display this help"
|
||||
" * HelpNuget Display help about creating and pushing nuget packages"
|
||||
""]
|
||||
|
||||
Target "HelpNuget" <| fun _ ->
|
||||
List.iter printfn [
|
||||
"usage: "
|
||||
"build Nuget [nugetkey=<key> [nugetpublishurl=<url>]] "
|
||||
" [symbolskey=<key> symbolspublishurl=<url>] "
|
||||
" [nugetprerelease=<prefix>]"
|
||||
""
|
||||
"Arguments for Nuget target:"
|
||||
" nugetprerelease=<prefix> Creates a pre-release package."
|
||||
" The version will be version-prefix<date>"
|
||||
" Example: nugetprerelease=dev =>"
|
||||
" 0.6.3-dev1408191917"
|
||||
""
|
||||
"In order to publish a nuget package, keys must be specified."
|
||||
"If a key is not specified the nuget packages will only be created on disk"
|
||||
"After a build you can find them in bin/nuget"
|
||||
""
|
||||
"For pushing nuget packages to nuget.org and symbols to symbolsource.org"
|
||||
"you need to specify nugetkey=<key>"
|
||||
" build Nuget nugetKey=<key for nuget.org>"
|
||||
""
|
||||
"For pushing the ordinary nuget packages to another place than nuget.org specify the url"
|
||||
" nugetkey=<key> nugetpublishurl=<url> "
|
||||
""
|
||||
"For pushing symbols packages specify:"
|
||||
" symbolskey=<key> symbolspublishurl=<url> "
|
||||
""
|
||||
"Examples:"
|
||||
" build Nuget Build nuget packages to the bin/nuget folder"
|
||||
""
|
||||
" build Nuget nugetprerelease=dev Build pre-release nuget packages"
|
||||
""
|
||||
" build Nuget nugetkey=123 Build and publish to nuget.org and symbolsource.org"
|
||||
""
|
||||
" build Nuget nugetprerelease=dev nugetkey=123 nugetpublishurl=http://abc"
|
||||
" symbolskey=456 symbolspublishurl=http://xyz"
|
||||
" Build and publish pre-release nuget packages to http://abc"
|
||||
" and symbols packages to http://xyz"
|
||||
""]
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
// Target dependencies
|
||||
//--------------------------------------------------------------------------------
|
||||
|
||||
// build dependencies
|
||||
"Clean" ==> "AssemblyInfo" ==> "RestorePackages" ==> "Build" ==> "CopyOutput" ==> "BuildRelease"
|
||||
|
||||
// tests dependencies
|
||||
"CleanTests" ==> "RunTests"
|
||||
|
||||
// nuget dependencies
|
||||
"CleanNuget" ==> "CreateNuget"
|
||||
"CleanNuget" ==> "BuildRelease" ==> "Nuget"
|
||||
|
||||
Target "All" DoNothing
|
||||
"BuildRelease" ==> "All"
|
||||
"RunTests" ==> "All"
|
||||
"Nuget" ==> "All"
|
||||
|
||||
RunTargetOrDefault "Help"
|
|
@ -0,0 +1,45 @@
|
|||
#!/bin/bash
|
||||
SCRIPT_PATH="${BASH_SOURCE[0]}";
|
||||
if ([ -h "${SCRIPT_PATH}" ]) then
|
||||
while([ -h "${SCRIPT_PATH}" ]) do SCRIPT_PATH=`readlink "${SCRIPT_PATH}"`; done
|
||||
fi
|
||||
pushd . > /dev/null
|
||||
cd `dirname ${SCRIPT_PATH}` > /dev/null
|
||||
SCRIPT_PATH=`pwd`;
|
||||
popd > /dev/null
|
||||
|
||||
if ! [ -f $SCRIPT_PATH/.nuget/nuget.exe ]
|
||||
then
|
||||
wget "https://www.nuget.org/nuget.exe" -P $SCRIPT_PATH/.nuget/
|
||||
fi
|
||||
|
||||
mono $SCRIPT_PATH/.nuget/nuget.exe update -self
|
||||
|
||||
|
||||
SCRIPT_PATH="${BASH_SOURCE[0]}";
|
||||
if ([ -h "${SCRIPT_PATH}" ]) then
|
||||
while([ -h "${SCRIPT_PATH}" ]) do SCRIPT_PATH=`readlink "${SCRIPT_PATH}"`; done
|
||||
fi
|
||||
pushd . > /dev/null
|
||||
cd `dirname ${SCRIPT_PATH}` > /dev/null
|
||||
SCRIPT_PATH=`pwd`;
|
||||
popd > /dev/null
|
||||
|
||||
mono $SCRIPT_PATH/.nuget/NuGet.exe update -self
|
||||
|
||||
mono $SCRIPT_PATH/.nuget/NuGet.exe install FAKE -OutputDirectory $SCRIPT_PATH/packages -ExcludeVersion -Version 4.16.1
|
||||
|
||||
mono $SCRIPT_PATH/.nuget/NuGet.exe install xunit.runner.console -OutputDirectory $SCRIPT_PATH/packages/FAKE -ExcludeVersion -Version 2.0.0
|
||||
mono $SCRIPT_PATH/.nuget/NuGet.exe install NUnit.Console -OutputDirectory $SCRIPT_PATH/packages/FAKE -ExcludeVersion -Version 3.2.1
|
||||
|
||||
mono $SCRIPT_PATH/.nuget/NuGet.exe install NBench.Runner -OutputDirectory $SCRIPT_PATH/packages -ExcludeVersion -Version 0.3.1
|
||||
|
||||
|
||||
if ! [ -e $SCRIPT_PATH/packages/SourceLink.Fake/tools/SourceLink.fsx ] ; then
|
||||
mono $SCRIPT_PATH/.nuget/NuGet.exe install SourceLink.Fake -OutputDirectory $SCRIPT_PATH/packages -ExcludeVersion
|
||||
|
||||
fi
|
||||
|
||||
export encoding=utf-8
|
||||
|
||||
mono $SCRIPT_PATH/packages/FAKE/tools/FAKE.exe build.fsx "$@"
|
Загрузка…
Ссылка в новой задаче