\documentclass{article}
\usepackage{ulem}
\usepackage{graphicx}
\usepackage{hyperref}
\pagestyle{headings}
\begin{document}
\part{Horde 6 Release \& CI Tool Design}
\section{Motivation}
Horde 4 and Horde 5 used the components tool to run unit tests, quality tools but also to build releases and snapshots.<br />
Maintaina used a modified version of the components tool to build releases both in the public repository and for non-public projects on gitlab

Having two versions of the release tool to maintain the PEAR based Horde 5 until EOL and the composer based Horde 6+ is awkward. While horde's official version of the components tool MAY be upgraded to support H6, it may as well not be needed.

The proposed design embraces github's pull request model without depending on github specific technology. It should be easy to adapt for gitlab or other technology.

\section{Deprecated / abandoned operations}
\begin{itemize}
\item package.xml and PEAR support


\item CHANGES file


\item bootstrapping a standalone CI


\end{itemize}
\section{Required operations}
\begin{itemize}
\item Generating next (major, minor, patch or alpha/beta/rc/dev) version string from current version string


\item Updating version number in relevant files


\item Building composer.json from .horde.yml


\item Keeping a statically rendered satis composer repo and phpdoc


\item Maintaining development quality data: Passed PHPUnit and PHPStan levels for different branches, PHP versions. Keeping code coverage reports


\item Inferring a yaml changelog from key worded commits and/or pull requests (still allowing developers to deal with them manually)


\item Inferring the need for a major, minor or patch release or a transition from dev to Alpha to Beta, RC, Stable from the changelog


\item Building and tagging a release


\end{itemize}
\section{Desirable operations not currently in scope}
\begin{itemize}
\item Trigger for release specific additional work like mailing list, bug tracker grooming, social media blurb


\item Rendering/updating files from WIKI content and templates


\end{itemize}
\end{document}
