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

[skip ci] amélioration readme

parent 7f92c205
......@@ -16,4 +16,4 @@ job_scheduled :
only:
- schedules
script :
- echo "Manual triggered"
- echo "Scheduled"
......@@ -2,14 +2,16 @@
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) petits codes :
Le code source est fourni. Après l'échauffement, 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 par 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 ##
## Échauffement ##
### 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.
......@@ -20,7 +22,7 @@ Chaque job contient un [script](https://docs.gitlab.com/ee/ci/yaml/#script), ex
*Note 2* : L'image par défaut est choisie lors de l'installation du Runner.
## 2. Le choix de l'image docker ##
### 2. Le choix de l'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).
......@@ -29,7 +31,7 @@ Les jobs sont exécutés dans les conteneur docker. Vous pouvez choisir le conte
*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. Le pipeline ##
### 3. Le pipeline ###
On définit les Pipelines en déclatant plusieurs [stages](https://docs.gitlab.com/ee/ci/yaml/#stage). Chaque job définit à quelle étape il appartient grâce au mot-clé [stage](https://docs.gitlab.com/ee/ci/yaml/#stage).
......@@ -58,7 +60,7 @@ Observer le comportement dans l'interface, puis ajouter autoriser l'échec pour
*Note* : Avec allow_failure, le pipeline passe, mais vous voyez quand même un warning...
## 4. Une étape manuelle ##
### 4. Une étape manuelle ###
Le mot-clé [when](https://docs.gitlab.com/ee/ci/yaml/#when) permet de définir quand le job est exécuté : en cas de succès(défaut), d'échec, quoi qu'il arrive, ou manuellement.
......@@ -67,29 +69,34 @@ Le mot-clé [when](https://docs.gitlab.com/ee/ci/yaml/#when) permet de définir
*Note* : Contrairement aux autres jobs, les jobs manuels sont autorisés à échouer par défaut (pour ne pas bloquer le pipeline). On peut changer ce comportement, mais il faudra alors une intervention humaine pour débloquer le pipeline...
## 5. Pousser des modifications sans lancer le pipeline ##
### 5. Pousser des modifications sans lancer le pipeline ###
Dans certains cas, veut pousser des commit sans lancer le pipeline. Pour cela, il suffit de spécifier [skpi-ci] ou [ci-skip] dans le message de commit.
**But** : Après une modification, pousser le changement en précisant [skip-ci] dans le message de commit. Observer le comportement dans l'interface.
##6. Interface : les schedules ##
### 6. Programmer des pipelines : les schedules ###
On peut programmer des pipelines pour qu'il soient lancés à intervalles réguliers (par exemple pour les nightly builds).
**But** : Programmer un pipeline avec dans CI/CD -> Schedule. Puis, ajouter un job qui ne sera exécuté que lors des pipeliens programmés à l'aide du mot-clé [only](https://docs.gitlab.com/ee/ci/yaml/#only-and-except-simplified)
## Compilation python ##
On peut programmer des pipelines pour qu'il soient lancés à intervalles réguliers (par exemple pour les nightly builds). https://docs.gitlab.com/ee/user/project/pipelines/schedules.html#using-only-and-except
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
## Dice, un projet complet ! ##
## 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. doc 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) ##
## 16. bonus : répertoire infra, haproxy, docker-compose.yml ##
### 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) ###
### 16. bonus : répertoire infra, haproxy, docker-compose.yml ###
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