Integración continua de TeamCity con la implementación de git, las testings de PHPUnit y la migration de la database

Estoy tratando de configurar un flujo de trabajo de integración y deployment continuo de TeamCity con una aplicación de Laravel que use Git para el control de versiones, pero la forma en que lo logré me parece una locura.

Lo que tengo ahora es una compilation de TeamCity con un desencadenante de un impulso para la twig de desarrollo. He configurado tres events de compilation que se ejecutan en ssh en el server de almacenamiento intermedio, luego git extraen el código, ejecutan la migration artesanal y luego ejecutan las testings de phpunit.

En cada evento de compilation tiene que enviarse ssh al server de preparación, cd al directory y luego realizar la acción que no parece correcta; además, si algo sale mal, como las testings de phpunit fallan, no hay forma de deshacer fácilmente. Entonces, ¿cuál es exactamente la forma correcta, he intentado investigar pero no puedo encontrar nada que realmente explique cómo usarías git para implementar el código en vivo, incluso usarías git para implementarlo?

Puede usar Git para su implementación, pero no lo recomendaría. Debería usar algo específicamente configurado para implementar una aplicación empaquetada, como OctopusDeploy. El process sería el siguiente:

  1. Activa tu compilation de TeamCity a partir de los cambios en Git
  2. TeamCity realiza la compilation en pasos: obtiene cambios, comstack, ejecuta testings, pacakges, envía packages al server de implementación (o ejecuta algo como msdeploy)
  3. El server de implementación toma su package comprimido / NuGet y lo implementa en cada uno de sus entornos (beta, assembly, producción).