7

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?

  1. Fecha de código cambia
  2. servidor de CI construye los cambios
  3. Si la generación pasa, el código se ha comprometido a control de código fuente del repositorio
  4. 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.

Respuesta

2

Generalmente tiene que usar una herramienta de línea de comandos o un complemento IDE que le permite enviar su código al servidor de CI. La herramienta agrupa sus cambios junto con todos los metadatos relevantes del proyecto/repositorio/usuario, inicia una compilación y luego la compromete si todo va bien.

En el caso de TeamCity, parece que el servidor en realidad presenta un mensaje de aprobación a su ordenador (from what I can tell from the diagram), y luego éste se ha comprometido desde allí — presumiblemente, por lo que no necesita tener credenciales de SCM de cada usuario — cuales podría ser complejo si usa claves privadas SSH, etc. — en su servidor TC.

Pero los servidores de CI se pueden integrar prácticamente con cualquier sistema SCM, sin importar dónde se encuentre el servidor —, solo necesita darle las credenciales correctas para obtener acceso (generalmente de solo lectura).

Cuestiones relacionadas