You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

#### 185 lines 6.5KB Raw Permalink Blame History

 \documentclass[10pt]{beamer} \beamertemplatenavigationsymbolsempty \usepackage[utf8]{inputenc} \usepackage{default} \usepackage{graphicx} \graphicspath{{pictures/}} \usepackage[french]{babel} \usepackage[T1]{fontenc} \usetheme[numbering=fraction, progressbar=head]{metropolis} %\usecolortheme{dove} \begin{document} \begin{frame} \frametitle{Université de Technologie de Belfort-Montbéliard\\ Computer science department} \vskip 4em \begin{center} {\LARGE Custom tests and Continuous Integration of the Linux kernel}\\ \vskip 1em {\Large Free Electrons} \end{center} \vskip 4em \begin{flushright} In company mentor: Antoine \textsc{Ténart}\\ UTBM mentors: Nicolas \textsc{Lacaille} \& Rachid \textsc{Bouyekhf} \end{flushright} Florent \textsc{Jacquet}\\ {\scriptsize ST50 - P17} \end{frame} \begin{frame} \frametitle{Table of contents} \tableofcontents \end{frame} \section{The Free Electrons company} \begin{frame} \frametitle{The Free Electrons company} \begin{itemize} \item Founded in 2004 by Michael Opdenacker. \item Experts in embedded Linux, and more specifically the ARM ecosystem. \item Offers training and development for many open-source projects: the \textbf{Linux} kernel, the \textbf{Yocto Project}/\textbf{OpenEmbedded}, or \textbf{Buildroot}. \item Works for companies from all around the world, and often give talks in many international meetings such as \textbf{Embedded Linux Conference} (and \textbf{ELCe}), \textbf{Kernel Recipes}, or \textbf{FOSDEM} for example. \end{itemize} \end{frame} \section{Context of the internship} \begin{frame} \frametitle{The need for custom tests} \begin{itemize} \item \textbf{Free Electrons} already had a board farm used by \textbf{KernelCI}. \item More than 35 devices were booted every days with many versions of the \textbf{Linux} kernel. \item A boot test is great but not sufficient: USB, SATA, network, and many other components were untested. \item Many engineers are board maintainers and need specific tests. \item A tool to send manual tests with custom artifacts would quicken the driver development. \end{itemize} \end{frame} \section{Developing the test infrastructure} \subsection{The LAVA software} \begin{frame} \frametitle{The LAVA software} \begin{itemize} \item \textbf{Linaro Automation and Validation Architecture} \item \textbf{LAVA} is the piece of software that makes the farm to work. \item It receives \textbf{jobs} to run on its available \textbf{device-types} , and schedule them once a corresponding \textbf{device} becomes available. \item Once a job is finished, \textbf{LAVA} provides many ways to get some reporting about it. \item \textbf{LAVA} is a complex distributed system capable of working on multiple machines handling more than a hundred devices, from the end user web UI, to controlling the boot process of the boards! \item A big part of the job was to get familiar with \textbf{LAVA}, maintain it, improve it, update it, and integrate with its community. \end{itemize} \end{frame} \subsection{Developing the infrastructure} \begin{frame} \frametitle{Developing the infrastructure} \begin{itemize} \item The infrastructure needs different parts to work. \item \textbf{LAVA}, which was already deployed, but needed lot of rework over the months. \item Some \textbf{builders}, to craft the different artifacts that will be tested: kernels, device-trees, and root filesystems. \item A test suite to be run on the boards, to validate more components after boot. \item The Custom Test Tool (CTT) to craft the jobs and make a link between the artifacts, the devices, the test suite, and \textbf{LAVA}. \item And finally some glue between all these elements, such as some cron job for scheduled tasks, or the mail service for reporting. \end{itemize} \end{frame} \begin{frame} \frametitle{Schema} \begin{figure}[H] \centering \includegraphics[width=0.8\linewidth]{architecture.png} \caption{Architecture} \label{fig:architecture} \end{figure} \end{frame} \subsection{The Custom Test Tool} \begin{frame} \frametitle{The Custom Test Tool} \begin{itemize} \item Two operating modes: manual and automated. \item \textbf{manual}: \begin{itemize} \item A simple command line tool taking at least the \textbf{device(s)}, the \textbf{test(s)}, the \textbf{kernel image}, and the \textbf{device-tree(s)}. \item An email is sent at the end of the job to the submitter to report the results. \end{itemize} \item \textbf{automated}: \begin{itemize} \item A configuration file knows what kernel trees to launch on what boards using what test. \item A cron job runs every night to submit those tests using the latest, freshly built artifacts. \end{itemize} \end{itemize} \end{frame} \section{A word on the toolchains} \begin{frame} \frametitle{A word on the toolchains} \begin{itemize} \item Automated build using \textbf{Buildroot}. \item Make the combination between more than 30 architectures, 3 C standard libraries, and two versions of the wanted softwares.\\ This gives more than 130 different toolchains. \item Parallelize the builds with \textbf{GitlabCI}. \item Run some automated tests on the toolchains: build a full kernel+rootfs system and boot it with \textbf{Qemu}. \item Store and expose every tarballs on \url{http://toolchains.free-electrons.com}. \end{itemize} \end{frame} \section{Conclusion} \begin{frame} \frametitle{Conclusion} \begin{itemize} \item Big improvement in \textbf{Free Electrons}' CI infrastructure. \item I learned many thing about Continuous Integration itself, across two projects that used it. \item Many interactions with the open-source communities: this deepened my experience on that domain and brought me other points of view. \end{itemize} \end{frame} \begin{frame}[standout] \begin{center} \textbf{Thank you for your attention}\\ Questions?\\ Remarks?\\ \end{center} \end{frame} \end{document}