1
0

tex: changes in the CI section+aux

This commit is contained in:
leo 2023-05-23 18:14:59 +02:00
parent 5761f43b15
commit e940179064
Signed by: wanderer
SSH Key Fingerprint: SHA256:Dp8+iwKHSlrMEHzE3bJnPng70I7LEsa3IJXRH/U+idQ
2 changed files with 33 additions and 21 deletions

@ -30,6 +30,9 @@ YAML & Yet Another Markup Language \\
JSON & Java Script Object Notation \\ JSON & Java Script Object Notation \\
INI & Initialization file \\ INI & Initialization file \\
CPU & Central Processing Unit \\
RAM & Random Access Memory \\
OWASP & Open Web Application Security Project \\ OWASP & Open Web Application Security Project \\
NIST & National Institute of Standards and Technology \\ NIST & National Institute of Standards and Technology \\

@ -135,7 +135,7 @@ present, security focus of the development teams, user facing signalling
(padlock colours, scary warnings). (padlock colours, scary warnings).
Browsers, sometimes used together with the word that can serve as a real tell Browsers, sometimes used together with the word that can serve as a real tell
for their specialisation - web browsers - are programs intended for for their specialisation - \emph{web} browsers - are programs intended for
\emph{browsing} of \emph{the web}. In more technical terms, browsers are \emph{browsing} of \emph{the web}. In more technical terms, browsers are
programs that facilitate (directly or via intermediary tools) domain name programs that facilitate (directly or via intermediary tools) domain name
lookups, connecting to web servers, optionally establishing a secure lookups, connecting to web servers, optionally establishing a secure
@ -456,29 +456,38 @@ writes.
The entire configuration used to run the pipelines can be found in a file named The entire configuration used to run the pipelines can be found in a file named
\texttt{.drone.yml} at the root of the main source code repository. The \texttt{.drone.yml} at the root of the main source code repository. The
workflow consists of three pipelines, which are run in parallel. Two main workflow consists of four pipelines, which are run in parallel. Two main
pipelines are defined to build the binary and run tests on \texttt{x86\_64} pipelines are defined to build the frontend assets, the \texttt{pcmt} binary
GNU/Linux targets, one for each of Arch and Alpine (version 3.17). and run tests on \texttt{x86\_64} GNU/Linux targets, one for each of Arch and
These the two pipelines were identical apart from OS-specific bits such as Alpine (version 3.17). These the two pipelines are identical apart from
installing a certain package, etc. OS-specific bits such as installing a certain package, etc. For the record,
For the record, other OS-architecture combinations were not tested. other OS-architecture combinations were not tested.
A third pipeline was defined to build a popular static analysis tool called A third pipeline contains instructions to build a popular static analysis tool
\texttt{golangci-lint} - which is sort of a meta-linter, bundling a staggering called \texttt{golangci-lint}, which is sort of a meta-linter, bundling a
amount of linters (linter is a tool that performs static code analysis and can staggering amount of linters (linter is a tool that performs static code
raise awareness of programming errors, flag potentially buggy code constructs, analysis and can raise awareness of programming errors, flag potentially buggy
or \emph{mere} stylistic errors) - from sources and then perform the analysis code constructs, or \emph{mere} stylistic errors) - from sources and then
of project's codebase using the freshly built binary. If the result of this perform the analysis of project's codebase using the freshly built binary. If
step is successful, a handful of code analysis services get pinged in the next the result of this step is successful, a handful of code analysis services get
steps to take notice of the changes to project's source code and update their pinged in the next steps to take notice of the changes to project's source code
metrics, details can be found in the main Drone configuration file and update their metrics, details can be found in the main Drone configuration
\texttt{.drone.yml} and the configuration of \texttt{golangci-lint} can be file \texttt{.drone.yml} and the configuration for the \texttt{golangci-lint}
tool itself (what linters are enabled/disabled and with whats settings) can be
found in the root of the repository in the file named \texttt{.golangci.yml}. found in the root of the repository in the file named \texttt{.golangci.yml}.
The median build time as of writing was 1 minute, which includes running all
three pipelines, and that is acceptable.
\obr{Drone CI median The fourth pipeline focuses on linting the Containerfile and building the
build}{fig:drone-median-build}{.77}{graphics/drone-median-build} container, although the latter action is only performed on feature branches,
\emph{pull requests} or \emph{tag} events.
The median build time as of writing was 1 minute, which includes running all
four pipelines, and that is acceptable. Build times might of course vary
depending on the hardware, for reference, these builds are run on a machine
equipped with a Zen 3 Ryzen 5 5600 CPU with nominal clock times, DDR4@3200MHz
RAM, a couple of PCIe Gen 4 SSDs in a mirror setup and a 400MiB downlink.
\obr{Drone CI median build
time}{fig:drone-median-build}{.77}{graphics/drone-median-build}
\n{2}{Source code repositories}\label{sec:repos} \n{2}{Source code repositories}\label{sec:repos}