Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Déploiement applicatif automatisé


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Architecte Web / Android
    Inscrit en
    août 2003
    Messages
    5 507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte Web / Android
    Secteur : Industrie

    Informations forums :
    Inscription : août 2003
    Messages : 5 507
    Points : 14 797
    Points
    14 797
    Par défaut Déploiement applicatif automatisé
    Salut à tous,

    je me replonge dans le PHP pour le boulot et je suis à la recherche d'un outils qui me permettrait déployer mes applicatifs (en tout cas les màj) en production simplement.
    Aujourd’hui j'ai la configuration suivante :

    - Un projet PHP classique (composer , PSR, etc ...)
    - Un dépôt Git avec un workflow standard (develop/master et feature branche). Ce serveur est sur un réseau de développement non accessible depuis internet.
    - Un serveur de production windows server, Apache,PHP,Mysql. Qui héberge plusieurs applicatifs (chacun ayant un dépot git associé). Il pourrait avoir accès au serveur git.

    Actuellement pour mettre à jour mon applicatif je transfert bêtement mes fichiers via ftp ou bureau distant. C'est fonctionnel , mais très fastidieux et le risque d'erreur est important.
    J'aimerais améliorer ce process avec un outil de déploiement qui me permettrait par exemple de sélectionner la version que je souhaite déployer en fonction de tag git.

    Je veux éviter au maximum les manipulation sur le serveur et automatiser le tout (en gros j'aimerais ne pas devoir faire des git clone/pull manuellement) au maximum.
    Les modif SQL sont assez rares et pourrons éventuellement être faites à la main , même si un outils qui le gère serait l'idéal.
    La première installation peut être faite manuellement tant que les màj sont ensuite industrialisées.
    Dans l'idéal une UI serait appréciée plutôt que de la ligne de commande.

    Voilà , si vous utiliser des outils (gratuits) à proposer qui permettent ce genre de fonctionnalité je suis preneur
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    mai 2008
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 1 574
    Points : 2 440
    Points
    2 440
    Par défaut
    Regarde Capistrano. C'est du Ruby mais ça fonctionne avec n'importe quel language (et le Ruby nécessaire est relativement simple).

    Digital Ocean a fait un pas-à-pas qui explique relativement bien ce qu'il faut pour démarrer.

    Il n'y a pas de UI par défaut, mais il y a des libs UI web disponibles sur GitHub

    Seul bémol: je ne sais pas ce que ça donne sur Windows Server!

  3. #3
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    juin 2003
    Messages
    7 167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2003
    Messages : 7 167
    Points : 11 267
    Points
    11 267
    Par défaut
    Framagit permet de lancer des commandes en fonction du contexte comme par exemple à chaque commit :
    https://framagit.org/help/ci/pipelines.md

    En utilisant ce système, vous pouvez par exemple lancer le déploiement automatique à chaque fois qu'il y a la création d'une nouvelle version stable.

    Pour les modifications SQL, vous pouvez gérez cela avec un numéro de version de la base de données. Dans l'application PHP vous testez si la version actuelle est plus petite que la courante ce qui signifierai qu'il y a une modification SQL à faire.
    Et donc cela peut aussi se faire automatiquement lors du déploiement de la nouvelle version stable.

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Architecte Web / Android
    Inscrit en
    août 2003
    Messages
    5 507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte Web / Android
    Secteur : Industrie

    Informations forums :
    Inscription : août 2003
    Messages : 5 507
    Points : 14 797
    Points
    14 797
    Par défaut
    Merci pour vos réponses.

    Citation Envoyé par mathieu Voir le message
    Framagit permet de lancer des commandes en fonction du contexte comme par exemple à chaque commit :
    https://framagit.org/help/ci/pipelines.md
    Mon serveur git est un gitlab comme framagit, j'avais déjà jeté un oeil aux pipeline , mais j'ai trouvé ca un peu lourdingue à mettre en place et ca me dérange un peu de pas vraiment avoir le controle de quand je déploie. En gros je peux vouloir déployer au moment du tag sur gitlab pour un serveur mais plus tard pour un autre par exemple.
    Je vais quand même me repencher dessus histoire d'être sur de rien loupé.

    Regarde Capistrano. C'est du Ruby mais ça fonctionne avec n'importe quel language (et le Ruby nécessaire est relativement simple).
    je vais jeter un oeil également , mais rien qu'à la vue du tuto ca ressemble à pas mal d'autre truc que j'ai déjà vu : faut se cogner une blinde de configuration de façon pas hyper intuituve.

    Dans l'ensemble j'ai quand même la vague impression qu'un outil simple à mettre en place est utopique alors qu'au final y'a juste à définir un dossier et un dépot git en théorie

    --Edit--
    Je viens de tomber sur cet article qui utilise les webhook de github pour déployer. La même chose existe sur gitlab et ca me permettrait à priori de conditionner mon déploiement au tag de ma version plutôt qu'à un push sur master par exemple. A tester ! Reste la problématique des clé ssh qui est une galère sans nom sous windows
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    mai 2008
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 1 574
    Points : 2 440
    Points
    2 440
    Par défaut
    Tu as raison: git + les hooks git pour déclencher des commandes supplémentaires est suffisant dans beaucoup de cas.

    Bon courage pour Windows, ça doit être terrible!

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2012
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2012
    Messages : 541
    Points : 951
    Points
    951
    Par défaut
    je vais jeter un oeil également , mais rien qu'à la vue du tuto ca ressemble à pas mal d'autre truc que j'ai déjà vu : faut se cogner une blinde de configuration de façon pas hyper intuituve.

    Dans l'ensemble j'ai quand même la vague impression qu'un outil simple à mettre en place est utopique alors qu'au final y'a juste à définir un dossier et un dépot git en théorie
    Avec les outils de déploiement, copier un dossier en local vers un serveur distant via un repo git nécessite quasiment aucune configuration. Par exemple transférer un dossier avec Deployer, le pendant de Capistrano en PHP, c'est à peu près 5 lignes à écrire dans un fichier php. Comme Capistrano, Deployer permet de versionner un projet à chaque déploiement, de faire un rollback. Deployer contient un ensemble de recettes toutes faites pour le déploiement de certains projets( cms php, framework php...). Le plus de Deployer: nécessite juste php en mode cli( évetuellement composer ) pour fonctionner.
    L'autre outil inspiré de Capistrano est Ansistrano, recette ansible, mais nécessite l'installation et la connaissance de Ansible. Il reste intéressant pour faire de l'infrastructure as code ie automatiser toutes les tâches d'installation et de config du serveur depuis le poste client.

    Là où tous ces outils demandent une config assez conséquente c'est quand il faut gérer toutes les tâches liées au déploiement:
    - personnaliser les fichiers de config de son projet en fonction des serveurs( dev, stage, prod ...)
    - gérer les tâches d'un outil comme webpack: mimification et fusion des assets pour la prod, compilation des fichiers scss pour la prod, gérer le cache busting ( css, img, js...) pour la prod
    - désactiver le cache serveur en dev, le réactiver en stage ou en prod
    - gérer le versionning et la maj du schéma de la BD( et insertion des données) à l'aide d'un outil comme phinx
    - chiffrer les mots de passe et autres infos sensibles du projet sur le dépôt git. Puis les déchiffrer une fois sur le serveur.
    Brèf toutes ces tâches sont assez longues, récurrentes et rébartives. D'où l’intérêt de se cogner une blinde de configuration pour ne pas se répéter.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Déploiement 100% automatisé de W7 via MDT2012
    Par Deepcx dans le forum Autres Solutions d'entreprise
    Réponses: 0
    Dernier message: 17/09/2014, 10h01
  2. Déploiement automatisé des DLL VB 6.0
    Par Vonziz dans le forum Installation, Déploiement et Sécurité
    Réponses: 2
    Dernier message: 21/04/2008, 14h53
  3. Déploiement automatisé des dll dans COM+
    Par Vonziz dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 04/03/2008, 12h27
  4. [WAS 6.0] Déploiement automatisé d'un fichier EAR
    Par ruff15 dans le forum Websphere
    Réponses: 5
    Dernier message: 03/12/2007, 16h02
  5. Interbase : Déploiement automatisé
    Par Vulcanos dans le forum InterBase
    Réponses: 2
    Dernier message: 10/12/2005, 13h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo