Domanda

Supponiamo che tu stia sviluppando un codice che deve essere compilato ed eseguito su più host (ad esempio Linux e Windows), come potresti farlo nel modo più efficiente dato che:

  • Hai pieno accesso all'hardware per ogni host per cui stai compilando (nel mio caso un host Linux e un host Windows in piedi sulla mia scrivania)
  • Costruire su un'unità di rete è troppo costoso
  • Non dovrebbe essere richiesto alcun commit in un repository centrale: supponiamo che esista un motore CI che tenta di creare non appena viene archiviato qualcosa

"Efficiente" significa mantenere il ciclo di compilazione-modifica-esecuzione il più breve e semplice possibile.

È stato utile?

Soluzione

La maggior parte dei server di build menzionati nelle altre risposte verifica le modifiche da un sistema di controllo della versione.Dato il tuo "Non dovrebbe essere richiesto alcun commit su un repository centrale" requisito, ti suggerirei di provare Jetbrains TeamCity server CI.

Dispone di plugin per Visual Studio ed Eclipse e ti consente di richiedere un "costruzione privata", inviando le modifiche direttamente al server di compilazione.Per ogni progetto è possibile definire una serie di configurazioni di build con requisiti diversi (il sistema operativo è uno dei possibili requisiti).Se le build hanno esito positivo, il plug-in ti chiederà di confermare le modifiche.

La versione gratuita supporta 3 agenti e puoi acquistarne altri se necessario.

Sembra che anche Pulse abbia il stessa caratteristica, ma non ho esperienza diretta in merito.

Altri suggerimenti

La cosa migliore che posso consigliare è un fantastico progetto multipiattaforma chiamato "BuildBot".

BuildBot può far sì che venga eseguita automaticamente una build su ogni piattaforma supportata, ogni volta che controlli una nuova revisione nel tuo sistema di controllo del codice sorgente.Fallo costruire su OSX, Linux (ubuntu), Linux (debian), Linux (Redhat), Vista, Windows XP, ecc. E ricevi e-mail inviate o qualunque cosa preferisci quando una build fallisce.

Come parte del processo di compilazione, puoi pubblicare file binari se i test vengono superati.Utile per build "notturne" o "bleeding edge".

Ecco alcuni URL:

Lo troviamo Hudson è un ottimo server CI in grado di eseguire build dal controllo del codice sorgente secondo necessità.Poiché è scritto in Java, può essere eseguito sulla piattaforma di destinazione preferita e poiché l'interfaccia è basata sul Web puoi controllarla da qualsiasi luogo.Ci sono plugin per fare la maggior parte delle cose che vuoi fare e, soprattutto, sono gratuiti!

Scegli una macchina come box di sviluppo.

Imposta l'altro per l'aggiornamento automatico dal controllo del codice sorgente su base regolare (ogni ora/giornaliero/qualunque cosa).Qualsiasi errore di compilazione/test dovrebbe inviarti una sorta di messaggio di avviso.(e-mail, im, qualunque cosa).La tua casella non di sviluppo è ancora in fase di creazione locale poiché ha la propria copia dell'albero.

Prima di fare un vero rilascio, ovviamente vuoi comunque fare dei test umani.Ma questo mantiene la vita sana per il resto del tempo.

Utilizzo http://ccache.samba.org per accelerare le compilazioni in cui sono stati modificati solo pochi file in un progetto più ampio,

e quando sono stati apportati grandi cambiamenti, fare leva http://en.opensuse.org/Icecream allo stesso tempo per la compilazione distribuita condivisa.

Ciò dovrebbe probabilmente accelerare in modo significativo il ciclo di compilazione-modifica-esecuzione.

Dato che stai utilizzando CI, presumo che tu abbia già impostato correttamente un processo di compilazione.Quello che stiamo facendo è utilizzare Windows Box come macchine di sviluppo e CI è in esecuzione su Solaris.Ciò garantisce che il codice venga compilato correttamente su più piattaforme.Il codice è in Java e non utilizziamo librerie native, quindi è abbastanza garantito che il codice funzionerà.Usiamo Bamboo al lavoro: è fantastico ma non è gratuito :-)

Per i miei progetti privati ​​utilizzo Continuum, ma l'Husdon sembra a posto (ci proverò) - grazie Peter.

Creare una configurazione semplice per tale attività è molto semplice.
Suggerirò Cygwin da utilizzare su piattaforma Windows.In questo modo puoi scrivere software/script completamente portabili per entrambe le piattaforme Linux e Windows.Dal tuo post non è chiaro in quale fase del progetto ti trovi, ma supponendo che tu stia solo iniziando, suggerirò di utilizzare Fare per creare il tuo software.Puoi utilizzare cron per programmare la frequenza della tua cerchia di check-out/costruzione.Puoi anche inviare un'e-mail con il registro di creazione se è danneggiato.
Esistono numerosi test di build giornalieri pronti sia commerciali che open source che puoi cercare su Google o potrebbe essere che qualcuno aggiungerà qui suggerimenti.
Stiamo utilizzando uno strumento fatto in casa per questo compito, quindi non posso suggerire nulla di già pronto.

Ok, non ho capito il punto in cui non vuoi usare il sistema di controllo del codice sorgente (il che è strano, ma tu sei il capo :)) in questo caso basta sostituire check out con rsync, tutto il resto rimane simile.

Un'opzione sarebbe Cascata, che ti consente di testare le tue modifiche su tutte le tue piattaforme prima, anziché dopo, di eseguire il commit, effettuando un "checkpoint" sul server.

Una parola: Crociera (non Cruise Control) è molto bello.

Puoi ottenere due agenti gratuitamente e un agente per piattaforma.Ci vogliono letteralmente pochi minuti per la configurazione su Mac e PC e, da quello che ho sentito, non è poi così male su Linux.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top