Traduction et idée question 3
This commit is contained in:
parent
63ec323ef1
commit
8b4b51b9ef
63
commands.md
63
commands.md
@ -1,44 +1,49 @@
|
||||
# Installation et configuration Packer
|
||||
## Installation :
|
||||
# DVOP2025_Exercise
|
||||
## Packer installation :
|
||||
```yay -S packer```
|
||||
## Téléchargement des plugins :
|
||||
## Download plugins :
|
||||
```packer init NERD_Debian_Exercise.pkr.hcl```
|
||||
## Build de l'image pour virtualbox :
|
||||
## Build image for 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.
|
||||
A success message should appear at the end of the build:
|
||||
> Build 'virtualbox-iso.primary' finished after 14 minutes 25 seconds.
|
||||
|
||||
La machine étant en NAT, pour pouvoir y accéder il faut faire du port fowarding.
|
||||
Port 80 et 22 à utiliser.
|
||||
The build output is in the “build” directory as defined in the configuration :
|
||||
> output_directory = "${local.build_directory}/packer-${local.name}-virtualbox"
|
||||
|
||||
Pour pouvoir voir le job dans notre version de jenkins, il faut mettre à jour les plugins.
|
||||
Import the ovf into virtualbox.
|
||||
|
||||
# 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
|
||||
Since the machine is in NAT mode, fowarding ports must be used to access it.
|
||||
Use ports 80 and 22.
|
||||
|
||||
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 :
|
||||
To see the job in our version of jenkins, we need to update the Jenkins plugins.
|
||||
|
||||
# Answers :
|
||||
**1. When is the last time the `test_app` job ran ?**
|
||||
We can see in the Jenkins interface that the last build date is: Apr 1, 2019, 14:12:12
|
||||
|
||||
**2. When building the job again, can you describe and explain what is going differently than the previous run ?**
|
||||
In blue ocean, for a better visualization, we see that the old build has failed a test called “TestSuite.WontWork”.
|
||||
The new build has an error in the build step with the error :
|
||||
> The source is not compiled in c++11 mode.
|
||||
|
||||
In the file “test.cpp” you can see the condition with the 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é.
|
||||
This means that the code must be compiled with the c++11 version, otherwise the error is returned.
|
||||
Macro documentation : (https://en.cppreference.com/w/cpp/preprocessor/replace#Predefined_macros)
|
||||
We can see that with cmake --version, cmake versions are different between builds.
|
||||
(à delete) 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) ou alors le problème vient aussi d'ici : set(CMAKE_CXX_STANDARD_REQUIRED True)
|
||||
|
||||
**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.**
|
||||
One solution is to modify the “CMakeLists.txt” file by forcing compilation in c++11.
|
||||
In my “CMakeLists”, i'have added this line : ```set(CMAKE_CXX_STANDARD 11)``` (Variable retrieved from this documentation : https://cmake.org/cmake/help/latest/prop_tgt/CXX_STANDARD.html#prop_tgt:CXX_STANDARD)
|
||||
So i made the modification and put it on this public git directory : https://gitea.jarodcajna.fr/jarjar/test_app
|
||||
Then i modified the pipeline to retrieve my git repository and the “main” branch.
|
||||
When i restarted the job, i got the same result as the old build. So the modification worked.
|
||||
|
||||
_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._
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user