# Installation et configuration Packer ## Installation : ```yay -S packer``` ## Téléchargement des plugins : ```packer init NERD_Debian_Exercise.pkr.hcl``` ## Build de l'image pour virtualbox : ```packer build -only=virtualbox-iso.primary NERD_Debian_Exercise.pkr.hcl``` Un message de succès apparait à la fin du build : Build 'virtualbox-iso.primary' finished after 14 minutes 25 seconds. L'output du build est disponible dans le repertoire "build" comme définis dans la configuration : output_directory = "${local.build_directory}/packer-${local.name}-virtualbox" Il suffit alors d'import l'ovf dans virtualbox. La machine étant en NAT, pour pouvoir y accéder il faut faire du port fowarding. Port 80 et 22 à utiliser. Pour pouvoir voir le job dans notre version de jenkins, il faut mettre à jour les plugins. # Réponses : 1. When is the last time the `test_app` job ran ? On peut voir dans l'interface Jenkins que le dernier build date du : 1 avr. 2019, 14:12:12 2. When building the job again, can you describe and explain what is going differently than the previous run ? Dans blue ocean pour avoir une meilleur visualisation, on voit que l'ancien build a eu un failure au niveau d'un test qui se nomme "TestSuite.WontWork". Le nouveau build est en erreur au niveau de l'etape de build avec comme erreur : The source is not compiled in c++11 mode. Dans "test.cpp" on peut voir la condition avec la macro __cplusplus : ``` #if __cplusplus != 201103L #error The source is not compiled in c++11 mode #endif ``` Ce qui signifie que le code doit etre compilé avec la version c++11 sinon l'erreur est retourné. Documentation de la macro : (https://en.cppreference.com/w/cpp/preprocessor/replace#Predefined_macros) On peut voir qu'avec le cmake --version les version de cmake sont différentes entre les builds. (Note perso) Si le CMakeLists n'a pas changé alors il faut voir au niveau de la version GCC (ou peut etre ailleurs) pour voir un potentiellement changement. (https://gcc.gnu.org/gcc-6/changes.html ou https://gcc.gnu.org/gcc-12/changes.html) 3. Now that you have assessed the situation, make the necessary modifications to make sure the Job environment and/or Job executable behaves in the same manner as it was before. Une des soltutions est de modifier le fichier "CMakeLists.txt" en forcant la compilation en c++11. Dans mon "CMakeLists", j'ai rajouté cette ligne : ```set(CMAKE_CXX_STANDARD 11)``` (Variable récupéré dans cette documenation : https://cmake.org/cmake/help/latest/prop_tgt/CXX_STANDARD.html#prop_tgt:CXX_STANDARD) J'ai donc fais la modification que j'ai mis sur ce repertoire git : https://gitea.jarodcajna.fr/jarjar/test_app.git J'ai ensuite modifié la pipeline pour qu'elle aille récupérer mon répertoire git et qu'elle récupère la branche "main". En relancant le job, nous avons le meme resultat que l'ancien build. La modification a donc fonctionné. _Explain in a few lines the steps you took and provide a package (git repository / patch files) containing your modifications and a note explaining your changes._ 4. Describe another solution to make the Job environment and/or Job executable behave in the same manner as it was before. _Explain in a few lines and compare it against your first solution._ 5. Now that everything is running as expected, it is time to suggest a production rollout for this service. Please suggest changes to the service to ensure a secure, production-ready deployment to be accessed by a team of developers. The suggestions are not limited in scope, but should focus on security, performance and reliability. _Explain in a few lines._