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