diff --git a/OctopusProjectBuilder.Uploader.Tests/OctopusProjectBuilder.Uploader.Tests.csproj b/OctopusProjectBuilder.Uploader.Tests/OctopusProjectBuilder.Uploader.Tests.csproj
index 6081b2a..508eab2 100644
--- a/OctopusProjectBuilder.Uploader.Tests/OctopusProjectBuilder.Uploader.Tests.csproj
+++ b/OctopusProjectBuilder.Uploader.Tests/OctopusProjectBuilder.Uploader.Tests.csproj
@@ -7,6 +7,11 @@
+
+ full
+ true
+
+
diff --git a/OctopusProjectBuilder.Uploader/ModelUploader.cs b/OctopusProjectBuilder.Uploader/ModelUploader.cs
index 7e0d7d3..f7057dc 100644
--- a/OctopusProjectBuilder.Uploader/ModelUploader.cs
+++ b/OctopusProjectBuilder.Uploader/ModelUploader.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Linq;
using System.Threading.Tasks;
using Octopus.Client;
using Octopus.Client.Model;
@@ -94,7 +95,9 @@ private async Task UploadProject(Project project)
{
var projectResource = await LoadResource(_repository.Projects, project.Identifier);
await projectResource.UpdateWith(project, _repository);
- await Upsert(_repository.Projects, projectResource);
+ var response = await Upsert(_repository.Projects, projectResource);
+ projectResource.DeploymentProcessId = response.DeploymentProcessId;
+ projectResource.VariableSetId = response.VariableSetId;
var deploymentProcessResource = await _repository.DeploymentProcesses.Get(projectResource.DeploymentProcessId);
await deploymentProcessResource.UpdateWith(project.DeploymentProcess, _repository);
@@ -116,11 +119,17 @@ await Update(
private async Task UploadProjectTriggers(ProjectResource projectResource, IEnumerable triggers)
{
+ var triggerList = triggers.ToList();
+ if (!triggerList.Any())
+ {
+ return;
+ }
+
var projectTriggers = await _repository.Projects.GetTriggers(projectResource);
foreach (var resource in projectTriggers.Items)
await Delete(_repository.ProjectTriggers, resource, projectResource.Name);
- foreach (var trigger in triggers)
+ foreach (var trigger in triggerList)
{
var resource = await LoadResource(name => _repository.ProjectTriggers.FindByName(projectResource, name), trigger.Identifier);
await resource.UpdateWith(trigger, projectResource.Id, _repository);
@@ -168,7 +177,7 @@ private async Task Upsert(TRepository reposit
var result = string.IsNullOrWhiteSpace(resource.Id)
? await repository.Create(resource)
: await repository.Modify(resource);
-
+
_logger.LogDebug($"Upserted {typeof(TResource).Name}: {resource.Name}");
return result;
}
diff --git a/OctopusProjectBuilder.YamlReader.Tests/OctopusProjectBuilder.YamlReader.Tests.csproj b/OctopusProjectBuilder.YamlReader.Tests/OctopusProjectBuilder.YamlReader.Tests.csproj
index f889575..52394ca 100644
--- a/OctopusProjectBuilder.YamlReader.Tests/OctopusProjectBuilder.YamlReader.Tests.csproj
+++ b/OctopusProjectBuilder.YamlReader.Tests/OctopusProjectBuilder.YamlReader.Tests.csproj
@@ -7,6 +7,11 @@
+
+ full
+ true
+
+
diff --git a/OctopusProjectBuilder.YamlReader/Model/YamlProject.cs b/OctopusProjectBuilder.YamlReader/Model/YamlProject.cs
index e9d11db..f594812 100644
--- a/OctopusProjectBuilder.YamlReader/Model/YamlProject.cs
+++ b/OctopusProjectBuilder.YamlReader/Model/YamlProject.cs
@@ -85,7 +85,7 @@ public Project ToModel()
new ElementReference(ProjectGroupRef),
VersioningStrategy?.ToModel(),
Triggers.EnsureNotNull().Select(t => t.ToModel()),
- (TenantedDeploymentMode)Enum.Parse(typeof(TenantedDeploymentMode), TenantedDeploymentMode));
+ (TenantedDeploymentMode)Enum.Parse(typeof(TenantedDeploymentMode), TenantedDeploymentMode ?? default(TenantedDeploymentMode).ToString()));
}
public static YamlProject FromModel(Project model)
diff --git a/make/Makefile.ps1 b/make/Makefile.ps1
index 829d5ee..227d96e 100644
--- a/make/Makefile.ps1
+++ b/make/Makefile.ps1
@@ -5,23 +5,37 @@ Define-Step -Name 'Update Assembly Info' -Target 'build' -Body {
Define-Step -Name 'Build' -Target 'build' -Body {
call $Context.NugetExe restore OctopusProjectBuilder.sln
- call "${env:ProgramFiles(x86)}\MSBuild\14.0\Bin\msbuild.exe" OctopusProjectBuilder.sln /t:"Clean,Build" /p:Configuration=Release /m /verbosity:m /nologo /p:TreatWarningsAsErrors=true
+ #call "${env:ProgramFiles(x86)}\MSBuild\14.0\Bin\msbuild.exe" OctopusProjectBuilder.sln /t:"Clean,Build" /p:Configuration=Release /m /verbosity:m /nologo /p:TreatWarningsAsErrors=true
+ call dotnet build --configuration Release /p:DebugType=Full
}
Define-Step -Name 'Tests' -Target 'build' -Body {
. (require 'psmake.mod.testing')
+
+ Write-ShortStatus "Preparing OpenCover"
+ $OpenCoverPath = Fetch-Package "OpenCover" "4.6.519"
+ $openCoverConsole = $OpenCoverPath + "\tools\OpenCover.Console.exe"
+
+ Write-ShortStatus "Running tests with OpenCover"
+ mkdir "reports"
+ $RunnerArgs = "test", "OctopusProjectBuilder.YamlReader.Tests", "--no-build", "-f netcoreapp2.0", "-c Release", "-l:trx;LogFileName=..\..\reports\unit-test-results1.xml"
+ call "$openCoverConsole" "-log:Error" "-showunvisited" "-oldStyle" "-register:user" "-target:dotnet.exe" "-targetargs:`"$RunnerArgs`"" "`"-filter:+[OctopusProjectBuilder*]*`"" "-coverbytest:*.Tests.dll" "-output:$PSScriptRoot\..\reports\opencover1.xml"
+
+ $RunnerArgs = "test", "OctopusProjectBuilder.Uploader.Tests", "--no-build", "-f netcoreapp2.0", "-c Release", "-l:trx;LogFileName=..\..\reports\unit-test-results2.xml"
+ call "$openCoverConsole" "-log:Error" "-showunvisited" "-oldStyle" "-register:user" "-target:dotnet.exe" "-targetargs:`"$RunnerArgs`"" "`"-filter:+[OctopusProjectBuilder*]*`"" "-coverbytest:*.Tests.dll" "-output:$PSScriptRoot\..\reports\opencover2.xml"
$tests = @()
- $tests += Define-NUnit3Tests -GroupName 'Unit Tests' -TestAssembly "*.Tests\bin\Release\*.Tests.dll"
+ $tests += Create-Object @{CoverageReports = "reports\opencover1.xml", "reports\opencover2.xml";
+ ReportDirectory = $PSScriptRoot + "\..\reports"
+ TestResult = "..\..\reports\unit-test-results.xml"}
$tests `
- | Run-Tests -EraseReportDirectory -Cover -CodeFilter '+[OctopusProjectBuilder*]* -[*.Tests*]*' -TestFilter '*.Tests.dll' `
| Generate-CoverageSummary `
- | Check-AcceptableCoverage -AcceptableCoverage 89
+ | Check-AcceptableCoverage -AcceptableCoverage 75
}
Define-Step -Name 'Documentation generation' -Target 'build' -Body {
- & OctopusProjectBuilder.DocGen\bin\Release\OctopusProjectBuilder.DocGen.exe | out-file Manual.md -Encoding utf8
+ & dotnet .\OctopusProjectBuilder.DocGen\bin\Release\netcoreapp2.0\OctopusProjectBuilder.DocGen.dll | out-file Manual.md -Encoding utf8
if ($LastExitCode -ne 0) { throw "A program execution was not successful (Exit code: $LASTEXITCODE)." }
}