2 Utiliser le pipeline "Symfony"
wpetit edited this page 2022-10-17 17:11:26 +02:00

Utiliser le pipeline "Symfony"

Un pipeline générique "Symfony" est proposé par cette librairie. Pour l'utiliser:

  1. 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...)

  2. À 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")
    
  3. Ajouter ce fichier dans votre historique Git et remonter celui-ci sur le serveur.

  4. 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:

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 !"
            }
        }
    ]
])