Un tanto robado de la respuesta de Ian Margett, ya que la arquitectura es común entre la mayoría de las organizaciones de desarrollo de Microsoft / .NET, el modelo operativo objetivo de alto nivel se parece a esto:
El objetivo es crear una tubería de despliegue continuo, utilizando el software existente fuera de la plataforma, a saber TeamCity , Proget , sonarqube y pulpo Implementar :
- GitHub es la herramienta de administración del código fuente, sin embargo, podría ser BitBucket o Visual Studio Team Services. El modelo de ramificación y el proceso de revisión de código están fuera del alcance en este alto nivel.
- TeamCity se elige como Build System debido a su estrecha integración con Octopus Deploy y su buen soporte integral para .NET, msbuild y PowerShell. TeamCity también se utiliza como orquestador de implementaciones en Octopus Deploy.
- ProGet es la solución de gestión de paquetes que almacena paquetes de Octopus y proporciona repositorios de paquetes / imágenes públicas. La razón para no usar la tienda incorporada de TeamCity NuGet es puramente por razones de escalabilidad.
- SonarQube proporciona una gestión continua de la calidad del código y los informes se publican como parte de los resultados de construcción de TeamCity.
- Octopus Deploy se utiliza como herramienta de implementación para infraestructura y código en las plataformas de destino.
He visto este amplio enfoque implementado en dos compañías y lo implementé con éxito en dos compañías adicionales: en el caso más reciente, cambiamos TeamCity por AppVeyor, que funcionó, aunque fue un poco doloroso al configurar las reglas de firewall.