Me gustaría saber cómo funciona la funcionalidad de "retraso en la confirmación" en los servidores de CI que no están integrados con los repositorios de control de origen. Conceptualmente, el proceso funciona como sigue:¿Cómo funciona una "confirmación retardada" con repositorios de control de fuente y servidores de CI?
- Fecha de código cambia
- servidor de CI construye los cambios
- Si la generación pasa, el código se ha comprometido a control de código fuente del repositorio
- Si la generación falla, el código no está comprometido con el repositorio de control de origen
La mayoría de los servidores de CI trabajan al sondear los repositorios de control de origen para ver los cambios y luego tirar hacia abajo el código. Entonces, en el escenario de confirmación retrasada, ¿los desarrolladores verifican su código en el servidor de CI en lugar de los repositorios de control de origen reales y luego el servidor de CI pasa el código al repositorio? O, como alternativa, ¿los servidores de CI simplemente están reduciendo los cambios si falla la compilación?
Estoy pensando en dos sistemas de integración continua en particular. Team Foundation Server ofrecerá esta funcionalidad en la próxima versión, pero tiene sentido porque Team Build (sistema CI) dentro de TFS se integra con el repositorio de control de origen. Sin embargo, en el caso de Team City, TC puede conectarse a cualquier sistema de control de fuente y no está necesariamente integrado o incluso en el mismo servidor que el repositorio de control de origen. ¿Cómo está funcionando?
Edit: Apertura de una recompensa en esta pregunta con la esperanza de que pueda obtener algunas respuestas más posibles.