diff --git a/Utiliser-le-pipeline-%22Symfony%22.md b/Utiliser-le-pipeline-%22Symfony%22.md index f1dd741..ef0873f 100644 --- a/Utiliser-le-pipeline-%22Symfony%22.md +++ b/Utiliser-le-pipeline-%22Symfony%22.md @@ -26,3 +26,80 @@ Les PRs de votre projet seront désormais validées avec: - https://github.com/FriendsOfPhp/PHP-CS-Fixer Elles seront automatiquement commentées par Jenkins ([Exemple](https://forge.cadoles.com/Pyxis/orion-suite/pulls/106)). + + +## Utiliser les hooks + +Il est possible d'utiliser un mécanisme de "hooks" pour exécuter des opérations arbitraires à certaines étapes du pipeline. Voici les hooks disponibles: + +### `preSymfonyAppPipeline` + +Exécuté en amont du pipeline de validation de l'application Symfony. + +### Exemple + +```groovy +@Library('cadoles@podman') _ + +symfonyAppPipeline('ubuntu:22.04', [ + 'hooks': [ + 'preSymfonyAppPipeline': { + stage('Mon stage personnalisé') { + println "HELLO FROM preSymfonyAppPipeline hook !" + } + } + ] +]) +``` + +### `buildSymfonyImage` + +Exécuté juste avant la construction de l'image Docker qui sera utilisée pour valider l'application Symfony. Si vous avez besoin de modifier le Dockerfile pour installer des outils supplémentaires, c'est ce hook qu'il vous faut. + +### Exemple + +```groovy +@Library('cadoles@podman') _ + +symfonyAppPipeline('ubuntu:22.04', [ + 'hooks': [ + 'buildSymfonyImage': { + // On charge le fichier Dockerfile en mémoire + String dockerfile = readFile(file:'Dockerfile') + + // On ajoute des lignes dans le fichier Dockerfile en mémoire pour installer des dépendances + // PHP et NodeJS + dockerfile = """ + ${dockerfile} + + RUN apt update && apt install -y php-gd php-curl php-zip curl + RUN curl -fsSL https://deb.nodesource.com/setup_16.x | bash - && apt-get install -y nodejs + RUN npm install -g yarn + """.stripIndent() + + // On réécrit le fichier Dockerfile avec nos modifications. + writeFile(file:'Dockerfile', text: dockerfile) + } + ] +]) +``` + +### `postSymfonyAppPipeline` + +Exécuté en aval du pipeline de validation de l'application Symfony. + +### Exemple + +```groovy +@Library('cadoles@podman') _ + +symfonyAppPipeline('ubuntu:22.04', [ + 'hooks': [ + 'postSymfonyAppPipeline': { + stage('Mon stage personnalisé') { + println "HELLO FROM postSymfonyAppPipeline hook !" + } + } + ] +]) +``` \ No newline at end of file