Sono uno sviluppatore solitario per la maggior parte del mio tempo, lavorando su una serie di grandi progetti, principalmente basati su PHP. Voglio professionalizzare e automatizzare il modo in cui vengono gestite le modifiche alla base di codice e creare un processo di integrazione continua che renda possibile il passaggio al lavoro in gruppo senza dover apportare modifiche fondamentali.
Quello che sto facendo in questo momento è che ho un ambiente di test locale per ogni progetto; Uso SVN per ogni progetto; le modifiche vengono testate localmente e quindi trasferite alla versione online, generalmente tramite FTP. La documentazione dell'API viene generata manualmente dal codice sorgente; I test unitari sono qualcosa a cui sto entrando lentamente, e non fa ancora parte della mia routine quotidiana.
Il "ciclo di costruzione" che sto immaginando farebbe quanto segue:
Un changeset viene verificato in SVN dopo essere stato testato localmente.
Inizio il processo di compilazione. La revisione SVN HEAD viene verificata, modificata se necessario e resa pronta per il caricamento.
La documentazione API viene generata automaticamente - se non l'ho ancora impostata in dettaglio, utilizzando un modello predefinito, eseguendo la scansione dell'intera base di codice.
La nuova revisione viene distribuita nella posizione remota tramite FTP (compresi alcuni rinominazioni di directory, messaggi, importazione di database e simili). Questo è qualcosa che già mi piace molto per phing , ma ovviamente sono aperto a alternative.
Vengono eseguiti test unitari che risiedono in una posizione predefinita. Sono informato del loro fallimento o successo utilizzando l'output di posta elettronica, RSS o (preferibilmente) HTML che posso prendere e inserire in una pagina web.
(facoltativamente) un file di testo "log delle modifiche" dell'utente finale in una posizione predefinita viene aggiornato con una parte predefinita del messaggio di commit ("Ora è possibile filtrare contemporaneamente sia" pippo "che" barra " ora) Questo messaggio non è necessariamente identico al messaggio di commit SVN, che probabilmente contiene molte più informazioni interne.
Roba come le metriche del codice, il controllo dello stile del codice e così via non sono il mio obiettivo principale in questo momento, ma a lungo termine, lo faranno sicuramente. Le soluzioni che portano questo fuori dalla scatola sono esaminate molto gentilmente.
sto cercando
Feedback ed esperienze di persone che si trovano o si trovano in una situazione simile e hanno implementato con successo una soluzione per questo
In particolare, buoni tutorial passo-passo e procedure dettagliate su come configurarlo
Soluzioni che forniscono quanta più automazione possibile , ad esempio creando un'API scheletro, casi di test e così via per ogni nuovo progetto.
e anche
- Raccomandazioni prodotto . Quello che so finora è phing / ant per la costruzione e phpUnderControl o Hudson per la parte di segnalazione. Mi piacciono tutti per quanto posso vedere, ma ovviamente non ho alcuna esperienza dettagliata con loro.
Sono invasa dal lavoro, quindi ho una forte inclinazione verso soluzioni semplici. D'altra parte, se manca una caratteristica, piangerò perché è troppo limitata. :) Anche le soluzioni point-and-click sono benvenute. Sono anche a consigli sui prodotti commerciali che possono funzionare con progetti PHP.
La mia configurazione
Sto lavorando su Windows localmente (7, per l'esattezza) e la maggior parte dei progetti client viene eseguita su uno stack LAMP, spesso su hosting condiviso (= nessun SSH remoto). Sto cercando soluzioni che posso eseguire nel mio ambiente. Sono pronto a configurare una VM Linux per questo, nessun problema. Le soluzioni ospitate sono interessanti per me solo se forniscono tutti gli aspetti descritti o sono abbastanza flessibili da interagire con le altre parti del processo.
Bounty Sto accettando la risposta che sento mi darà il maggior chilometraggio. Ci sono molti input eccellenti qui, vorrei poter accettare più di una risposta. Grazie a tutti!