56 lines
3.5 KiB
Markdown
56 lines
3.5 KiB
Markdown
# DVOP2025_Exercise
|
|
## Packer installation :
|
|
```yay -S packer```
|
|
## Download plugins :
|
|
```packer init NERD_Debian_Exercise.pkr.hcl```
|
|
## Build image for virtualbox :
|
|
```packer build -only=virtualbox-iso.primary NERD_Debian_Exercise.pkr.hcl```
|
|
A success message should appear at the end of the build:
|
|
> Build 'virtualbox-iso.primary' finished after 14 minutes 25 seconds.
|
|
|
|
The build output is in the “build” directory as defined in the configuration :
|
|
> output_directory = "${local.build_directory}/packer-${local.name}-virtualbox"
|
|
|
|
Import the ovf into virtualbox.
|
|
|
|
Since the machine is in NAT mode, fowarding ports must be used to access it.
|
|
Use ports 80 and 22.
|
|
|
|
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
|
|
```
|
|
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._
|
|
|
|
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._ |