7

Mi piacerebbe sapere come funziona la funzionalità "ritardo di commit" sui server CI non integrati con i repository di controllo di origine. Concettualmente, il processo funziona come segue:In che modo un "ritardo di commit" funziona con i repository di controllo del codice sorgente e i server CI?

  1. Check in codice modifica
  2. server di CI costruisce le modifiche
  3. Se la generazione passa, il codice si è impegnata a fonte repository di controllo
  4. Se la compilazione fallisce, il codice non è impegnato nel repository controllo di origine

La maggior parte dei server CI funziona eseguendo il polling dei repository di controllo di origine per le modifiche e quindi abbassando il codice. Quindi, nello scenario di commit ritardato, gli sviluppatori controllano il loro codice nel server CI anziché un vero repository di controllo del codice sorgente e quindi il server CI sta trasmettendo il codice al repository? Oppure, in alternativa, i server CI modificano le modifiche solo se la compilazione fallisce?

Sto pensando a due sistemi di integrazione continua in particolare. Team Foundation Server offrirà questa funzionalità nella versione successiva, ma ha senso in quanto Team Build (sistema CI) all'interno di TFS è integrato con il repository di controllo del codice sorgente. Tuttavia, nel caso di Team City, TC è in grado di connettersi a qualsiasi sistema di controllo del codice sorgente e non è necessariamente integrato con o anche sullo stesso server del repository di controllo del codice sorgente. Come funziona?

Modifica: Aprire una taglia su questa domanda nella speranza che io possa ottenere alcune più risposte possibili.

risposta

2

In genere è necessario utilizzare uno strumento da riga di comando o un plug-in IDE che consente di inviare il codice al server CI. Lo strumento raggruppa le modifiche insieme a tutti i relativi metadati di progetto/repository/utente, avvia una build e poi la impegna se tutto va bene.

Nel caso di TeamCity, sembra che il server è in realtà invia un messaggio di approvazione di nuovo al vostro computer (from what I can tell from the diagram), poi viene impegnato da lì — presumibilmente in modo non è necessario disporre di credenziali SCM di ogni utente — che potrebbe essere complesso se si utilizzano chiavi private SSH ecc. — sul proprio server TC.

Tuttavia, i server CI possono essere integrati con quasi tutti i sistemi SCM, a prescindere da dove si trovi il server —, è sufficiente fornire le credenziali corrette per ottenere l'accesso (generalmente di sola lettura).