You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by ni...@apache.org on 2019/08/07 22:25:59 UTC
[lucenenet] 02/42: build.ps1: Added Publish task that publishes all
test artifacts in parallel
This is an automated email from the ASF dual-hosted git repository.
nightowl888 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucenenet.git
commit 94731f0f20e6b135e288e406a4f5ffba8325ef8c
Author: Shad Storhaug <sh...@shadstorhaug.com>
AuthorDate: Sun Jul 14 07:13:19 2019 +0700
build.ps1: Added Publish task that publishes all test artifacts in parallel
---
build/build.ps1 | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 62 insertions(+), 1 deletion(-)
diff --git a/build/build.ps1 b/build/build.ps1
index 899434b..6ba4106 100644
--- a/build/build.ps1
+++ b/build/build.ps1
@@ -52,6 +52,9 @@ properties {
}
$backedUpFiles = New-Object System.Collections.ArrayList
+if ($IsWindows -eq $null) {
+ $IsWindows = $Env:OS.StartsWith('Windows')
+}
task default -depends Pack
@@ -181,6 +184,64 @@ task Pack -depends Compile -description "This task creates the NuGet packages" {
}
}
+# Loops through each framework in the TestTargetFrameworks variable and
+# publishes the project in the artifact staging directory with the framework
+# and project name as part of the folder structure.
+task Publish -depends Compile -description "This task uses dotnet publish to package the binaries with all of their dependencies so they can be run xplat" {
+ Write-Host "##teamcity[progressMessage 'Publishing']"
+ Write-Host "##vso[task.setprogress]'Publishing'"
+
+ try {
+ $frameworksToTest = $frameworks_to_test -split "\s*?,\s*?"
+
+ foreach ($framework in $frameworksToTest) {
+ $testProjects = Get-ChildItem -Path "$source_directory/**/*.csproj" -Recurse | ? { $_.Directory.Name.Contains(".Tests") } | ForEach-Object { $_.FullName }
+ foreach ($testProject in $testProjects) {
+ $projectName = [System.IO.Path]::GetFileNameWithoutExtension($testProject)
+
+ # Special case - our CLI tool only supports .NET Core 2.1
+ if ($projectName.Contains("Tests.Cli") -and (!$framework.StartsWith("netcoreapp2."))) {
+ continue
+ }
+
+ # Do this first so there is no conflict
+ $outputPath = "$publish_directory/$framework/$projectName"
+ Ensure-Directory-Exists $outputPath
+
+ $scriptBlock = {
+ param([string]$testProject, [string]$publish_directory, [string]$framework, [string]$configuration, [string]$projectName)
+ $logPath = "$publish_directory/$framework"
+ $outputPath = "$logPath/$projectName"
+ Write-Host "Publishing '$testProject' on '$framework' to '$outputPath'..."
+ # Note: Cannot use Psake Exec in background
+ dotnet publish "$testProject" --output "$outputPath" --framework "$framework" --configuration "$configuration" --no-build --verbosity Detailed /p:TestFrameworks=true > "$logPath/$projectName-dotnet-publish.log" 2> "$logPath/$projectName-dotnet-publish-error.log"
+ }
+
+ # Execute the jobs in parallel
+ Start-Job $scriptBlock -ArgumentList $testProject,$publish_directory,$framework,$configuration,$projectName
+ }
+ }
+
+ Write-Host "Executing dotnet publish of all projects in parallel. This will take a bit, please wait..."
+
+ Get-Job
+
+ # Wait for it all to complete
+ While (Get-Job -State "Running") {
+ Start-Sleep 10
+ }
+
+ # Getting the information back from the jobs (time consuming)
+ #Get-Job | Receive-Job
+
+ $success = $true
+ } finally {
+ #if ($success -ne $true) {
+ Restore-Files $backedUpFiles
+ #}
+ }
+}
+
task Test -depends InstallSDK, UpdateLocalSDKVersion, Restore -description "This task runs the tests" {
Write-Host "##teamcity[progressMessage 'Testing']"
Write-Host "Running tests..." -ForegroundColor DarkCyan
@@ -199,7 +260,7 @@ task Test -depends InstallSDK, UpdateLocalSDKVersion, Restore -description "This
foreach ($testProject in $testProjects) {
$testName = $testProject.Directory.Name
- # Special case - our CLI tool only supports .NET Core 2.0
+ # Special case - our CLI tool only supports .NET Core 2.1
if ($testName.Contains("Tests.Cli") -and (!$framework.StartsWith("netcoreapp2."))) {
continue
}