web-dev-qa-db-fra.com

Comment gérer le flux de travail de développement distribué

J'essaie de créer un flux de travail pour deux personnes (actuellement). L'un d'entre eux effectuera un travail thématique et un autre rédigera du contenu. Nous ne sommes pas co-localisés et ne le serons pas de si tôt.

L’écrivain ne connaît pas très bien le contrôle de code source, il serait donc préférable de passer à la phase deux. Je pourrais mettre MAMP sur sa boîte et la faire écrire là-bas. Si telle est l'approche adoptée, quelle est la meilleure façon d'intégrer les deux solutions?

J'ai lu cette question: Comment préparer au mieux le développement d'une équipe bi-côtière composée de deux personnes? , mais comme il a deux ans, je pensais Je verrais si quelque chose a changé.

6
KevDog

Attention: pensées très mac/linux/unix à venir. Inclut beaucoup de fu en ligne de commande.

Mettez tout le code sous contrôle de version

J'aime git. Mark Jaquith a de bonnes suggestions sur k pour un site entier sous contrôle de version en utilisant git et des sous-modules pour le noyau WordPress. Vous pouvez aussi mettre des plugins en tant que sous-modules git.

La partie développeur de l'équipe travaillera localement, testera et validera toutes les modifications, puis transmettra le code dans un référentiel central (Github avec un référentiel privé, Beanstalk, votre serveur, peu importe). À partir de là, vous pouvez utiliser des outils de déploiement (Capistrano, etc.) ou simplement SSH sur votre serveur de développement (voir étape 2) et git pull dans vos modifications.

Assurez-vous d’ajouter vos répertoires de fichiers statiques (par exemple, les images et le contenu téléchargés) à votre fichier .gitignore.

Configurer un serveur de développement

Par exemple. Installez WordPress sur un sous-domaine de votre site principal, tel que staging.yoursite.com ou dev.yoursite.com. C'est un terrain d'essai pour le nouveau code et l'endroit où votre producteur de contenu travaillera. Je recommanderais de garder cela sur un serveur séparé entièrement.

Donnez à votre produit de contenu un nom d'utilisateur et un mot de passe pour le site intermédiaire et demandez-leur de produire et d'écrire tout le contenu. Vous allez également extraire les dernières modifications de code sur ce site pour les tester ici avant de les transférer sur le site de production (en direct).

À partir du serveur de développement, vous pouvez effectuer une exportation de base de données matérielle et l'utiliser pour mettre tout le contenu sur le site actif.

Sur le serveur de dev:

Shell$ mysqldump -p -u your_dbuser yourdatabase > the-file.sql

Envoyez le fichier sur le serveur de production et ...

Shell$ mysql -p -u your_dbuser your_database < the-file.sql

Il y a une autre alternative avec laquelle j'ai récemment eu le plaisir de travailler et qui s'appelle RAMP by Crowd Favorite . Il déploiera le contenu d'un serveur à un autre pour vous. C'est génial. Hautement recommandé.

Lorsque tout est prêt, envoyez du contenu et du code au site actif.

Dernier mot d'avertissement: l'IP restreint votre site de développement afin que tout le monde ne puisse y accéder.

Synchroniser votre site de développement local

Évidemment, si vous allez travailler localement, vous souhaitez que votre site local reste synchronisé avec les sites de développement et de production. Tout votre code sera sous contrôle de version, donc ce n'est pas un problème. Mais la synchronisation de la base de données et des fichiers statiques est une autre affaire.

Synchroniser la base de données

Deux options ici.

  1. Vous pouvez créer un SSH sur le serveur de développement chaque fois que vous le souhaitez et vider la base de données dans un fichier que vous pouvez télécharger et importer sur votre ordinateur local. Utilisez les commandes ci-dessus.
  2. Si votre hôte autorise la connexion à une base de données externe, créez un utilisateur disposant d'un accès en lecture seule à la base de données de votre site dev. Vous pouvez ensuite spécifier un argument Host avec une commande mysqldump sur votre machine locale et vider directement la base de données sur votre machine. Je le fais avec media temple.

Exemple de mysqldump avec un hôte.

Shell$ mysqldump -p -u your_dbuser -h the-externa.db.Host.com the_database > the-file.sql

Vous pouvez également simplement vous connecter à vos hôtes PHPMyAdmin et exporter à partir de là.

Synchronisation de fichiers statiques (images téléchargées, etc.)

rsync est votre ami. Il vous permet d'effectuer des mises à jour delta d'un emplacement à un autre, y compris via SSH. En d'autres termes, vous pouvez l'utiliser pour télécharger uniquement les fichiers que vous ne possédez pas sur votre ordinateur local.

Exemple:

Shell$ rsync -avze ssh [email protected]:/path/to/static/files/ /path/to/your/local/static/files/

En supposant que votre hôte utilise des mots de passe pour l'accès SSH, vous serez invité à entrer un mot de passe après l'exécution de cette commande. Si votre hôte ne fait pas cela, par exemple. utilise un accès SSH à clé publique sans mot de passe, vous devrez parcourir quelques étapes avec un petit script Shell qui utilise ssh-agent:

#! /bin/bash

eval "$(ssh-agent)" # start ssh-agent user daemon
ssh-add /path/to/your/id_rsa # add your public key

rsync -avze ssh [email protected]:/path/to/static/files/ /path/to/your/local/static/files/

kill $SSH_AGENT_PID # kill the ssh agent

Vous pouvez également utiliser rsync pour maintenir les fichiers statiques synchronisés entre vos serveurs de production et de développement.

Ce qui précède est la façon dont je travaille avec mes sites personnels et avec les sites de quelques clients.

8
chrisguitarguy