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

  1. \documentclass[10pt]{beamer}
  2. \beamertemplatenavigationsymbolsempty
  3. \usepackage[utf8]{inputenc}
  4. \usepackage{default}
  5. \usepackage{graphicx}
  6. \graphicspath{{pictures/}}
  7. \usepackage[french]{babel}
  8. \usepackage[T1]{fontenc}
  9. \usetheme[numbering=fraction, progressbar=head]{metropolis}
  10. %\usecolortheme{dove}
  11. \begin{document}
  12. \begin{frame}
  13. \frametitle{Université de Technologie de Belfort-Montbéliard\\
  14. Computer science department}
  15. \vskip 4em
  16. \begin{center}
  17. {\LARGE Custom tests and Continuous Integration of the Linux kernel}\\
  18. \vskip 1em
  19. {\Large Free Electrons}
  20. \end{center}
  21. \vskip 4em
  22. \begin{flushright}
  23. In company mentor: Antoine \textsc{Ténart}\\
  24. UTBM mentors: Nicolas \textsc{Lacaille} \& Rachid \textsc{Bouyekhf}
  25. \end{flushright}
  26. Florent \textsc{Jacquet}\\
  27. {\scriptsize ST50 - P17}
  28. \end{frame}
  29. \begin{frame}
  30. \frametitle{Table of contents}
  31. \tableofcontents
  32. \end{frame}
  33. \section{The Free Electrons company}
  34. \begin{frame}
  35. \frametitle{The Free Electrons company}
  36. \begin{itemize}
  37. \item Founded in 2004 by Michael Opdenacker.
  38. \item Experts in embedded Linux, and more specifically the ARM ecosystem.
  39. \item Offers training and development for many open-source projects: the
  40. \textbf{Linux} kernel, the \textbf{Yocto Project}/\textbf{OpenEmbedded},
  41. or \textbf{Buildroot}.
  42. \item Works for companies from all around the world, and often give talks in
  43. many international meetings such as \textbf{Embedded Linux Conference}
  44. (and \textbf{ELCe}), \textbf{Kernel Recipes}, or \textbf{FOSDEM} for
  45. example.
  46. \end{itemize}
  47. \end{frame}
  48. \section{Context of the internship}
  49. \begin{frame}
  50. \frametitle{The need for custom tests}
  51. \begin{itemize}
  52. \item \textbf{Free Electrons} already had a board farm used by \textbf{KernelCI}.
  53. \item More than 35 devices were booted every days with many versions of
  54. the \textbf{Linux} kernel.
  55. \item A boot test is great but not sufficient: USB, SATA, network, and
  56. many other components were untested.
  57. \item Many engineers are board maintainers and need specific tests.
  58. \item A tool to send manual tests with custom artifacts would quicken
  59. the driver development.
  60. \end{itemize}
  61. \end{frame}
  62. \section{Developing the test infrastructure}
  63. \subsection{The LAVA software}
  64. \begin{frame}
  65. \frametitle{The LAVA software}
  66. \begin{itemize}
  67. \item \textbf{Linaro Automation and Validation Architecture}
  68. \item \textbf{LAVA} is the piece of software that makes the farm to
  69. work.
  70. \item It receives \textbf{jobs} to run on its available
  71. \textbf{device-types} , and schedule them once a corresponding
  72. \textbf{device} becomes available.
  73. \item Once a job is finished, \textbf{LAVA} provides many ways to get
  74. some reporting about it.
  75. \item \textbf{LAVA} is a complex distributed system capable of working
  76. on multiple machines handling more than a hundred devices, from the
  77. end user web UI, to controlling the boot process of the boards!
  78. \item A big part of the job was to get familiar with \textbf{LAVA},
  79. maintain it, improve it, update it, and integrate with its
  80. community.
  81. \end{itemize}
  82. \end{frame}
  83. \subsection{Developing the infrastructure}
  84. \begin{frame}
  85. \frametitle{Developing the infrastructure}
  86. \begin{itemize}
  87. \item The infrastructure needs different parts to work.
  88. \item \textbf{LAVA}, which was already deployed, but needed lot of
  89. rework over the months.
  90. \item Some \textbf{builders}, to craft the different artifacts that will
  91. be tested: kernels, device-trees, and root filesystems.
  92. \item A test suite to be run on the boards, to validate more components
  93. after boot.
  94. \item The Custom Test Tool (CTT) to craft the jobs and make a link
  95. between the artifacts, the devices, the test suite, and
  96. \textbf{LAVA}.
  97. \item And finally some glue between all these elements, such as some
  98. cron job for scheduled tasks, or the mail service for reporting.
  99. \end{itemize}
  100. \end{frame}
  101. \begin{frame}
  102. \frametitle{Schema}
  103. \begin{figure}[H]
  104. \centering
  105. \includegraphics[width=0.8\linewidth]{architecture.png}
  106. \caption{Architecture}
  107. \label{fig:architecture}
  108. \end{figure}
  109. \end{frame}
  110. \subsection{The Custom Test Tool}
  111. \begin{frame}
  112. \frametitle{The Custom Test Tool}
  113. \begin{itemize}
  114. \item Two operating modes: manual and automated.
  115. \item \textbf{manual}:
  116. \begin{itemize}
  117. \item A simple command line tool taking at least the
  118. \textbf{device(s)}, the \textbf{test(s)}, the \textbf{kernel
  119. image}, and the \textbf{device-tree(s)}.
  120. \item An email is sent at the end of the job to the submitter to
  121. report the results.
  122. \end{itemize}
  123. \item \textbf{automated}:
  124. \begin{itemize}
  125. \item A configuration file knows what kernel trees to launch on what
  126. boards using what test.
  127. \item A cron job runs every night to submit those tests using the
  128. latest, freshly built artifacts.
  129. \end{itemize}
  130. \end{itemize}
  131. \end{frame}
  132. \section{A word on the toolchains}
  133. \begin{frame}
  134. \frametitle{A word on the toolchains}
  135. \begin{itemize}
  136. \item Automated build using \textbf{Buildroot}.
  137. \item Make the combination between more than 30 architectures, 3 C
  138. standard libraries, and two versions of the wanted softwares.\\
  139. This gives more than 130 different toolchains.
  140. \item Parallelize the builds with \textbf{GitlabCI}.
  141. \item Run some automated tests on the toolchains: build a full
  142. kernel+rootfs system and boot it with \textbf{Qemu}.
  143. \item Store and expose every tarballs on
  144. \url{}.
  145. \end{itemize}
  146. \end{frame}
  147. \section{Conclusion}
  148. \begin{frame}
  149. \frametitle{Conclusion}
  150. \begin{itemize}
  151. \item Big improvement in \textbf{Free Electrons}' CI infrastructure.
  152. \item I learned many thing about Continuous Integration itself, across
  153. two projects that used it.
  154. \item Many interactions with the open-source communities: this deepened
  155. my experience on that domain and brought me other points of view.
  156. \end{itemize}
  157. \end{frame}
  158. \begin{frame}[standout]
  159. \begin{center}
  160. \textbf{Thank you for your attention}\\
  161. Questions?\\
  162. Remarks?\\
  163. \end{center}
  164. \end{frame}
  165. \end{document}