Pour tout problème contactez-nous par mail : support@froggit.fr | La FAQ :grey_question: | Rejoignez-nous sur le Chat :speech_balloon:

Skip to content
Snippets Groups Projects
Commit da6759f6 authored by Christophe Chaudier's avatar Christophe Chaudier :rocket:
Browse files

docs: describe base jobs and usage

parent a3994d53
No related branches found
No related tags found
No related merge requests found
# gitlab-ci-templates
# Gitlab-ci templates
Simplifiez vos pipelines GitLab ! 🥰
Une collection utile de *templates* et de *librairies* pour gitlab-ci.
Les fichiers de ce dépôt peuvent être inclut dans vos `.gitlab-ci.yml|.
Les fichiers de ce dépôt peuvent être inclut dans vos `.gitlab-ci.yml`.
Pour plus de détails sur l'include dans `.gitlab-ci.yml` voir [la documentation officielle](https://docs.gitlab.com/ce/ci/yaml/#include).
Pour utiliser ce dépôt vous devez connaître les notions suivantes :
- [include](https://docs.gitlab.com/ce/ci/yaml/#include)
- [extends](https://docs.gitlab.com/ce/ci/yaml/#extends)
[Read me anglophone](README.md)
[Le guide de référence de GitLab-CI se trouve ici.](https://docs.gitlab.com/ee/ci/yaml/README.html)
## Organisation du dépôt
```bash
├── gci-templates
└── test
```
### gci-templates
Ce répertoire contient tous les templates qui peuvent être utilisés dans les piplines.
#### activate-dind.yml
Ce fichier permet d’activer docker in docker.
Tous les jobs de ce dépôt utilisent docker.
#### stages.yml
Ce fichier contient la définition des stages et des templates de base utilisés dans les jobs.
#### job
Ce répertoire contient les templates de job.
Chaque job est classé par type ou technologie dans un sous-répertoire.
### test
Ce répertoire contient les ressources nécessaires aux tests.
## Utilisation
Pour utiliser les _templates_ de CI de ce dépôt il faut les inclure dans le fichier `.gitlab-ci` de votre dépôt.
Chaque fichier contient un, ou plusieurs, jobs classés en fonction de leur thématique.
### `stages.yml`
Ce fichier contient la liste des étapes de base de la CI.
Il faut l'inclure en premier quand on veut utiliser les _templates_ de ce dépôt.
Il contient aussi les modèles de base des jobs.
#### Les étapes
##### Info
Cette étape sert à informer les utilisateurs de la CI.
On peut y mettre un peu ce que l'on veut.
Les mainteneurs de ce dépôt peuvent s'en servir pour informer les utilisateurs des dépôts tiers.
Vous pouvez dans votre CI vous en servir par exemple pour :
- Afficher le tag de la _release_ à créer.
- Afficher des informations à destination de l'utilisateur de la CI.
Vous avez à disposition 3 jobs modèles qui utilisent tous "Docker in Docker".
###### `.info`
Ce job affiche un message et se termine en succès.
###### `.warning`
Ce job affiche un message, se termine en warning et la CI se poursuit.
###### `.error`
Ce job affiche un message, se termine en warning et la CI s’arrête.
###### Usage
Job d'**information** dans l'étape d'info.
```yaml
Mon information:
extends: .info
variables:
message: "Ceci est un message d'information"
```
Job de **warning** dans une autre étape.
```yaml
Mon warning dans test:
extends: .warning
stage: test
variables:
message: "Ceci est un message de warning dans les tests"
```
##### Build
Cette étape contient tous les jobs de build de l'application.
##### Lint
Cette étape contient tous les jobs de lint.
##### Test
Cette étape contient tous les jobs de tests.
##### Delivery
Cette étape contient tous les jobs d’empaquetage des applications :
- Création des _releases_.
- Création des images de conteneurs et _push_ dans le registre du dépôt.
- Mise à disposition des _releases_ ou paquet dans un dépôt d'artefact.
Les jobs de cette étape n'existent que lorsqu'un tag est poussé sur le dépôt GitLab.
##### Deploy
Cette étape contient tous les jobs de déploiement des applications :
- Envoi du code sur un serveur distant.
- _Push_ des images de conteneurs dans le registre de production.
Les jobs de cette étape n'existent que lorsqu'un tag est poussé sur le dépôt GitLab et ils sont **à déclenchement manuel**.
#### Les modèles de base des jobs
Ce dépôt tire partie des fonctionnalités d'[include](https://docs.gitlab.com/ce/ci/yaml/#include) et d'[extends](https://docs.gitlab.com/ce/ci/yaml/#extends) de GitLab-CI pour rendre le code modulaire.
Il est important de les connaître pour mètre en place les _templates_ et pouvoir faire de l'héritage.
Les jobs modèles commencent tous par un point (`.`) et ne sont pas destinés à être utilisés tels quels.
Pour GitLab ce sont des [jobs cachés](https://docs.gitlab.com/ee/ci/yaml/README.html#hide-jobs) et ils ne sont pas exécutés dans la CI.
Par contre n'importe quel job peut en hériter grâce au mot clef `extends`.
##### `.base_tpl`
C'est le job de base dont hérite tous les autres jobs.
La variable `working_directory` contient le nom du répertoire du job.
La valeur par défaut est `$CI_BUILDS_DIR` qui est le répertoire dans le conteneur ou l'on veut exécuter le job.
Cela peut être utile si vous voulez exécuter le même job dans plusieurs répertoires.
Par exemple pour builder deux images docker donc les Dokerfiles sont `front/Dokerfile` et `back/Dockerfile` il faudra faire :
```yaml
# .gitlab-ci.yml
include:
- 'https://gitlab.com/lydra/gitlab-ci-templates/gci-templates/stages.yml'
- 'https://gitlab.com/lydra/gitlab-ci-templates/gci-templates/job/container/delivery.yml'
container:delivery:front:
extends: "container:delivery"
variables:
working_directory: "front"
container:delivery:back:
extends: "container:delivery"
variables:
working_directory: "back"
```
## Pour aller plus loin
- [La référence de `.gitlab-ci.yml`](https://docs.gitlab.com/ce/ci/yaml).
[🇬🇧 English version](README.md)
La [documentation est sur le wiki](https://gitlab.com/lydra/gitlab-ci-templates/wikis/home-fr).
---
Création graphique par [Freepik](https://www.freepik.com) sur [www.flaticon.com](https://www.flaticon.com)
sous licence [CC 3.0 BY](http://creativecommons.org/licenses/by/3.0)
Création graphique par [Freepik](https://www.freepik.com) sur [www.flaticon.com](https://www.flaticon.com) sous licence [CC 3.0 BY](http://creativecommons.org/licenses/by/3.0)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment