Utiliser le pipeline "Symfony"
Un pipeline générique "Symfony" est proposé par cette librairie. Pour l'utiliser:
-
S'assurer que l'utilisateur "Jenkins" a bien accès en écriture à votre dépôt (voir l'onglet "Collaborateurs" de la page "Paramètres" de votre projet). Votre projet devrait également appartenir à une des organisations déjà scannées par Jenkins (Cadoles, CNOUS, EFS, Pyxis...)
-
À la racine de votre projet, créer un fichier
Jenkinsfile
contenant les éléments suivants:// Intégration de la librairie Cadoles (voir https://forge.cadoles.com/Cadoles/Jenkins) @Library("cadoles") _ // Utilisation du pipeline partagé pour les applications Symfony de Cadoles // Le nom de l'image Docker passée en paramètre vous permet de préciser l'environnement de test // de votre application Symfony symfonyAppPipeline("ubuntu:20.04")
-
Ajouter ce fichier dans votre historique Git et remonter celui-ci sur le serveur.
-
Si nécessaire, relancer le scan de l'organisation par Jenkins pour qu'il détecte votre projet. Par exemple, la page de l'organisation Cadoles sur Jenkins, cliquer sur "Scan Gitea Organization Now".
Les PRs de votre projet seront désormais validées avec:
- https://github.com/fabpot/local-php-security-checker
- https://phpstan.org/
- https://github.com/FriendsOfPhp/PHP-CS-Fixer
Elles seront automatiquement commentées par Jenkins (Exemple).
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
@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
@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
@Library('cadoles@podman') _
symfonyAppPipeline('ubuntu:22.04', [
'hooks': [
'postSymfonyAppPipeline': {
stage('Mon stage personnalisé') {
println "HELLO FROM postSymfonyAppPipeline hook !"
}
}
]
])