Skip to content

Commit

Permalink
Further reorganization of build process (dnnsoftware#3236)
Browse files Browse the repository at this point in the history
* Introduce settings and add custom version nr

* Ability to create a local dev site

* Move node workspaces to root

* Reshuffling of variables in MSBuild

* Repairs

* Fix

* Allow local override of global build variables

* Only save manifests if the file is not there. This prevents overwriting in case of a failed build before.

* Ensure projects build in debug to the website path specified by the platform build settings

* Don't track vscode folder
  • Loading branch information
donker authored and mitchelsellers committed Nov 13, 2019
1 parent 213bb26 commit 0dd5bad
Show file tree
Hide file tree
Showing 80 changed files with 572 additions and 194 deletions.
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
## Ignore VS2015/Roslyn artifacts
*.sln.ide/
.vs/
.vscode/

## Ignore Webstorm artifacts
*.idea/
Expand Down Expand Up @@ -82,10 +83,17 @@ _UpgradeReport_Files/
Backup*/
UpgradeLog*.XML

# Node
node_modules/

############
## DNN
############

# Ignore local settings
Build/**/*.local.*
*.local.*

# Ignore temporary artifacts
/[Tt]emp/
/[Ww]ebsite/
Expand Down
2 changes: 1 addition & 1 deletion Build/BuildScripts/AEModule.build
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

<PropertyGroup>
<ResourceZipWorkingDirectory>$(MSBuildProjectDirectory)\Package\Resources\admin\personaBar</ResourceZipWorkingDirectory>
<WorkingDirectory>$(MSBuildProjectDirectory)\..\..\Dnn.AdminExperience</WorkingDirectory>
<WorkingDirectory>$(RootDirectory)</WorkingDirectory>
</PropertyGroup>

<Target Name="AfterBuild" DependsOnTargets="RunYarn;CopyBin;GetFiles;DebugProject;Package"></Target>
Expand Down
2 changes: 1 addition & 1 deletion Build/BuildScripts/AEPackage.targets
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
<Output TaskParameter="Include" ItemName="OutputContent" />
</CreateItem>
<Zip Files="@(OutputContent)" WorkingDirectory="$(MSBuildProjectDirectory)\Package" ZipFileName="$(PackageName)_$(Version)_Install.$(Extension)" />
<Copy SourceFiles="$(MSBuildProjectDirectory)\$(PackageName)_$(Version)_Install.$(Extension)" DestinationFolder="$(WebsiteInstallPath)" />
<Copy SourceFiles="$(MSBuildProjectDirectory)\$(PackageName)_$(Version)_Install.$(Extension)" DestinationFolder="$(InstallPath)" />
<Delete Files="$(MSBuildProjectDirectory)\$(PackageName)_$(Version)_Install.$(Extension)" />
<RemoveDir Directories ="$(MSBuildProjectDirectory)\Package" ContinueOnError="WarnAndContinue" />
</Target>
Expand Down
2 changes: 0 additions & 2 deletions Build/BuildScripts/Module.build
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\packages\Yarn.MSBuild.1.16.0\build\Yarn.MSBuild.props" Condition="Exists('..\..\packages\Yarn.MSBuild.1.16.0\build\Yarn.MSBuild.props')" />
<Import Project="..\..\packages\Yarn.MSBuild.1.16.0\build\Yarn.MSBuild.targets" Condition="Exists('..\..\packages\Yarn.MSBuild.1.16.0\build\Yarn.MSBuild.targets')" />
<Target Name="AfterBuild" DependsOnTargets="CopyBin;GetFiles;UpdateFiles;DebugProject;Package">
</Target>
<Target Name="GetFiles">
Expand Down
2 changes: 1 addition & 1 deletion Build/BuildScripts/Package.targets
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
<Output TaskParameter="Include" ItemName="OutputContent" />
</CreateItem>
<Zip Files="@(OutputContent)" WorkingDirectory="$(MSBuildProjectDirectory)\Package" ZipFileName="$(PackageName)_$(Version)_Install.$(Extension)" />
<Copy SourceFiles="$(MSBuildProjectDirectory)\$(PackageName)_$(Version)_Install.$(Extension)" DestinationFolder="$(WebsiteInstallPath)" />
<Copy SourceFiles="$(MSBuildProjectDirectory)\$(PackageName)_$(Version)_Install.$(Extension)" DestinationFolder="$(InstallPath)" />
<Delete Files="$(MSBuildProjectDirectory)\$(PackageName)_$(Version)_Install.$(Extension)" />
<RemoveDir Directories ="$(MSBuildProjectDirectory)\Package" ContinueOnError="WarnAndContinue" />
</Target>
Expand Down
50 changes: 50 additions & 0 deletions Build/Cake/database.cake
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
Task("ResetDatabase")
.Does(() =>
{
var script = ReplaceScriptVariables(LoadScript("db-connections-drop"));
ExecuteScript(script);
script = ReplaceScriptVariables(LoadScript("create-db"));
ExecuteScript(script);
if (Settings.DnnSqlUsername != "") {
script = ReplaceScriptVariables(LoadScript("add-db-user"));
ExecuteScript(script);
}
});

public const string ScriptsPath = @".\Build\Cake\sql\";

public string LoadScript(string scriptName) {
var script = scriptName + ".local.sql";
if (!System.IO.File.Exists(ScriptsPath + script)) {
script = scriptName + ".sql";
}
return Utilities.ReadFile(ScriptsPath + script);
}

public string ReplaceScriptVariables(string script) {
return script
.Replace("{DBName}", Settings.DnnDatabaseName)
.Replace("{DBPath}", Settings.DatabasePath)
.Replace("{DBLogin}", Settings.DnnSqlUsername);
}

public bool ExecuteScript(string ScriptStatement)
{
try
{
using (var connection = new System.Data.SqlClient.SqlConnection(Settings.SaConnectionString))
{
connection.Open();
foreach (var cmd in ScriptStatement.Split(new string[] {"\r\nGO\r\n"}, StringSplitOptions.RemoveEmptyEntries)) {
var command = new System.Data.SqlClient.SqlCommand(cmd, connection);
command.ExecuteNonQuery();
}
connection.Close();
}
}
catch (Exception err){
Error(err);
return false;
}
return true;
}
36 changes: 36 additions & 0 deletions Build/Cake/devsite.cake
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
Task("ResetDevSite")
.IsDependentOn("ResetDatabase")
.IsDependentOn("BackupManifests")
.IsDependentOn("PreparePackaging")
.IsDependentOn("OtherPackages")
.IsDependentOn("ExternalExtensions")
.IsDependentOn("CopyToDevSite")
.IsDependentOn("CopyWebConfigToDevSite")
.IsDependentOn("RestoreManifests")
.Does(() =>
{
});

Task("CopyToDevSite")
.Does(() => {
CleanDirectory(Settings.WebsitePath);
var files = GetFilesByPatterns(websiteFolder, new string[] {"**/*"}, packagingPatterns.installExclude);
files.Add(GetFilesByPatterns(websiteFolder, packagingPatterns.installInclude));
Information("Copying {0} files to {1}", files.Count, Settings.WebsitePath);
CopyFiles(files, Settings.WebsitePath, true);
});

Task("CopyWebConfigToDevSite")
.Does(() => {
var conf = Utilities.ReadFile("./Website/web.config");
var transFile = "./Build/Cake/webconfig-transform.local.xsl";
if (!FileExists(transFile)) transFile = "./Build/Cake/webconfig-transform.xsl";
var trans = Utilities.ReadFile(transFile);
trans = trans
.Replace("{ConnectionString}", Settings.DnnConnectionString)
.Replace("{DbOwner}", Settings.DbOwner)
.Replace("{ObjectQualifier}", Settings.ObjectQualifier);
var res = XmlTransform(trans, conf);
var webConfig = File(System.IO.Path.Combine(Settings.WebsitePath, "web.config"));
FileWriteText(webConfig, res);
});
34 changes: 34 additions & 0 deletions Build/Cake/settings.cake
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
public class LocalSettings {
public string WebsitePath {get; set;} = "";
public string WebsiteUrl {get; set;} = "";
public string SaConnectionString {get; set;} = "server=(local);Trusted_Connection=True;";
public string DnnConnectionString {get; set;} = "";
public string DbOwner {get; set;} = "dbo";
public string ObjectQualifier {get; set;} = "";
public string DnnDatabaseName {get; set;} = "Dnn_Platform";
public string DnnSqlUsername {get; set;} = "";
public string DatabasePath {get; set;} = "";
public string Version {get; set;} = "auto";
}

LocalSettings Settings;

public void LoadSettings() {
var settingsFile = "settings.local.json";
if (System.IO.File.Exists(settingsFile)) {
Settings = Newtonsoft.Json.JsonConvert.DeserializeObject<LocalSettings>(Utilities.ReadFile(settingsFile));
} else {
Settings = new LocalSettings();
}
using (var sw = new System.IO.StreamWriter(settingsFile)) {
sw.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(Settings, Newtonsoft.Json.Formatting.Indented));
}
}

LoadSettings();

Task("CreateSettings")
.Does(() =>
{
// Doesn't need to do anything as it's done automatically
});
8 changes: 8 additions & 0 deletions Build/Cake/sql/add-db-user.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
USE [{DBName}]
GO
IF NOT EXISTS (SELECT * FROM sys.database_principals p INNER JOIN sys.server_principals sp ON sp.sid=p.sid WHERE sp.[name]='{DBLogin}' AND sp.[type]='S')
BEGIN
CREATE USER [DNN Connection] FOR LOGIN [{DBLogin}];
EXEC sp_addrolemember N'db_owner', N'DNN Connection';
END
GO
11 changes: 11 additions & 0 deletions Build/Cake/sql/create-db.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
IF db_id('{DBName}') IS NOT NULL DROP DATABASE {DBName};
GO

CREATE DATABASE [{DBName}] ON PRIMARY
( NAME = N'{DBName}', FILENAME = N'{DBPath}\{DBName}.mdf')
LOG ON
( NAME = N'{DBName}_log', FILENAME = N'{DBPath}\{DBName}_log.ldf')
GO

EXEC dbo.sp_dbcmptlevel @dbname=N'{DBName}', @new_cmptlevel=100
GO
15 changes: 15 additions & 0 deletions Build/Cake/sql/db-connections-drop.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
USE master

DECLARE @DatabaseName nvarchar(50)
SET @DatabaseName = N'{DBName}'

DECLARE @SQL varchar(max)
SET @SQL = ''

SELECT @SQL = @SQL + 'Kill ' + Convert(varchar, SPId) + ';'
FROM MASTER..SysProcesses
WHERE DBId = DB_ID(@DatabaseName) AND SPId <> @@SPId

EXEC(@SQL)
GO

26 changes: 21 additions & 5 deletions Build/Cake/version.cake
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

GitVersion version;
var buildId = EnvironmentVariable("BUILD_BUILDID") ?? "0";

Expand All @@ -10,10 +9,27 @@ Task("BuildServerSetVersion")

Task("GitVersion")
.Does(() => {
version = GitVersion(new GitVersionSettings {
UpdateAssemblyInfo = true,
UpdateAssemblyInfoFilePath = @"SolutionInfo.cs"
});
Information("Local Settings Version is : " + Settings.Version);
if (Settings.Version == "auto") {
version = GitVersion(new GitVersionSettings {
UpdateAssemblyInfo = true,
UpdateAssemblyInfoFilePath = @"SolutionInfo.cs"
});
Information(Newtonsoft.Json.JsonConvert.SerializeObject(version));
} else {
version = new GitVersion();
var v = new System.Version(Settings.Version);
version.AssemblySemFileVer = Settings.Version.ToString();
version.Major = v.Major;
version.Minor = v.Minor;
version.Patch = v.Build;
version.Patch = v.Revision;
version.FullSemVer = v.ToString();
version.InformationalVersion = v.ToString() + "-custom";
FileAppendText("SolutionInfo.cs", string.Format("[assembly: AssemblyVersion(\"{0}\")]\r\n", v.ToString(3)));
FileAppendText("SolutionInfo.cs", string.Format("[assembly: AssemblyFileVersion(\"{0}\")]\r\n", version.FullSemVer));
FileAppendText("SolutionInfo.cs", string.Format("[assembly: AssemblyInformationalVersion(\"{0}\")]\r\n", version.InformationalVersion));
}
Information("AssemblySemFileVer : " + version.AssemblySemFileVer);
Information("Manifests Version String : " + $"{version.Major.ToString("00")}.{version.Minor.ToString("00")}.{version.Patch.ToString("00")}");
Information("The full sevVer is : " + version.FullSemVer);
Expand Down
17 changes: 17 additions & 0 deletions Build/Cake/webconfig-transform.xsl
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="connectionStrings">
<connectionStrings>
<add name="SiteSqlServer" connectionString="{ConnectionString}" providerName="System.Data.SqlClient" />
</connectionStrings>
</xsl:template>
<xsl:template match="add[@name='SqlDataProvider']">
<add name="SqlDataProvider" type="DotNetNuke.Data.SqlDataProvider, DotNetNuke" connectionStringName="SiteSqlServer" upgradeConnectionString="" providerPath="~\Providers\DataProviders\SqlDataProvider\" objectQualifier="{ObjectQualifier}" databaseOwner="{DbOwner}" />
</xsl:template>
</xsl:stylesheet>
7 changes: 6 additions & 1 deletion DNN Platform/Admin Modules/Dnn.Modules.Console/Module.build
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project ToolsVersion="4.0" DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<RootDirectory>$(MSBuildProjectDirectory)\..\..\..</RootDirectory>
</PropertyGroup>
<Import Project="..\..\..\DNN_Platform.build" />
<PropertyGroup>
<Extension>zip</Extension>
<DNNFileName>dnn_Console</DNNFileName>
<PackageName>DNNCE_Console</PackageName>
<ModuleFolderName>$(WebsitePath)\DesktopModules\Admin\Console</ModuleFolderName>
<InstallPath>$(WebsiteInstallPath)\Module</InstallPath>
</PropertyGroup>
<Import Project="$(BuildScriptsPath)\Package.Targets" />
<Import Project="$(BuildScriptsPath)\Module.Build"/>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project ToolsVersion="4.0" DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<RootDirectory>$(MSBuildProjectDirectory)\..\..\..</RootDirectory>
</PropertyGroup>
<Import Project="..\..\..\DNN_Platform.build" />
<PropertyGroup>
<Extension>zip</Extension>
<DNNFileName>dnn_ModuleCreator</DNNFileName>
<PackageName>DNNCE_ModuleCreator</PackageName>
<ModuleFolderName>$(WebsitePath)\DesktopModules\Admin\ModuleCreator</ModuleFolderName>
<InstallPath>$(WebsiteInstallPath)\Module</InstallPath>
</PropertyGroup>
<Import Project="$(BuildScriptsPath)\Package.Targets" />
<Import Project="$(BuildScriptsPath)\Module.build" />
Expand Down
7 changes: 6 additions & 1 deletion DNN Platform/Connectors/Azure/Module.build
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project ToolsVersion="4.0" DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<RootDirectory>$(MSBuildProjectDirectory)\..\..\..</RootDirectory>
</PropertyGroup>
<Import Project="..\..\..\DNN_Platform.build" />
<PropertyGroup>
<Extension>zip</Extension>
<DNNFileName>AzureConnector</DNNFileName>
<PackageName>DNNCE_AzureConnector</PackageName>
<ModuleFolderName>$(WebsitePath)\DesktopModules\Connectors\Azure</ModuleFolderName>
<InstallPath>$(WebsiteInstallPath)\Module</InstallPath>
</PropertyGroup>
<Import Project="$(BuildScriptsPath)\Package.Targets" />
<Import Project="$(BuildScriptsPath)\Module.Build"/>
Expand Down
7 changes: 6 additions & 1 deletion DNN Platform/Connectors/GoogleAnalytics/Module.build
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project ToolsVersion="4.0" DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<RootDirectory>$(MSBuildProjectDirectory)\..\..\..</RootDirectory>
</PropertyGroup>
<Import Project="..\..\..\DNN_Platform.build" />
<PropertyGroup>
<Extension>zip</Extension>
<DNNFileName>GoogleAnalyticsConnector</DNNFileName>
<PackageName>GoogleAnalyticsConnector</PackageName>
<ModuleFolderName>$(WebsitePath)\DesktopModules\Connectors\GoogleAnalytics</ModuleFolderName>
<InstallPath>$(WebsiteInstallPath)\Module</InstallPath>
</PropertyGroup>
<Import Project="$(BuildScriptsPath)\Package.Targets" />
<Import Project="$(BuildScriptsPath)\Module.Build"/>
Expand Down
8 changes: 5 additions & 3 deletions DNN Platform/Dnn.AuthServices.Jwt/Library.build
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<RootDirectory>$(MSBuildProjectDirectory)\..\..</RootDirectory>
</PropertyGroup>
<Import Project="..\..\DNN_Platform.build" />
<PropertyGroup>
<Extension>resources</Extension>
<DNNFileName>Dnn.Jwt</DNNFileName>
<PackageName>DnnJwtAuth</PackageName>
<BuildScriptsPath>$(MSBuildProjectDirectory)\..\..\Build\BuildScripts</BuildScriptsPath>
<WebsitePath>$(MSBuildProjectDirectory)\..\..\Website</WebsitePath>
<WebsiteInstallPath>$(WebsitePath)\Install\Provider</WebsiteInstallPath>
<ModuleFolderName>$(WebsitePath)\DesktopModules\AuthenticationServices\JWTAuth</ModuleFolderName>
<InstallPath>$(WebsiteInstallPath)\Provider</InstallPath>
</PropertyGroup>
<Import Project="$(BuildScriptsPath)\Package.Targets" />
<Target Name="AfterBuild" DependsOnTargets="CopyBin;Package" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<RootDirectory>$(MSBuildProjectDirectory)\..\..</RootDirectory>
</PropertyGroup>
<Import Project="..\..\DNN_Platform.build" />

<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
Expand All @@ -12,7 +17,7 @@
</ItemGroup>

<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="XCOPY &quot;$(ProjectDir)bin\$(ConfigurationName)\netstandard2.0\DotNetNuke.Abstractions*&quot; &quot;..\..\Website\bin&quot; /S /Y" />
<Exec Command="XCOPY &quot;$(ProjectDir)bin\$(ConfigurationName)\netstandard2.0\DotNetNuke.Abstractions*&quot; &quot;$(WebsitePath)\bin&quot; /S /Y" />
</Target>

</Project>
Loading

0 comments on commit 0dd5bad

Please sign in to comment.