Index: DamOverall/trunk/doc/DAM - Architecture Overall/DAM - Architecture Overall.tex =================================================================== diff -u -r4658 -r4832 --- DamOverall/trunk/doc/DAM - Architecture Overall/DAM - Architecture Overall.tex (.../DAM - Architecture Overall.tex) (revision 4658) +++ DamOverall/trunk/doc/DAM - Architecture Overall/DAM - Architecture Overall.tex (.../DAM - Architecture Overall.tex) (revision 4832) @@ -393,7 +393,8 @@ %------------------------------------------------------------------------------ -\chapter{Releasing a product} \label{ProductRelease} +\chapter{Releasing a product} +\label{ProductRelease} This is a description of the steps needed to create a \ProgramName release. An external release is normally a release of a \ProgramName client (\ProgramName UI or \ProgramName Live). @@ -403,140 +404,120 @@ It is not always necessary to release all modules, but a module needs to be released, when a dependent module has been released. See \autoref{DllChecklist} for an overview of dlls. -\section{WaternetCreator} \label{ReleaseWaternetCreator} - -The following steps are needed to release the waternet creator. -\begin{itemize} - \item Create a new TeamCity Project XX.Y by copying the entire trunk project (with all sub projects). - \item create a branch XX.Y - \item Add/adapt the TeamCity configuration for the subproject to use the branch - \item Set version number in branch to XX.Y.1 - \item Adapt/Correct all externals where needed to the proper tags (instead of trunk) - \item Pin the artifacts on TeamCity with XX.Y.1 - \item Get the artifacts and update the release folder of the branch with this. - \item Create a tag XX.Y.1 - \item In the branch, reset version to XX.Y.0 - \item With the pinned artifacts, update the release folder of the trunk. -\end{itemize} - -\section{Macrostability C\# Wrapper (Deterministic Only)} \label{ReleaseMacroStabilityCSharpWrapper} - +\section{Macrostability C\# Wrapper (Deterministic Only)} This is a wrapper around the Macrostability kernel. -The following steps are needed to release this failure mechanism. +The release of this wrapper is fully described in the +\href{https://repos.deltares.nl/repos/FailureMechanisms/doc/trunk/WTI General/BOIReleaseProcedure/BOIReleaseProcedure.pdf}{BOI release procedure}. +The following releases in the following order must be performed: \begin{itemize} - \item Set version number in trunk to XX.Y.1 - \item Run the signing project - \item Copy the signed artifacts to the release directory of the trunk. - \item Pin the signed artifacts on TC with XX.Y.1 (select apply on all snapshot dependencies) - \item Create a tag XX.Y.1 - \item In the trunk, reset version to XX.Y.0 - \item Remove the unwanted pin on the trunk of \url{https://dpcbuild.deltares.nl/viewType.html?buildTypeId=VtvInstrumentarium_ApplicationSupport_MacroStabilityReliabilityTrunk} - \item Remove the unwanted pin on the trunk of \url{https://dpcbuild.deltares.nl/viewType.html?buildTypeId=VtvInstrumentarium_Kernels_Macrostability_MacroStabilityTrunk} + \item Geo Common (optional), see section 6.2 of BOI release document + \item Waternet Creator (optional), see section 6.3 of BOI release document + \item Macrostability kernel, see section 6.4 of BOI release document + \item Macrostability Reliability kernel, see section 6.5 of BOI release document + \item CSharpWrapper, see section 6.6 of BOI release document \end{itemize} -\section{WTIPiping Merged} \label{ReleaseWTIPipingMerged} +\Note{If the Geo Common are not released, then the Waternet Creator does not need to be released.} +\section{WTIPiping} This kernel is responsible for the piping failure mechanism. It is used by the \ProgramName Engine. -When required, this kernel should be released according to the steps for a BOI-release. -It is required when there is a new version of this kernel and it has been decided that DAM should use that version. -Thereafter the dll's of this release should be merged as follows: +The release of this kernel is required when: \begin{itemize} - \item In order to avoid the dll hell associated with multiple versions of the same standard dlls, the dlls that make up the wti piping dll are merged into one sigular dll with only access to the main dll methods. This way the dll hell is avoided. - \item To create the merged version, several tools are used - (see N:$\backslash$Units$\backslash$Deltares Software Centre$\backslash$Releases$\backslash$Internet Upgrades$\backslash$ILMergeGUI-master - NET 4.7 support). - First the ILMerge tool as provided by Microsoft (can also be downloaded via internet) which is used to perform the actual merging of the dlls. - This command line tool is however rather complex in its use hence the second tool, IL-Merge GUI. - This provides a simple GUI for the commandline tool, making merging simple. - \item Merge instructions: drop the required files in the assemblies dropbox at the top. - Select the main dll (in this case Deltares.WTIPiping.dll) by clicking it. - As for the options, make sure only Internalize is on and ILMerge is selected. - \item Provide a new name at the bottom and press merge. + \item there is a new version of this kernel and it has been decided that DAM should use that version. + \item the Geo Common are released in order to avoid the dll hell associated with multiple versions of the same GeoCommon dlls. \end{itemize} - \Note ILMerge is no longer supported and replaced by ILRepack. - As the latest WTIPipingMerged are not yet created with ILRepack, - this document is in line with the current release, - but should be updated for a future release. +When required, this kernel should be released according to the steps for a BOI-release described in chapter 7 of the +\href{https://repos.deltares.nl/repos/FailureMechanisms/doc/trunk/WTI General/BOIReleaseProcedure/BOIReleaseProcedure.pdf}{BOI release procedure}. -\section{StixWriter} \label{ReleaseStixWriter} +\section{StixWriter} +\label{ReleaseStixWriter} This module is responsible for creating the D-Stability output files. It is used by the \ProgramName Engine. The steps are needed to release this module can be found in \cite{StixFileWriter_ReleaseProcedure} -\section{Dam Engine} \label{ReleaseDamEngine} -This module has the following dependencies: +\section{Dam Engine} +This module has the following dependencies (see \autoref{app:DamEngine}): \begin{itemize} - \item \ProgramName Failure Mechanisms - \item StixFileWriter + \item \ProgramName Piping (dependency via lib folder) + \item WTIPiping (dependency via lib folder) + \item GeoCommon (dependency via nuget package) + \item StixFileWriter (dependency via nuget package) \end{itemize} The following steps are needed to release this module. -\begin{itemize} - \item Make sure all libraries contain the new versions (MacroStability C\# wrapper and StixFileWriter). - \item Update all File Headers for CopyRight to the current year. - \item Create a new Dam Engine TeamCity Project XX.Y by copying the entire trunk project (with all sub projects). - \item Create a branch XX.Y - \item Add/adapt the TeamCity configuration for the subproject to use the branch - \item Set version number in branch to XX.Y.1 in .$\backslash$src$\backslash$build$\backslash$Base.targets - \item Adapt/Correct all externals where needed to the proper tags (instead of trunk) - \item Make sure that in SVN signing branch, external current points to the proper branch (XX.Y) - \item Run the TeamCity Release project. - \item Run the signing project. - \item Pin the signed artifacts on TC with XX.Y.1 (select apply on all snapshot dependencies) +\begin{enumerate} + \item In the trunk, update the .$\backslash$lib$\backslash$FailureMechanisms$\backslash$WtiPiping folder with the artifacts of the latest pin of the signing WtiPiping. + \item In the trunk, update the .$\backslash$lib$\backslash$FailureMechanisms$\backslash$DamPiping folder with the artifacts of the latest pin of the signing DamPiping. + \item In the trunk, update the nuget packages of Geo Common in the solution to the latest signing release version of the package. + \item In the trunk, update the nuget packages of StixFileWriter in the solution to the latest signing release version of the package. + \item In the trunk, update all File Headers for CopyRight to the current year. + \item In the trunk, update version number in file .$\backslash$src$\backslash$build$\backslash$Base.targets to XX.YY.0. + \item Create branch DamEngine XX.Y. + \item Set version number in branch to XX.Y.1 in .$\backslash$src$\backslash$build$\backslash$Base.targets. + \item Adapt/Correct all externals where needed to the proper tags (instead of trunk). + \item Change the 'current' external in the branch ’signing’ of DAM Engine to the src folder of the new branch DAM XX.Y. + \item Create a new Dam Engine TeamCity Project XX.Y by copying the entire trunk project (with all sub projects) and adapt the TeamCity configuration for the subproject to use the branch XX.Y. + \item Run the TeamCity Dam Engine project under Dam Release. This triggers the Signing DAM Engine project. + \item Pin the signed artifacts on TC with XX.Y.1 (select apply on all snapshot dependencies). \item Get the artifacts and update the release folder of the branch with this. - \item Create a tag XX.Y.1 - \item In the branch, reset version to XX.Y.0 - \item With the pinned artifacts, update the release folder of the trunk. -\end{itemize} + \item Create a tag XX.Y.1. + \item In the branch, reset version to XX.Y.0. + \item Merge release folder from branch to trunk. +\end{enumerate} -\section{Dam UI} \label{ReleaseDamUI} -This application is dependent on the \ProgramName Engine. +\section{Dam UI} +This application is dependent on the \ProgramName Engine (see \autoref{app:DamUI}). + The following steps are needed to release this application. -\begin{itemize} - \item Make sure all libraries contain the new versions (All DSL's, DAM Engine). - \item Update all File Headers for CopyRight the current year. - \item Create a new Dam UI TeamCity Project XX.Y by copying the entire trunk project (with all sub projects). - \item create a branch XX.Y - \item Add/adapt the TeamCity configuration for the subproject to use the branch +\begin{enumerate} + \item In the trunk, update the .$\backslash$lib$\backslash$DamEngine$\backslash$ folder with the artifacts of the latest pin of the signing DamEngine. + \item In the trunk, update the .$\backslash$lib$\backslash$DSL$\backslash$ folders with the artifacts of the latest pin of the signing DSL's. + \item In the trunk, update all File Headers for CopyRight the current year. + \item In the trunk, update version number of User Manual to XX.Y. + \item Create a branch DamUI XX.Y. \item Set version number in branch to XX.Y.1 in .$\backslash$src$\backslash$build$\backslash$Base.targets \item Set version number in branch to XX.Y.1 in .$\backslash$src$\backslash$DamClientsLibrary$\backslash$build$\backslash$Base.targets - \item Adapt/Correct all externals where needed to the proper tags (instead of trunk) - \item Make sure that in SVN signing branch, external current points to the proper branch (XX.Y) - \item Run the TC Release project (this will activate/run TeamCity Signing). - \item Run the signing project (when needed). - \item Pin the signed artifacts on TC with XX.Y.1 (select apply on all snapshot dependencies) + \item Create release notes in branch. Include release notes from DSL, Macrostability, WTIPiping if they are applicable. + \item Adapt/Correct all externals where needed to the proper tags (instead of trunk). + \item Change the 'current' external in the branch ’signing’ of DAM UI to the src folder of the new branch DamUI XX.Y. + \item Create a new Dam UI TeamCity Project XX.Y by copying the entire trunk project (with all sub projects) a adapt the TeamCity configuration for the subproject to use the branch XX.Y. + \item Run the TC Release project. This triggers the Signing DAM UI project. + \item Pin the signed artifacts on TC with XX.Y.1 (select apply on all snapshot dependencies). \item Get the artifacts and update the release folder of the branch with this. Both the Dam.msi as well as DAM.zip are releasable products and should therefore be updated. - \item Create a tag XX.Y.1 - \item In the branch, reset version to XX.Y.0 - \item With the pinned artifacts, update the release folder of the trunk. - Both the Dam.msi as well as DAM.zip are releasable products and should therefore be updated. -\end{itemize} + \item When the user manual and release notes are final, set pin on the Documentation project of the branch in TeamCity (convert release notes from Word to LaTeX if needed). + \item Get the artifacts (i.e. User Manual and Release Notes) from the pinned version and commit them in the release/Documents folder of the branch. + \item Create a tag XX.Y.1. + \item In the branch, reset version to XX.Y.0. + \item Merge release folder from branch to trunk. +\end{enumerate} -\section{DamLive} \label{ReleaseDamLive} -This application is dependent on the \ProgramName Engine. \\ +\section{DamLive} +This application is dependent on the \ProgramName Engine (see \autoref{app:DamLive}). + The following steps are needed to release this application. -\begin{itemize} - \item Make sure all libraries contain the new versions (All DSL's , Authorization, DAM Engine). - \item Update all File Headers for CopyRight the current year. - \item Create a new Dam Live TeamCity Project XX.Y by copying the entire trunk project (with all sub projects). - \item create a branch XX.Y - \item Add/adapt the TeamCity configuration for the subproject to use the branch +\begin{enumerate} + \item In the trunk, update the .$\backslash$lib$\backslash$DamEngine$\backslash$ folder with the artifacts of the latest pin of the signing DamEngine. + \item In the trunk, update the .$\backslash$lib$\backslash$DSL$\backslash$ folders with the artifacts of the latest pin of the signing DSL's. + \item In the trunk, make sure lib/Authorization contains the new version. + \item In the trunk, update all File Headers for CopyRight the current year. + \item Create a branch DamLive XX.Y. \item Set version number in branch to XX.Y.1 in .$\backslash$src$\backslash$build$\backslash$Base.targets \item Set version number in branch to XX.Y.1 in .$\backslash$src$\backslash$DamClientsLibrary$\backslash$build$\backslash$Base.targets - \item Adapt/Correct all externals where needed to the proper tags (instead of trunk) - \item Make sure that in SVN signing branch, external current points to the proper branch (XX.Y) - \item Run the TC Release project (this will activate/run TeamCity Signing). - \item Run the signing project (when needed). - \item Pin the signed artifacts on TC with XX.Y.1 (select apply on all snapshot dependencies) + \item Adapt/Correct all externals where needed to the proper tags (instead of trunk). + \item Change the 'current' external in the branch ’signing’ of DAM Live to the src folder of the new branch DamLive XX.Y. + \item Create a new Dam Live TeamCity Project XX.Y by copying the entire trunk project (with all sub projects) and adapt the TeamCity configuration for the subproject to use the branch XX.Y. + \item Run the TC Release project. This triggers the Signing DAM Live project. + \item Pin the signed artifacts on TC with XX.Y.1 (select apply on all snapshot dependencies). \item Get the artifacts and update the release folder of the branch with this. \item Create a tag XX.Y.1 \item In the branch, reset version to XX.Y.0 - \item With the pinned artifacts, update the release folder of the trunk. -\end{itemize} + \item Merge release folder from branch to trunk. +\end{enumerate} %------------------------------------------------------------------------------ \chapter{Literature} \label{Literature} @@ -546,7 +527,8 @@ \appendix %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\chapter{Dll checklist} \label{DllChecklist} +\chapter{Dll checklist} +\label{DllChecklist} \section{Deltares.Geo.Common} git: Geo-Common @@ -626,6 +608,7 @@ svn: dam\textbackslash DamFailureMechanisms\textbackslash damPiping \section{DamEngine} +\label{app:DamEngine} svn: dam\textbackslash DamEngine \renewcommand{\arraystretch}{1.2} \begin{tabularx}{\textwidth}{|X|p{1.5cm}|p{4.1cm}|} \hline @@ -644,6 +627,7 @@ Note that the Deltares.Geo.Common.dll is both copied in the lib folder and collected with nuget. \section{DamUI} +\label{app:DamUI} svn: dam\textbackslash DamClients\textbackslash DamUI \renewcommand{\arraystretch}{1.2} \begin{tabularx}{\textwidth}{|X|p{1.5cm}|p{4.1cm}|} \hline @@ -668,6 +652,7 @@ Note that the Components.Persistence.Stability.Version2.dll and DGeoSuite dlls are both copied in the lib folder and collected with nuget. \section{DamLive} +\label{app:DamLive} svn: dam\textbackslash DamClients\textbackslash DamLive \renewcommand{\arraystretch}{1.2} \begin{tabularx}{\textwidth}{|X|p{1.5cm}|p{4.1cm}|} \hline