Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Sdk/Sdk.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@
<PackageReference Include="Skyline.DataMiner.CICD.Assemblers.Automation" Version="5.0.0" />
<PackageReference Include="Skyline.DataMiner.CICD.Assemblers.Common" Version="5.0.0" />
<PackageReference Include="Skyline.DataMiner.CICD.DMApp.Common" Version="5.0.0" />
<PackageReference Include="Skyline.DataMiner.Core.AppPackageCreator" Version="3.2.0" />
<PackageReference Include="Skyline.DataMiner.Core.ArtifactDownloader" Version="3.2.0" />
<PackageReference Include="Skyline.DataMiner.Core.AppPackageCreator" Version="3.3.0" />
<PackageReference Include="Skyline.DataMiner.Core.ArtifactDownloader" Version="3.3.0" />
<PackageReference Include="Skyline.DataMiner.CICD.FileSystem" Version="1.4.0" />
<PackageReference Include="Skyline.DataMiner.CICD.Parsers.Common" Version="5.0.0" />
</ItemGroup>
Expand Down
1 change: 1 addition & 0 deletions Sdk/Sdk/Sdk.targets
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
PackageId="$(PackageId)"
PackageVersion="$(Version)"
MinimumRequiredDmVersion="$(MinimumRequiredDmVersion)"
MinimumRequiredDmWebVersion="$(MinimumRequiredDmWebVersion)"

UserSecretsId="$(UserSecretsId)"
CatalogPublishKeyName="$(CatalogPublishKeyName)"
Expand Down
42 changes: 42 additions & 0 deletions Sdk/Tasks/DmappCreation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ public class DmappCreation : Task, ICancelableTask

public string MinimumRequiredDmVersion { get; set; }

public string MinimumRequiredDmWebVersion { get; set; }

public string UserSecretsId { get; set; }

public string CatalogDefaultDownloadKeyName { get; set; }
Expand All @@ -79,6 +81,7 @@ public override bool Execute()
$"Properties - PackageId: '{PackageId}'" + Environment.NewLine +
$"Properties - PackageVersion: '{PackageVersion}'" + Environment.NewLine +
$"Properties - MinimumRequiredDmVersion: '{MinimumRequiredDmVersion}'" + Environment.NewLine +
$"Properties - MinimumRequiredDmWebVersion: '{MinimumRequiredDmWebVersion}'" + Environment.NewLine +
$"Properties - UserSecretsId: '{UserSecretsId}'" + Environment.NewLine +
$"Properties - CatalogDefaultDownloadKeyName: '{CatalogDefaultDownloadKeyName}'" + Environment.NewLine +
$"Properties - CatalogPublishKeyName: '{CatalogPublishKeyName}'";
Expand Down Expand Up @@ -697,6 +700,12 @@ private bool TryCreateAppPackageBuilder(PackageCreationData preparedData, DataMi
{
// Use default install script
appPackageBuilder = new AppPackage.AppPackageBuilder(preparedData.Project.ProjectName, CleanDmappVersion(PackageVersion), preparedData.MinimumRequiredDmVersion);

if (!String.IsNullOrWhiteSpace(preparedData.MinimumRequiredDmWebVersion))
{
appPackageBuilder.WithMinimumRequiredDataMinerWebVersion(preparedData.MinimumRequiredDmWebVersion);
}

return true;
}

Expand All @@ -708,6 +717,12 @@ private bool TryCreateAppPackageBuilder(PackageCreationData preparedData, DataMi
}

appPackageBuilder = new AppPackage.AppPackageBuilder(preparedData.Project.ProjectName, CleanDmappVersion(PackageVersion), preparedData.MinimumRequiredDmVersion, script);

if (!String.IsNullOrWhiteSpace(preparedData.MinimumRequiredDmWebVersion))
{
appPackageBuilder.WithMinimumRequiredDataMinerWebVersion(preparedData.MinimumRequiredDmWebVersion);
}

return true;
}

Expand Down Expand Up @@ -779,6 +794,29 @@ internal PackageCreationData PrepareData()
Logger.ReportWarning($"Invalid MinimumRequiredDmVersion! Defaulting to {minimumRequiredDmVersion}. Expected format: 'A.B.C.D-buildNumber'.");
}

string minimumRequiredDmWebVersion = null;

if (String.IsNullOrWhiteSpace(MinimumRequiredDmWebVersion))
{
// Nothing specified, so leave as null
}
else
{
// Expected format: 10.6.2 (CU0) — all numeric parts may have multiple digits
// Pattern: A.B.C (CUX)
var pattern = @"^\d+\.\d+\.\d+\s*\(CU\d+\)$";

if (System.Text.RegularExpressions.Regex.IsMatch(MinimumRequiredDmWebVersion, pattern))
{
minimumRequiredDmWebVersion = MinimumRequiredDmWebVersion.Trim();
}
else
{
Logger.ReportWarning(
$"Invalid MinimumRequiredDmWebVersion! Ignoring value. Expected format: 'A.B.C (CUX)'.");
}
}

// regexr.com/7gcu9
if (!Regex.IsMatch(PackageVersion, "^(\\d+\\.){2,3}\\d+(-\\w+)?$"))
{
Expand All @@ -792,6 +830,7 @@ internal PackageCreationData PrepareData()
LinkedProjects = referencedProjects,
Version = PackageVersion,
MinimumRequiredDmVersion = minimumRequiredDmVersion,
MinimumRequiredDmWebVersion = minimumRequiredDmWebVersion,
TemporaryDirectory = FileSystem.Instance.Directory.CreateTemporaryDirectory(),
};

Expand Down Expand Up @@ -875,6 +914,7 @@ private PackageCreationData PrepareDataForProject(Project project, PackageCreati
LinkedProjects = referencedProjects,
TemporaryDirectory = preparedData.TemporaryDirectory,
MinimumRequiredDmVersion = preparedData.MinimumRequiredDmVersion,
MinimumRequiredDmWebVersion = preparedData.MinimumRequiredDmWebVersion,
Version = preparedData.Version,
};
}
Expand All @@ -889,6 +929,8 @@ internal class PackageCreationData

public string MinimumRequiredDmVersion { get; set; }

public string MinimumRequiredDmWebVersion { get; set; }

public string TemporaryDirectory { get; set; }

public string CatalogDefaultDownloadToken { get; set; }
Expand Down
4 changes: 2 additions & 2 deletions SdkTests/SdkTests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
<PackageReference Include="Nito.AsyncEx.Tasks" Version="5.1.2" />
<PackageReference Include="Skyline.DataMiner.CICD.DMApp.Common" Version="5.0.0" />
<PackageReference Include="Skyline.DataMiner.CICD.Assemblers.Automation" Version="5.0.0" />
<PackageReference Include="Skyline.DataMiner.Core.AppPackageCreator" Version="3.2.0" />
<PackageReference Include="Skyline.DataMiner.Core.ArtifactDownloader" Version="3.2.0" />
<PackageReference Include="Skyline.DataMiner.Core.AppPackageCreator" Version="3.3.0" />
<PackageReference Include="Skyline.DataMiner.Core.ArtifactDownloader" Version="3.3.0" />
<PackageReference Include="Skyline.DataMiner.CICD.FileSystem" Version="1.4.0" />
<PackageReference Include="Skyline.DataMiner.CICD.Parsers.Common" Version="5.0.0" />
</ItemGroup>
Expand Down
39 changes: 39 additions & 0 deletions SdkTests/Tasks/DmappCreationTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ public void PrepareDataTest_Package1()
PackageId = "PackageProject",
CatalogDefaultDownloadKeyName = "DOWNLOAD_KEY",
MinimumRequiredDmVersion = "",
MinimumRequiredDmWebVersion = "",
PackageVersion = "1.0.0",
ProjectType = "Package",
UserSecretsId = "6b92a156-fb34-4699-9fbb-0585b2489709",
Expand Down Expand Up @@ -75,6 +76,7 @@ public void ExecuteTest_Package6()
Output = tempDirectory,
CatalogDefaultDownloadKeyName = "DOWNLOAD_KEY",
MinimumRequiredDmVersion = "",
MinimumRequiredDmWebVersion = "",
PackageVersion = "1.0.0",
ProjectType = "Package",
UserSecretsId = "6b92a156-fb34-4699-9fbb-0585b2489709",
Expand Down Expand Up @@ -218,5 +220,42 @@ string Normalize(string input) =>
FileSystem.Instance.Directory.DeleteDirectory(tempDirectory);
}
}

[TestMethod]
[DataRow("10.6.2 (CU0)")]
[DataRow("10.6.2 (CU10)")]
[DataRow("10.6.2 (CU100)")]
[DataRow("1.1.1 (CU0)")]
[DataRow("1.10.10 (CU1)")]
[DataRow("0.0.5578 (CU0)")]
public void PrepareDataTest_WithMinimumDmWebVersion_Valid(string validInput)
{
// Arrange
LogCollector logCollector = new LogCollector(false);
DmappCreation task = new DmappCreation
{
ProjectFile = FileSystem.Instance.Path.Combine(TestHelper.GetTestFilesDirectory(), "Package 1", "PackageProject", "PackageProject.csproj"),
PackageId = "PackageProject",
CatalogDefaultDownloadKeyName = "DOWNLOAD_KEY",
MinimumRequiredDmVersion = "",
MinimumRequiredDmWebVersion = validInput,
PackageVersion = "1.0.0",
ProjectType = "Package",
UserSecretsId = "6b92a156-fb34-4699-9fbb-0585b2489709",

BuildEngine = buildEngine.Object,

Logger = logCollector
};

// Act
DmappCreation.PackageCreationData result = task.PrepareData();

// Assert
errors.Should().BeEmpty();
logCollector.Logging.Should().NotContainMatch("WARNING: Invalid MinimumRequiredDmWebVersion*");
result.Should().NotBeNull();
result.MinimumRequiredDmWebVersion.Should().Be(validInput);
}
}
}
Loading