Build with dotnet

This commit is contained in:
Victor Hurdugaci 2016-01-06 13:35:29 -08:00
parent f073d0556b
commit 4a9990a83c
12 changed files with 128 additions and 150 deletions

2
.gitattributes vendored
View File

@ -48,3 +48,5 @@
*.fsproj text=auto *.fsproj text=auto
*.dbproj text=auto *.dbproj text=auto
*.sln text=auto eol=crlf *.sln text=auto eol=crlf
*.sh eol=lf

2
.gitignore vendored
View File

@ -26,3 +26,5 @@ nuget.exe
*.sln.ide *.sln.ide
project.lock.json project.lock.json
.vs .vs
.build/
.testPublish/

View File

@ -10,9 +10,11 @@ addons:
- libssl-dev - libssl-dev
- libunwind8 - libunwind8
- zlib1g - zlib1g
env:
- KOREBUILD_DNU_RESTORE_CORECLR=true
mono: mono:
- 4.0.5 - 4.0.5
os:
- linux
- osx
osx_image: xcode7.1
script: script:
- ./build.sh --quiet verify - ./build.sh verify

View File

@ -1,7 +1,7 @@
init: init:
- git config --global core.autocrlf true - git config --global core.autocrlf true
build_script: build_script:
- build.cmd --quiet verify - build.cmd verify
clone_depth: 1 clone_depth: 1
test: off test: off
deploy: off deploy: off

View File

@ -1,40 +1,40 @@
@echo off @ECHO off
cd %~dp0
SETLOCAL SETLOCAL
SET REPO_FOLDER=%~dp0
CD %REPO_FOLDER%
SET BUILD_FOLDER=.build
SET KOREBUILD_FOLDER=%BUILD_FOLDER%\KoreBuild-dotnet
SET KOREBUILD_VERSION=
SET NUGET_PATH=%BUILD_FOLDER%\NuGet.exe
SET NUGET_VERSION=latest SET NUGET_VERSION=latest
SET CACHED_NUGET=%LocalAppData%\NuGet\nuget.%NUGET_VERSION%.exe SET CACHED_NUGET=%LocalAppData%\NuGet\nuget.%NUGET_VERSION%.exe
SET BUILDCMD_KOREBUILD_VERSION=
SET BUILDCMD_DNX_VERSION=
IF EXIST %CACHED_NUGET% goto copynuget IF NOT EXIST %BUILD_FOLDER% (
echo Downloading latest version of NuGet.exe... md %BUILD_FOLDER%
IF NOT EXIST %LocalAppData%\NuGet md %LocalAppData%\NuGet
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "$ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest 'https://dist.nuget.org/win-x86-commandline/%NUGET_VERSION%/nuget.exe' -OutFile '%CACHED_NUGET%'"
:copynuget
IF EXIST .nuget\nuget.exe goto restore
md .nuget
copy %CACHED_NUGET% .nuget\nuget.exe > nul
:restore
IF EXIST packages\Sake goto getdnx
IF "%BUILDCMD_KOREBUILD_VERSION%"=="" (
.nuget\nuget.exe install KoreBuild -ExcludeVersion -o packages -nocache -pre
) ELSE (
.nuget\nuget.exe install KoreBuild -version %BUILDCMD_KOREBUILD_VERSION% -ExcludeVersion -o packages -nocache -pre
)
.nuget\NuGet.exe install Sake -ExcludeVersion -Source https://www.nuget.org/api/v2/ -Out packages
:getdnx
IF "%BUILDCMD_DNX_VERSION%"=="" (
SET BUILDCMD_DNX_VERSION=latest
)
IF "%SKIP_DNX_INSTALL%"=="" (
CALL packages\KoreBuild\build\dnvm install %BUILDCMD_DNX_VERSION% -runtime CoreCLR -arch x86 -alias default
CALL packages\KoreBuild\build\dnvm install default -runtime CLR -arch x86 -alias default
) ELSE (
CALL packages\KoreBuild\build\dnvm use default -runtime CLR -arch x86
) )
packages\Sake\tools\Sake.exe -I packages\KoreBuild\build -f makefile.shade %* IF NOT EXIST %NUGET_PATH% (
IF NOT EXIST %CACHED_NUGET% (
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://dist.nuget.org/win-x86-commandline/%NUGET_VERSION%/nuget.exe' -OutFile '%CACHED_NUGET%'"
)
copy %CACHED_NUGET% %NUGET_PATH% > nul
)
IF NOT EXIST %KOREBUILD_FOLDER% (
SET KOREBUILD_DOWNLOAD_ARGS=
IF NOT "%KOREBUILD_VERSION%"=="" (
SET KOREBUILD_DOWNLOAD_ARGS=-version %KOREBUILD_VERSION%
)
%BUILD_FOLDER%\nuget.exe install KoreBuild-dotnet -ExcludeVersion -o %BUILD_FOLDER% -nocache -pre %KOREBUILD_DOWNLOAD_ARGS%
)
"%KOREBUILD_FOLDER%\build\KoreBuild.cmd" %*

View File

@ -1,5 +1,18 @@
#!/usr/bin/env bash #!/usr/bin/env bash
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
repoFolder="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
buildFolder=.build
koreBuildFolder=$buildFolder/KoreBuild-dotnet
nugetPath=$buildFolder/nuget.exe
if test `uname` = Darwin; then if test `uname` = Darwin; then
cachedir=~/Library/Caches/KBuild cachedir=~/Library/Caches/KBuild
else else
@ -11,33 +24,25 @@ else
fi fi
mkdir -p $cachedir mkdir -p $cachedir
nugetVersion=latest nugetVersion=latest
cachePath=$cachedir/nuget.$nugetVersion.exe cacheNuget=$cachedir/nuget.$nugetVersion.exe
url=https://dist.nuget.org/win-x86-commandline/$nugetVersion/nuget.exe nugetUrl=https://dist.nuget.org/win-x86-commandline/$nugetVersion/nuget.exe
if test ! -f $cachePath; then if test ! -d $buildFolder; then
wget -O $cachePath $url 2>/dev/null || curl -o $cachePath --location $url /dev/null mkdir $buildFolder
fi fi
if test ! -e .nuget; then if test ! -f $nugetPath; then
mkdir .nuget if test ! -f $cacheNuget; then
cp $cachePath .nuget/nuget.exe wget -O $cacheNuget $nugetUrl 2>/dev/null || curl -o $cacheNuget --location $nugetUrl /dev/null
fi
cp $cacheNuget $nugetPath
fi fi
if test ! -d packages/Sake; then if test ! -d $koreBuildFolder; then
mono .nuget/nuget.exe install KoreBuild -ExcludeVersion -o packages -nocache -pre mono $nugetPath install KoreBuild-dotnet -ExcludeVersion -o $buildFolder -nocache -pre
mono .nuget/nuget.exe install Sake -ExcludeVersion -Source https://www.nuget.org/api/v2/ -Out packages
fi fi
if ! type dnvm > /dev/null 2>&1; then source $koreBuildFolder/build/KoreBuild.sh
source packages/KoreBuild/build/dnvm.sh
fi
if ! type dnx > /dev/null 2>&1 || [ -z "$SKIP_DNX_INSTALL" ]; then
dnvm install latest -runtime coreclr -alias default
dnvm install default -runtime mono -alias default
else
dnvm use default -runtime mono
fi
mono packages/Sake/tools/Sake.exe -I packages/KoreBuild/build -f makefile.shade "$@"

View File

@ -1,5 +1,3 @@
use assembly='WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
use namespace='System.IO.Packaging'
use import="Environment" use import="Environment"
var VERSION='0.1' var VERSION='0.1'
@ -9,78 +7,20 @@ var AUTHORS='Microsoft Open Technologies, Inc.'
use-standard-lifecycle use-standard-lifecycle
k-standard-goals k-standard-goals
var Configuration2='${E("Configuration")}' var Configuration_Local = '${E("Configuration")}'
var ROOT = '${Directory.GetCurrentDirectory()}' var ROOT_Local = '${Directory.GetCurrentDirectory()}'
var BUILD_DIR2 = '${Path.Combine(ROOT, "build")}' var BUILD_DIR_Local = '${Path.Combine(ROOT_Local, "build")}'
#build-compile target='compile' if='!IsWindows && !IsBuildV2 && Directory.Exists("src")' #build-compile target='compile' if='IsLinux'
@{ @{
var projectFiles = Files.Include("src/**/project.json") var projectFiles = Files.Include("src/**/project.json")
.Exclude("src/Microsoft.AspNet.DataProtection.SystemWeb/project.json") .Exclude("src/Microsoft.AspNet.DataProtection.SystemWeb/project.json")
.ToList(); .ToList();
if (ShouldRunInParallel) projectFiles.ForEach(projectFile => DotnetPack(projectFile, BUILD_DIR_Local, Configuration_Local));
{
Parallel.ForEach(projectFiles, projectFile => DnuPack(projectFile, BUILD_DIR2, Configuration2));
}
else
{
projectFiles.ForEach(projectFile => DnuPack(projectFile, BUILD_DIR2, Configuration2));
}
foreach (var nupkg in Files.Include(Path.Combine(BUILD_DIR2, "*/*.nupkg"))) foreach (var nupkg in Files.Include(Path.Combine(BUILD_DIR_Local, "*/*.nupkg")))
{ {
File.Copy(nupkg, Path.Combine(BUILD_DIR2, Path.GetFileName(nupkg)), true); File.Copy(nupkg, Path.Combine(BUILD_DIR_Local, Path.GetFileName(nupkg)), true);
}
}
#build-compile target='compile' if='!IsWindows && IsBuildV2'
@{
if (Directory.Exists("src"))
{
var projects = Files.Include("src/*")
.Exclude("src/Microsoft.AspNet.DataProtection.SystemWeb")
.ToList();
DnuPack(string.Join(";", projects), BUILD_DIR2, Configuration2);
foreach (var nupkg in Files.Include(Path.Combine(BUILD_DIR2, "*/*.nupkg")))
{
File.Copy(nupkg, Path.Combine(BUILD_DIR2, Path.GetFileName(nupkg)), true);
}
}
if (Directory.Exists("test"))
{
DnuBuild("test/*", Configuration2);
}
}
functions
@{
PackagePart CreatePartFromFile(
Package destination,
string sourceFileName,
string partUriString)
{
var partUri = PackUriHelper.CreatePartUri(new Uri(partUriString, UriKind.Relative));
var packagePart = destination.CreatePart(partUri, "application/octet", CompressionOption.Maximum);
using (var sourceStream = File.OpenRead(sourceFileName))
using (var stream = packagePart.GetStream())
{
sourceStream.CopyTo(stream);
}
return packagePart;
}
bool IsWindows
{
get
{
var p = (int)Environment.OSVersion.Platform;
return (p != 4) && (p != 6) && (p != 128);
}
}
} }
}

View File

@ -6,12 +6,21 @@
"version": "" "version": ""
}, },
"Microsoft.AspNet.Testing": "1.0.0-*", "Microsoft.AspNet.Testing": "1.0.0-*",
"xunit.runner.aspnet": "2.0.0-aspnet-*" "xunit": "2.1.0"
}, },
"frameworks": { "frameworks": {
"dnx451": { }, "dnx451": {
"dnxcore50": { } "dependencies": {
"xunit.runner.console": "2.1.0"
}
},
"dnxcore50": {
"dependencies": {
"xunit.runner.aspnet": "2.0.0-aspnet-*"
}
}
}, },
"testRunner": "xunit",
"commands": { "commands": {
"test": "xunit.runner.aspnet" "test": "xunit.runner.aspnet"
}, },

View File

@ -4,12 +4,21 @@
"Microsoft.AspNet.Cryptography.KeyDerivation": "1.0.0-*", "Microsoft.AspNet.Cryptography.KeyDerivation": "1.0.0-*",
"Microsoft.AspNet.DataProtection.Test.Shared": "", "Microsoft.AspNet.DataProtection.Test.Shared": "",
"Microsoft.AspNet.Testing": "1.0.0-*", "Microsoft.AspNet.Testing": "1.0.0-*",
"xunit.runner.aspnet": "2.0.0-aspnet-*" "xunit": "2.1.0"
}, },
"frameworks": { "frameworks": {
"dnx451": { }, "dnx451": {
"dnxcore50": { } "dependencies": {
"xunit.runner.console": "2.1.0"
}
},
"dnxcore50": {
"dependencies": {
"xunit.runner.aspnet": "2.0.0-aspnet-*"
}
}
}, },
"testRunner": "xunit",
"commands": { "commands": {
"test": "xunit.runner.aspnet" "test": "xunit.runner.aspnet"
}, },

View File

@ -3,20 +3,23 @@
"Microsoft.AspNet.Cryptography.Internal": "1.0.0-*", "Microsoft.AspNet.Cryptography.Internal": "1.0.0-*",
"Microsoft.AspNet.DataProtection.Abstractions": "1.0.0-*", "Microsoft.AspNet.DataProtection.Abstractions": "1.0.0-*",
"Microsoft.AspNet.Testing": "1.0.0-*", "Microsoft.AspNet.Testing": "1.0.0-*",
"xunit.runner.aspnet": "2.0.0-aspnet-*" "xunit": "2.1.0"
}, },
"frameworks": { "frameworks": {
"dnx451": { "dnx451": {
"dependencies": { "dependencies": {
"Moq": "4.2.1312.1622" "Moq": "4.2.1312.1622",
"xunit.runner.console": "2.1.0"
} }
}, },
"dnxcore50": { "dnxcore50": {
"dependencies": { "dependencies": {
"moq.netcore": "4.4.0-beta8" "moq.netcore": "4.4.0-beta8",
"xunit.runner.aspnet": "2.0.0-aspnet-*"
} }
} }
}, },
"testRunner": "xunit",
"commands": { "commands": {
"test": "xunit.runner.aspnet" "test": "xunit.runner.aspnet"
}, },

View File

@ -7,20 +7,23 @@
"version": "" "version": ""
}, },
"Microsoft.AspNet.Testing": "1.0.0-*", "Microsoft.AspNet.Testing": "1.0.0-*",
"xunit.runner.aspnet": "2.0.0-aspnet-*" "xunit": "2.1.0"
}, },
"frameworks": { "frameworks": {
"dnx451": { "dnx451": {
"dependencies": { "dependencies": {
"Moq": "4.2.1312.1622" "Moq": "4.2.1312.1622",
"xunit.runner.console": "2.1.0"
} }
}, },
"dnxcore50": { "dnxcore50": {
"dependencies": { "dependencies": {
"moq.netcore": "4.4.0-beta8" "moq.netcore": "4.4.0-beta8",
"xunit.runner.aspnet": "2.0.0-aspnet-*"
} }
} }
}, },
"testRunner": "xunit",
"commands": { "commands": {
"test": "xunit.runner.aspnet" "test": "xunit.runner.aspnet"
}, },

View File

@ -7,20 +7,23 @@
}, },
"Microsoft.AspNet.Testing": "1.0.0-*", "Microsoft.AspNet.Testing": "1.0.0-*",
"Microsoft.Extensions.DependencyInjection": "1.0.0-*", "Microsoft.Extensions.DependencyInjection": "1.0.0-*",
"xunit.runner.aspnet": "2.0.0-aspnet-*" "xunit": "2.1.0"
}, },
"frameworks": { "frameworks": {
"dnx451": { "dnx451": {
"dependencies": { "dependencies": {
"Moq": "4.2.1312.1622" "Moq": "4.2.1312.1622",
"xunit.runner.console": "2.1.0"
} }
}, },
"dnxcore50": { "dnxcore50": {
"dependencies": { "dependencies": {
"moq.netcore": "4.4.0-beta8" "moq.netcore": "4.4.0-beta8",
"xunit.runner.aspnet": "2.0.0-aspnet-*"
} }
} }
}, },
"testRunner": "xunit",
"commands": { "commands": {
"test": "xunit.runner.aspnet" "test": "xunit.runner.aspnet"
}, },