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.
44 lines
2.4 KiB
44 lines
2.4 KiB
\subsection{Automatic deployment and roll-out}
|
|
|
|
The source code of the \textit{ESPer} project is published into a \textit{GIT} source code repository which is provided by the hackerspace.
|
|
To avoid interferences between different build environments on developers computers and roll out new versions as early as possible, the code has been integrated into a continuous integration (CI) system.
|
|
The CI, which is based on \textit{drone}\cite{drone} and provided as part of the hackerspace infrastructure, allows to execute commands on each version published into the \textit{GIT} repository.
|
|
Therefore a \textit{drone} configuration file as shown in Listing~\ref{lst:drone} has been added to the source code as \texttt{.drone.yml}.
|
|
|
|
\begin{sloppypar}
|
|
As shown in the configuration Snippet, the build environment includes some special settings.
|
|
First, the \texttt{CONFIG=maglab} option lets the build system use \texttt{Configurion.mk.maglab} instead of the default configuration file.
|
|
This configuration file is stored inside the repository, too.
|
|
To keep the WiFi password secret, it is not written down in the configuration, but must be specified in the environment.
|
|
To include secrets into a build process while allowing to keep the configuration public, \textit{drone} allows to encrypt these with a repository specific key.
|
|
Using this method, the password is stored as \texttt{.drone.sec} file inside the repository from where it is injected into the build environment.
|
|
At last, the firmware version is configured to be made out of the first 8 letters of the \textit{GIT} commit hash, which uniquely identifies a version of the source code.
|
|
\end{sloppypar}
|
|
|
|
\begin{lstlisting}[language=,
|
|
caption={The \textit{drone} configuration for the \textit{ESPer} project.},
|
|
label=lst:drone]
|
|
build:
|
|
image: maglab/sming
|
|
environment:
|
|
- CONFIG=maglab
|
|
- WIFI_PWD=$$WIFI_PWD
|
|
- VERSION=$${COMMIT:0:8}
|
|
commands:
|
|
- make clean
|
|
- make
|
|
publish:
|
|
sftp:
|
|
host: eddie.maglab.space
|
|
username: esper
|
|
files:
|
|
- dist/*
|
|
destination_path: './'
|
|
when:
|
|
branch: master
|
|
\end{lstlisting}
|
|
|
|
For deployment, only the master branch is considered.
|
|
After a successful build, all distribution files (the binary firmware files and the version files) of all devices are copied to the machine running the home automation controller software into a directory served by a HTTP server.
|
|
The used configuration file references this server as source of updates.
|
|
|