FrankenPHP : mise en place de la CI/CD avec Gitlab

FrankenPHP : mise en place de la CI/CD avec Gitlab

Suite à notre article sur FrankenPHP et comment il nous a permis de faire des micro-services autonomes en PHP, nous vous proposons de mettre en place un bout de déploiement continu via Gitlab

Gitlab : notre outil de CI/CD

Chez Weobia, l’outil de gestion de code-source et de déploiement continu est Gitlab. Celui-ci offre une possibilité intégrée de lier les deux outils et donc il est très facile via un fichier .gitlab-ci.yml de donner les étapes à exécuter. Ainsi l’intégration continue colle au code-source, ce qui est un avantage non négligeable. Nul besoin de faire un projet à part et de gérer la configuration de celui-ci dans un outil tiers. On peut noter également que Gitlab a une registry Docker, ce qui permet facilement de déployer des images Docker

Livrons des containers FrankenPHP

Pour livrer des containers FrankenPHP, il suffit d’utiliser les commandes Docker générant une image Docker et de la stocker dans une registry. Voici la structure du fichier .gitlab-ci.yml

stages:
    - build-docker-image

build image:
    stage: build-docker-image
    image: docker:latest
    services:
        - docker:dind
    script:
        - echo $CI_REGISTRY_PASSWORD | docker login --username $CI_REGISTRY_USER $CI_REGISTRY --password-stdin
        - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG || docker pull $CI_REGISTRY_IMAGE:develop || true
        - DOCKER_BUILDKIT=1 docker build --pull -t $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG --target frankenphp_prod .
        - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
        - docker rmi --force $(docker images --format '{{.ID}}' $CI_REGISTRY_IMAGE)
    only:
        - main
        - develop
        - tags

Ici, nous disons tout simplement via du Docker in docker de construire une image FrankenPHP du nom du projet en invoquant la target (cible) frankenphp_prod. On récupère également la dernière version du container source disponible. Dans ces étapes, on pourrait tout à fait manipuler des fichiers pour aller changer des valeurs comme les paramètres PHP ou tout autre paramètre que nous souhaiterions voir personnalisés dans le container de destination

FrankenPHP : un peu de modernité dans le PHP n’a jamais fait de mal
Value Object : le must-have du développeur
Effacer le cache Symfony directement dans son application
Migration de notre infrastructure vers des nouveaux serveurs