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)." } }