OverviewThis documents the development and deployment processes to be used by developers, engineers and architects at Quandis. Quandis uses the following tools for development and deployment:
Source ControlQuandis uses a single SVN repository for all source-controlled projects and solutions. For QBO3, the structure is:
Visual Studio SolutionsCore Solution For QBO3-based core projects, there is a qbo.Core.sln solution file found at:
All changes that apply to core QBO3 code should be made in this solution. When you are stepping through QBO3 code to learn or debug it, you should do so from this solution, as it will contain ALL of the QBO projects that you might need to debug from a core QBO3 perspective. Plugin Solutions
The images to the right are screen shots of the Amazon solution. Items to note:
Theme Solutions Themes are used to:
Since themes are used to deploy XSLT overrides, a theme should always be the last project deployed when creating or updating a website. BuildingOverview A successful build and deployment of QBO3 has a lot of moving parts. To deploy:
There are several MSBuild scripts involved when invoking qbo.Sample.proj:
We use a mix of MSBuild scripts (.proj and .target files) and Powershell scripts (.ps1 files) to automate this deployment. Developers should create an MSBuild .proj file containing: <Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Full"> <Import Project="qbo3.Core.Targets"/> <Import Project="qbo3.Mortgage.Targets"/> <Import Project="qbo3.Amazon.Targets"/> <Import Project="qbo3.Queuing.Targets"/> <Import Project="qbo3.AttachmentPlugins.Targets"/> <PropertyGroup> <Nuget>"C:\Program Files (x86)\NuGet\nuget.exe"</Nuget> <VS Condition=" '$(VS)'=='' ">14.0</VS> <Configuration Condition=" '$(Configuration)'=='' ">Debug</Configuration> <OutputRoot Condition=" '$(OutputRoot)'=='' ">$(MSBuildThisFileDirectory)..\BuildOutput\</OutputRoot> <BuildRoot Condition=" '$(BuildRoot)'=='' ">$(MSBuildThisFileDirectory)..\qbo.Core</BuildRoot> <SiteName Condition=" '$(SiteName)'==''">Default Web Site</SiteName> <PublishFolder Condition=" '$(PublishFolder)'==''">c:\inetpub\wwwroot</PublishFolder> <Server Condition=" '$(Server)'==''"></Server> <User Condition=" '$(User)'==''"></User> <Pwd Condition=" '$(Pwd)'==''"></Pwd> <BuildTarget Condition="'$(BuildTarget)'==''">Rebuild</BuildTarget> </PropertyGroup> <!-- Define BuildProperties based on web deploy or file system deploy --> <Choose> <When Condition=" '$(Server)'!='' "> <PropertyGroup> <BuildProperties>VisualStudioVersion=$(VS);PublishProfile=$(MSBuildThisFileFullPath);DeployOnBuild=true;Configuration=Debug;OutputPath=$(OutputRoot);WebPublishMethod=MSDeploy;MSDeployServiceURL=$(Server);DeployIisAppPath=Default Web Site;SkipExtraFilesOnServer=True;MSDeployPublishMethod=WMSVC;EnableMSDeployBackup=True;AllowUntrustedCertificate=True;UserName=$(User);Password=$(Pwd)</BuildProperties> </PropertyGroup> </When> <Otherwise> <PropertyGroup> <BuildProperties>VisualStudioVersion=$(VS);PublishProfile=$(MSBuildThisFileFullPath);DeployOnBuild=true;Configuration=Debug;OutputPath=$(OutputRoot);WebPublishMethod=FileSystem;PublishUrl=$(PublishFolder);SkipExtraFilesOnServer=True;</BuildProperties> </PropertyGroup> </Otherwise> </Choose> <!-- Define plugins specific to this client --> <ItemGroup> <Plugins Include="$(BuildRoot)\Plugins\Service\qbo.Service.HTTP\qbo.Service.Http.csproj"/> <!-- Other client-specific plugins --> </ItemGroup> <!-- Define theme for this client --> <ItemGroup> <Client Include="$(BuildRoot)\sls.quandis.com\sls.MortgageWeb\theme.SLS.csproj"/> </ItemGroup> <!-- Make sure developer passes required parameters --> <Target Name="Verify"> <Error Condition="$(Server) != '' and $(User) == ''" Text="User and Pwd are required parameters for web deployments."/> <Error Condition="$(Server) != '' and $(Pwd) == ''" Text="User and Pwd are required parameters for web deployments."/> </Target> <!-- Deploy everything --> <Target Name="Full"> <CallTarget Targets="Verify"/> <CallTarget Targets="Core"/> <CallTarget Targets="Mortgage"/> <CallTarget Targets="Amazon"/> <CallTarget Targets="Queuing"/> <CallTarget Targets="AttachmentPlugins"/> <MSBuild Projects="@(Plugins)" Properties="$(BuildProperties)" Targets="Build;Publish"/> <CallTarget Targets="Theme"/> </Target> <!-- Deploy just the theme --> <Target Name="Theme"> <CallTarget Targets="Verify"/> <MSBuild Projects="@(Client)" Properties="$(BuildProperties)" Targets="Build;Publish"/> </Target> </Project> Items to note:
References
Client deployments shall be done as follows:
|
QBO Training >