PrestaConcept
Nos réalisations
Nos métiers
  • Découvrez nos métiers
  • Développement web sur mesure

    Nous développons en méthode agile des back sous le framework PHP Symfony, des front en Angular.

  • Maintenance d'applications

    Maintien en condition opérationnelle de votre plateforme Symfony.

  • Expertise Symfony

    Coaching, formation, audit et conseil.

  • Hébergement et Infogérance

    Une expertise de l'hébergement depuis plus de 15 ans et l’infogérance de centaines de machines en production actuellement.

  • Qui sommes nous
  • Découvrez Prestaconcept
  • PrestaConcept

    Notre histoire, nos convictions, notre vision... Découvrez ce qui nous anime !

  • L'équipe

    Plus de 15 ans minimum d'expérience sur Symfony.

  • Nos engagements RSE

    Une société engagée pour un numérique responsable.

  • Nos convictions

    Co-construction, transparence.. Les principes qui guident nos collaborations !

  • Nous rejoindre

    Envie de nous rejoindre ? Consultez nos offres !

  • Blog
    J'ai un projet Nous contacter
    J'ai un projet Nous contacter Menu
    • Accueil
    • Blog
    • Tech
    • Le déploiement avec capistrano-archive

    Blog

    Le déploiement avec capistrano-archive

    David Gaussinel
    David Gaussinel Directeur des opérations
    Publié le mardi 24 juillet 2018

    Depuis de longues années, Prestaconcept déploie les projets réalisés en utilisant Capistrano mais avec une particularité, le déploiement par archive.

    Quel que soit le projet sur lequel nous sommes, nous voulons pouvoir déployer de façon fréquente et sans stress. Le recours à l'automatisation est dès lors obligatoire.

    Capistrano

    Depuis longtemps, nous utilisons Capistrano, avec en v2 l'adoption de Capifony dédiée à Symfony, puis Capistrano 3. Capistrano c'est un outil robuste, écrit en Ruby mais capable de déployer une application quel que soit son langage.

    Il permet d'automatiser les tâches de déploiement en décrivant la configuration de son projet (les répertoires ou fichiers à partager entre chaque déploiement, les permissions à appliquer, le channel Slack à notifier, etc) d'un côté, et le ou les serveurs sur lesquels déployer le projet suivant la cible (recette, preprod, production, etc).

    Habituellement, Capistrano déploie en utilisant Git directement sur le serveur cible en faisant un checkout de la branche demandée.

    Chez Prestaconcept, nous avons, depuis quelques années, préféré le déploiement par archive.

    Déployer une archive

    Actuellement, notre plateforme d'intégration continue sous GitlabCI a pour charge de générer une archive du projet. Auparavant, nous faisions de même avec Jenkins, mais cela pourrait être par n'importe quel autre système en fait. L'essentiel est de générer une archive lorsque le code d'une branche est modifié.

    L'archive qui est produite contient tous les fichiers nécessaires en production, et seulement ceux là. C'est à dire le code source de l'application, bien sûr, mais également les dépendances, les assets compilés, minimisés, etc. L'archive ne contient que ce qui est indispensable en production : sont supprimés les fichiers qui ne sont utiles que lors du développement. C'est ce package complet qui est alors envoyé vers le(s) serveur(s) cible(s).

    Et c'est là le premier avantage de cette méthode: nous sommes assurés de la consistance des déploiements au fil de la chaîne de déploiement, entre recette, préproduction et production. L'archive déployée en production l'aura été auparavant en préproduction et en recette avec exactement les mêmes fichiers. C'est toujours les mêmes versions des dépendances ou des js qui vont par exemple être déployées pour une branche donnée. Un arrêt de Github ou de npm ne nous empêchera pas de déployer du moment que l'archive a déjà été faite.

    Le deuxième avantage c'est de ne pas être obligé d'avoir sur les serveurs de production les outils propres à la compilation ou à l'installation du projet. Nous n'avons pas composer, less ou node par exemple sur les serveurs de production. Il n'y a que le strict nécessaire au fonctionnement de l'application elle même et pas à sa génération.

    Enfin, troisième avantage, nous bénéficions d'un gain de temps au déploiement. La phase de construction de l'application a été faite en amont lors de la génération de l'archive par la plateforme d'intégration continue et elle ne sera faite qu'une fois. Le déploiement consiste seulement à envoyer l'archive et à la décompresser.

    capistrano-archive en open-source

    Depuis quelques années, nous utilisions un plugin pour Capistrano pour pouvoir déployer par archive. Des changements dans la gestion des "Custom SCM" des dernières versions de Capistrano nous ont poussé à re-écrire ce plugin et c'était l'occasion de le rendre open-source et de publier capistrano-archive sur GitHub.

    Sa fonction première est bien entendu de prendre une archive en local et de l'envoyer sur le serveur cible du déploiement. La localisation de l'archive, tout comme son emplacement temporaire sur le serveur cible, sont paramétrables.

    Il est également possible de n'envoyer l'archive que sur un seul serveur dans les cas d'architecture cible à plusieurs serveurs mais disposant d'un espace de stockage partagé. Dans ce cas là, l'archive n'est envoyée qu'une fois mais sera utilisé sur chacun des serveurs pour la création de la release.

    Enfin, un workflow de validation pour forcer un environnement à utiliser l'archive précédemment déployée sur un autre peut facilement être mis en place. Ainsi il sera par exemple possible d'obliger à déployer sur la recette avant la production.

    Avec ce plugin pour Capistrano, vous pouvez donc si vous le souhaitez déployer en utilisant des archives comme nous le faisons sur tous nos projets.

    Blog

    Pour continuer votre lecture ...

    Tech

    Scheduler, Webhook et RemoteEvent : des composants prometteurs attendus pour Symfony 6.3

    Par David Gaussinel 06/04/2023

    La version 6.3 de Symfony qui sortira en mai prochain va apporter son lot d’améliorations et de nouvelles possibilités sur des composants existants comme chaque nouvelle version de Symfony. Elle apportera également de nouveaux composants qui vont repousser encore plus loin les capacités que nous off...

    Lire la suite
    Tech

    Forum PHP 2022 : un grand cru !

    Par David Gaussinel 20/10/2022

    Le Forum PHP s'est tenu les 13 et 14 octobre 2022. Petit retour sur ces deux jours de conférences et rencontres devenues depuis plus de 20 ans le rendez-vous à ne pas manquer, et on vous explique pourquoi.

    Lire la suite
    Tech

    Merci de corriger l'erreur 500

    Par David Gaussinel 17/02/2022

    Forcément, vous l'avez déjà croisée ! Vous naviguiez sur un site quelconque, espérons que ça ne soit pas le notre pour le coup, et vous avez eu une page qui affichait une belle erreur 500.

    Lire la suite

    Vous avez un projet Laravel ?

    Nous sommes spécialisés en Symfony, et grâce à Web^ID, l’agence sœur du groupe Agile Invest, nous couvrons aussi toute l’expertise Laravel.

    Découvrir Web^ID

    Une question, un projet ?
    Planifiez un échange avec nous !

    Choisissez votre date
    PrestaConcept - Groupe Agile Invest
    5, imp. Morel, 69003 Lyon +33 (0)4 78 54 45 45
    Suivez-nous
    Ecoindex B

    Ce site internet est un site basse consommation. En savoir plus sur l'Ecoindex

    Nos réalisations

  • Logiciel de mise en conformité réglementaire
  • Application de suivi de production des centrales éoliennes
  • Outil d'aide à la décision
  • Portail client
  • Nos métiers

  • Développement sur-mesure
  • Reprise d'application Symfony
  • Expertise Symfony
  • Hébergement & Infogérance
  • Qui sommes-nous

  • PrestaConcept
  • Groupe Agile Invest
  • L'équipe
  • Engagement RSE
  • Blog

  • Tech
  • Méthodologie
  • PrestaConcept
  • RSE
  • © 2025 PrestaConcept
    Mentions légales Politique de confidentialité 🍪
    Retour en haut de page