Réponses aux questions
Elles sont également dans le fichier README.md. Elles ont simplement été copiées ici pour les regroupées comme demandé dans la donnée. Les parties sans questions (exemple 1A) ne figurent pas ici.
Les étapes sont les "puces" dans la partie steps
- Checkout : récupère le code source du projet
- Set up Python : installe la version de python indiquée dans le
yml
- Install dependencies : installe les dépendances du projet (définies dans le
requirements.txt
) - Lint with flake8 : linter pour vérifier la qualité du code
- Test with pytest : execute les tests unitaires (CF TP1)
Question 2 - Une étape est définie au minimum par 2 éléments, lesquels sont-ils et à quoi servent-ils ?
name
: nom de l'étaperun
: commande(s) à exécuter
Permet de transmettre des paramètres à l'étape.
Question 1 - Sur l’onglet Summary d’une analyse de code, SonarCloud fournit 4 indicateurs. Quels sont-ils et quelles sont leurs utilités ?
Indicateurs | Utilité |
---|---|
Bugs | Nombre de bugs qui ont été détectés dans notre code |
Code Smells | Nombre de mauvaises pratiques |
Vulnerabilities | Nombre de vulnérabilités (failles de sécurité) |
Security Hotspots | Nombre de risque de volnérabilité |
Il s'agit d'un ensemble de conditions booléennes.
Cela permet de savoir si le projet est conforme aux standards de qualité et prêt à être déployé au public.
Question 1 - Quelle est la différence entre les sections New code et Overall Code dans l’onglet Summary ?
New code
est le code qui a été ajouté depuis la dernière analyse.
Overall Code
est le code total du projet.
On peut voir qu'il y a 3 "code smells" (maintenabilité).
En regardant en détail, on a :
- 2x des paramètres de fonctions qui ne sont pas utilisés
- 1x du code en double (les méthodes
spend_money
etspend_cash
ont le même code)
On peut voir qu'il y a 1 "security hotspot".
En regardant en détail, on peut voir que l'erreur est dûe à l'utilisation de "root" pour l'image python.
Il créé un environnement virtuel, installe les dépendances puis lance les tests avec pytest
.
Il créer une image docker avec Kaniko.
Installe Twine (permettant d'enregistrer des Package Python à PyPI
(Python Package Index
) par exemple) et crée un wheel Python.
Question 4 - Les jobs s’exécutent-ils dans le même ordre que défini dans le fichier ? Sinon, pourquoi ?
Indice: Demandez-vous comment on définit l’ordre d’exécution des jobs en Gitlab CI/CD.
Dans le fichier l'ordre "visuel" est "pytest -> image-creation -> package-creation".
Par contre, les jobs sont executés en parallèle en fonction de leur "stage". Il est possible de créer des dépendances (instruction needs
) entre les jobs pour spécifier l'ordre.
Ici nous avons 2 stages : build
et test
.
Question 5 - Le stage 2 génère une image Docker. Où est-elle stockée et comment pouvez-vous la retrouver ?
Elle est stockés dans le projet GitLab. On la retrouve dans l'onglet "Packages and registries" > "Container Registry"
(https://gitlab-etu.ing.he-arc.ch/jonas.allemann/indulo-tp2-cicd_gitlab/container_registry/)
Question 6 - Le stage 3 génère un wheel Python. Où est-il stocké et comment pouvez-vous le retrouver ?
Elle est stockés dans le projet GitLab. On la retrouve dans l'onglet "Packages and registries" > "Package Registry"
(https://gitlab-etu.ing.he-arc.ch/jonas.allemann/indulo-tp2-cicd_gitlab/-/packages)