# Commandes linux pour pipelines CI-CD
<!-- Put the link to this slide here so people can follow -->
slide: https://hackmd.io/@l7_8GhgfTMuVbPsP3F-iuQ/SybVGQgq8
---
## Commandes linux pour pipelines CI-CD
* Intégration et déploiement en continu
* Ligne de commande linux
* Les commandes utiles pour le CI-CD
* Ressources
---
## Intégration et déploiement en continu depuis un dépôt gitlab
* A partir des sources de l'application
* Donner des instructions pour :
* compiler
* (tester, vérifier la qualité)
* packager en un livrable
* le livrer à une chaîne de mise en production
* Ex : déployer une API REST java zippée
---
### Quel environnement pour effectuer les opérations de compilation, packaging ...
* Au sein d'un container linux
* A l'aide de scripts
---
### Comment s'exécutent les opérations
* un container linux du pipeline ~ une machine linux avec les sources dessus
* Exécute les instructions de la section `script` de chaque `stage` du `.gitlab-ci.yml`
* comme dans une console linux
---
## Linux et la ligne de commande
* Linux est un ensemble de systèmes d'exploitation basés sur un noyau commun (noyau linux)
* Ces systèmes sont adaptés à de nombreux usages :
* pour des serveurs de toutes sortes
* pour des postes de travail
* pour créer des containers => environnements disponibles pour les pipelines
---
### Environnements graphiques et console
* Linux avec un bureau (comme Windows)
* ou linux sans fenêtre : avec la console
> les mêmes fonctionnalités mais plus ou moins efficaces / faciles à utiliser
---
### Un environnement console de référence : le bash
* bash = _Bourne Again Shell_
* Application vieille de plus de 30 ans qui permet d'utiliser linux en ligne de commande
* langage et outil permettant de faire beaucoup de choses, d'automatiser...
* un _prompt_ pour saisir des commandes
* une sortie texte en guise de réponse
---
## Les commandes utiles du _bash_ pour l'intégration et le déploiement en continu
* Exécuter une instruction
* Gérer fichiers et répertoires
* Créer / modifier des fichiers
* Combiner les commandes
* Variables d'environnement
* Installer d'autres outils
* Utiliser d'autres outils
---
### Exécuter une instruction
* Saisir le nom d'une commande linux ou d'une instruction du _bash_
* avec respect de la syntaxe :
* nom exact avec respect de la casse
* respect des options
* respect des paramètres
* Appuyer sur Entrée !!!
---
### Commandes pour gérer fichiers et répertoires
* Créer un dossier : `mkdir`
* Lister les dossiers / fichiers : `ls`
* Copier : `cp`
* Déplacer / renommer : `mv`
* Supprimer : `rm`
---
### Commandes pour créer/ modifier des fichiers
* Les redirections : `>` et `>>`
* Afficher quelque chose : `echo`
* Voir le contenu d'un fichier : `cat`
* Rechercher dans un fichier : `grep`
* remplacer dans un fichier : `sed`
---
### Combiner les commandes
* Réutiliser le résultat d'une commande dans une autre : `$()`
* Enchaîner des commandes : `&&`
* Utiliser la sortie d'une commande dans l'entrée d'une autre : `|`
---
### Variables d'environnement
* Définir une variable : `MA_VARIABLE=...`
* Pour un portée globale : `export MA_VARIABLE`
* Utiliser une variable : `$MA_VARIABLE` ou `"$MA_VARIABLE"`
* Evaluer une expression arithmétique : `$(($MA_VARIABLE + 1))`
---
### Installer d'autres outils
---
### Utiliser d'autres outils
* Quasiment tous peuvent se lancer depuis un terminal
---
Variables d'environnement
* Installer d'autres outils
* Utiliser d'autres outils
## Ressources
{"metaMigratedAt":"2023-06-15T07:48:15.468Z","metaMigratedFrom":"YAML","title":"Commandes linux pour pipelines","breaks":true,"description":"un atelier sur les commandes linux de base pour les pipelines CI-CD.","contributors":"[{\"id\":\"97bffc1a-181f-4ccb-956c-fb0fdc5fa2b9\",\"add\":3895,\"del\":2587}]"}