Commit df8affcc authored by Rémi Cailletaud's avatar Rémi Cailletaud

exo2

parent dd918b38
......@@ -8,5 +8,4 @@ job_test :
script :
- echo "Hello world"
- more /etc/issue
- /bin/running-in-container
- date
image : ubuntu
stages :
- test
......@@ -8,5 +6,4 @@ job_test :
script :
- echo "Hello world"
- more /etc/issue
- /bin/running-in-container
- date
# TP intégration et déploiement continus #
Le TP est une suite de petits exercices consistant à écrire à chaque fois un fichier .gitlab-ci.yml.
Le code source est fourni. Nous allons travailler sur deux (tout) petit code :
python-extension : une extension python en C, pour voir un peu de vraie compilation, quand même.
python-dice : un module pur python d'une ligne, qui tire des dés. Avec lui nous irons des tests au déploiement en production en passant pas la doc et la publication sur pypi
À chaque fois, nous fournissons les mots-clés à chercher dans la documentation très complète de gitlab https://docs.gitlab.com/ee/ci/yaml/README.html. Comme nous sommes gentils, nous fournisson aussi les solutions dans les fichiers .gitlab-ci-\*.yml.
Le code source est fourni. Nous allons travailler sur deux (tout) petits codes :
* python-extension : une extension python en C, pour voir un peu de vraie compilation, quand même ;
* python-dice : un module pur python d'une ligne, qui tire des dés. Avec lui nous irons des tests au déploiement en production en passant pas la doc et la publication sur pypi.
À chaque fois, nous fournissons les mots-clés à chercher dans la [documentation très complète de gitlab](https://docs.gitlab.com/ee/ci/yaml/README.html). Comme nous sommes gentils, nous fournissons aussi les solutions dans les fichiers .gitlab-ci-\*.yml.
## 1. Mon premier script ##
Mon premier fichier .gitlab-ci.yml. Il s'agit d'un fichier au format YAML décrit une ensemble d'étapes ([stages](https://docs.gitlab.com/ee/ci/yaml/#stage)) qui peuvent comporter plusieurs [jobs](https://docs.gitlab.com/ee/ci/yaml/#jobs). Chaque job contient un [script](https://docs.gitlab.com/ee/ci/yaml/#script), exécuté par le Runner.
But : Afficher "Hello world", /etc/issue et l'heure. Aller dans l'interface (CI/CD) et constater le résultat. On peut voir le nom du Runner qui a exécuté le job.
Note : Chaque job est indépendant (chaque job peut-être exécuté sur un Runner différent...).
2. changement d'image docker
Mon premier fichier .gitlab-ci.yml. Il s'agit d'un fichier au format YAML décrit une ensemble d'étapes ([stages](https://docs.gitlab.com/ee/ci/yaml/#stage)) qui peuvent comporter plusieurs [jobs](https://docs.gitlab.com/ee/ci/yaml/#jobs).
Chaque job contient un [script](https://docs.gitlab.com/ee/ci/yaml/#script), exécuté par le Runner.
*But* : Afficher "Hello world", /etc/issue et l'heure. Aller dans l'interface de Gitlab (CI/CD) et constater le résultat. On peut voir le nom du Runner qui a exécuté le job.
_Note_ : Chaque job est indépendant (chaque job peut-être exécuté sur un Runner différent...).
## 2. changement d'image docker ##
Les jobs sont exécutés dans les conteneur docker. Vous pouvez choisir le conteneur à utiliser avec le mot-clés [image](https://docs.gitlab.com/ee/ci/docker/using_docker_images.html#define-image-and-services-from-gitlab-ci-yml).o
*But* : Utiliser l'image ubuntu. Constater la différence.
_Note 1_ : Par défaut on utilise DockerHub, le repository Docker n'étant (encore) pas activé sur notre instance Gitlab.
_Note 2_ : On peut choisir une image différente par job.
3. explication pipeline avec des true et false et ajout d'allow_failure
4. when (manual, failure, always, success (default))
5. \[skip ci\] \[ci skip\]
6. Interface : les schedules (nightly build).
## 3. explication pipeline avec des true et false et ajout d'allow_failure ##
## 4. when (manual, failure, always, success (default)) ##
## 5. \[skip ci\] \[ci skip\] ##
##6. Interface : les schedules (nightly build).##
début d'un petit projet: hello world python extension
7. utilisation image python et compilation
8. run
9. test
10. ajout de before script
## 7. utilisation image python et compilation ##
## 8. run ##
## 9. test ##
## 10. ajout de before script ##
projet web : dice
11. only : doc ou site web, gitlab pages
12. badges pipeline et coverage (Settings -> CI/CD -> General). regex pr coverage : TOTAL\s+\d+\s+\d+\s+(\d+\%)$
## 11. only : doc ou site web, gitlab pages ##
## 12. badges pipeline et coverage (Settings -> CI/CD -> General). regex pr coverage : TOTAL\s+\d+\s+\d+\s+(\d+\%)$ ##
13. déploiement : only branch - pypi - mot de passe : variables Gitlab CI (TWINE_PASSWORD TWINE_USERNAME), mais quand on grossit, utilisation de vault (par ex. Terraform Vault)
14. docker: construire et déployer une image docker en production - docker info pr vérfier qu'on est bien sur distant - évidemment on le fait normamlement sur une branche spéciale (production)
15. blue/green ? templates (en fait anchors YAML)
## 13. déploiement : only branch - pypi - mot de passe : variables Gitlab CI (TWINE_PASSWORD TWINE_USERNAME), mais quand on grossit, utilisation de vault (par ex. Terraform Vault) ##
## 14. docker: construire et déployer une image docker en production - docker info pr vérfier qu'on est bien sur distant - évidemment on le fait normamlement sur une branche spéciale (production) ##
## 15. blue/green ? templates (en fait anchors YAML) ##
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment