Quelqu'un at-il un flux de travail de développement / intermédiaire / déploiement avec php / mysql? [fermé]

StackOverflow https://stackoverflow.com/questions/432162

  •  08-07-2019
  •  | 
  •  

Question

Je pense à un bon flux de travail pour le développement web php / mysql.

Quelqu'un a des conseils?

Était-ce utile?

La solution

Voici ce que nous faisons:

  1. Tout le monde travaille sur ses projets dans sa branche (code, tests, etc.)
  2. Lorsque tout semble aller bien, il est fusionné dans Trunk
  3. phpUnderControl reconstruit Trunk, exécute tous nos phpUnit teste, construit la documentation, met à jour la base de données, etc.
  4. Si tout ce qui passe passe, nous fusionnons dans Stable
  5. L'écurie est entièrement reconstruite comme une malle
  6. Stable est manuellement promu sur notre serveur de production

Nous avons quelques scripts personnalisés qui prennent en charge les mises à niveau de notre base de données et notre avancée vers la production. Pour notre base de données, nous conservons tous les deltas dans un seul dossier et le script compare le niveau actuel de la base de données aux deltas disponibles et, si nécessaire, les applique.

Pour la promotion en production, nous avons un autre script qui extrait toutes les données de production, puis exécute rsync pour augmenter les modifications.

Vous ne mentionnez pas votre niveau de contrôle sur les serveurs, mais le processus global serait le même pour le développement général.

Autres conseils

Je pense que tout le monde fait ces choses légèrement différentes, en fonction de l'application exacte. Voici notre configuration:

Avant la publication:

  • Tout le monde s'engage dans / trunk .
  • Lorsque nous souhaitons lancer une version, nous copions le coffre dans / tags / yymmddhhiiss .
  • Nous stabilisons le tag.

Une fois qu'il est stabilisé, nous exécutons le script de déploiement:

  • Sur le serveur de production, vérifiez la nouvelle balise.
  • Effectuez un vidage de la base de données.
  • Arrêtez les démons et fermez les applications Web.
  • Basculez le lien symbolique / current pour qu'il pointe vers la balise fraîchement extraite.
  • Exécuter les scripts de migration.
  • Redémarrez les démons et les applications.

Si nous devons appliquer rapidement un petit changement, nous le fusionnons dans la balise actuelle et nous pouvons ensuite exécuter un processus de correctif beaucoup plus simple sur le serveur:

  • Arrêtez les démons et fermez les applications Web.
  • Exécuter svn update
  • Redémarrez les démons et les applications.

Notez que certains outils visent à structurer / automatiser ces processus. Phing en est un et Symfony a son propre système de traitement par lots , qui était un projet autonome appelé pake . Et comme si cela ne suffisait pas, Zend Framework est sur le point de créer leur propre variante . C'est vraiment un peu le bazar, mais Phing est probablement le plus largement utilisé. Vous pouvez aussi utiliser quelque chose de non spécifique à PHP, tel que Ant ou Capistrano . Nous utilisons simplement des scripts shell, qui répondent fondamentalement au même besoin.

Nous avons également une génération continue en cours d'exécution, qui extrait du coffre et exécute tous les tests. Nous ne disposons actuellement que d'une collection de base de scripts shell, mais nous envisageons de passer à PhpUnderControl ou xinc .

L'étape migrations mérite peut-être une explication. Celui-ci contient des modifications de la base de données, ainsi que d'autres tâches à exécuter pour la nouvelle version. Nos migrations sont un peu simples pour le moment. Nous avons simplement un dossier avec un tas de scripts .php et .sql et lors de la migration, ceux-ci sont exécutés dans l'ordre. La manière dont nous gardons trace des modifications qui ont été exécutées consiste à vider le dossier migrations immédiatement après la création d'une nouvelle balise. Il serait probablement plus judicieux d’utiliser la base de données pour consigner les modifications qui ont été apportées. Nous sommes considérés comme adoptant quelque chose comme ruckusing à cette fin.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top