2012-04-04 19 views
64

Quali funzionalità plug-and-plug devo impostare per far sì che il mio lavoro Jenkins attivi un build ogni volta che il codice è impegnato in un progetto SVN? Ho installato sia il plug-in SVN standard che il plug-in di codifica SVN, ma non vedo alcuna nuova funzionalità che consenta la configurazione del trigger.Jenkins CI: Come attivare i build sul commit SVN

+0

possibile duplicato del [Trigger Hudson generazione quando svn commit] (http : //stackoverflow.com/questions/4792466/trigger-hudson-build-when-svn-commit) – highlycaffeinated

risposta

71

Ci sono due modi per andare su questo:

mi consiglia la prima opzione inizialmente, grazie alla sua facilità di implementazione. Una volta maturato nei processi di generazione, passa al secondo.

  1. Eseguire il polling del repository per verificare se si sono verificate modifiche. Questo potrebbe "saltare" un commit se due commit entrano nello stesso intervallo di polling. Description of how to do so here, si noti la quarta schermata in cui si configura sul lavoro un "build trigger" basato sul polling del repository (con una configurazione simile a crontab).

  2. Configura il tuo repository per avere un hook post-commit che notifica a Jenkins che è necessario avviare una build. Description of how to do so here, nella sezione "post-commit ganci"

La funzione di tag SVN non è parte del polling, è parte di promuovere la "testa" corrente del codice sorgente a un tag, ad un'istantanea di un costruire. Questo ti permette di fare riferimento a Jenkins # 32 come tag SVN/tag/build-32 (o qualcosa di simile).

+0

ganci post-commit rock. Tempi di risposta più rapidi e (su scala) il sistema CI non schiaccia il repository di origine con centinaia di richieste di log delle modifiche. – EricMinick

+4

@EricMinick Sono fantastici, ma a volte possono fondere il server CI, se si ricevono molti piccoli commit in un breve periodo di tempo. Sono tutti cavalli per i corsi, ed è difficile sapere quale metodo sia favorevole senza analizzare come funziona il tuo processo di sviluppo. –

+0

@EdwinBuck: Sai se c'è un modo per configurare Jenkins per costruire solo commit selettivi? Spiegherò, ho un tortoiseSVN e un progetto Jenkins che continua a interrogare il repository. Ora se desidero che l'impegno che faccio non debba innescare Jenkins, c'è un modo per farlo? –

0

Ho creato uno strumento usando python con un po 'di bash per attivare una build di jenkins. In pratica dovete raccogliere questi due valori da post-commit quando un commit server di colpire svn:

REPOS = "$ 1" REV = "$ 2"

quindi si utilizza "svnlook dirs-changed $ 1 -r $ 2 "per ottenere il percorso che è appena impegnato. Quindi da quello puoi controllare quale repository vuoi costruire. Immagina di avere centinaia di migliaia di progetti. Non è possibile controllare l'intero repository giusto?

È possibile controllare il mio script da github

Ho scritto questo script dato che ho appena imparare Python, e ancora utilizzando ora. Avevo intenzione di migliorarlo, ma i nuovi progetti e le cose mi tengono per tutto il tempo. Ognuno ha una buona conoscenza di Python ha sicuramente un migliore strumento integrato. Se qualcuno potesse condividere, mi piacerebbe averlo.

-1

È possibile utilizzare un hook post-commit.

Inserire lo script di hook post-commit nella cartella hooks, creare un wget_folder nell'unità C: \ e inserire il file wget.exe in questa cartella. Aggiungere il seguente codice nel file denominato post-commit.bat

SET REPOS=%1 
SET REV=%2 

FOR /f "tokens=*" %%a IN ( 
'svnlook uuid %REPOS%' 
) DO ( 
SET UUID=%%a 
) 

FOR /f "tokens=*" %%b IN ( 
'svnlook changed --revision %REV% %REPOS%' 
) DO ( 
SET POST=%%b 
) 

echo %REPOS% ----- 1>&2 

echo %REV% -- 1>&2 

echo %UUID% --1>&2 

echo %POST% --1>&2 

C:\wget_folder\wget^ 
    --header="Content-Type:text/plain"^ 
    --post-data="%POST%"^ 
    --output-document="-"^ 
    --timeout=2^ 
    http://localhost:9090/job/Test/build/%UUID%/notifyCommit?rev=%REV%  

dove prova = nome del lavoro

echo viene utilizzato per vedere il valore e si può anche aggiungere exit 2 alla fine di conoscere il problema e se lo script di hook post-commit è in esecuzione o meno.

0

Consiglieresti a GitHub invece di SVN per attivare le build? In realtà conosco solo SVN, ma mi chiedo perché così tante persone tendono a usare GitHub.

0

È necessario richiedere solo un plug-in che è un plug-in di sovversione. poi Semplicemente, Andare in jenkins-> job_name-> sezione Attivatore costruire -> (i) trigger costruire da remoto (cioè da script) token di autenticazione: -Token_name

Poi vai a Directory ganci del server SVN poi dopo l'incendio sotto i comandi: - (a) cp post-commit.tmpl post-commit (b) chmod 777 post-commit (c) chown -R www-data: www-data post-commit (d) vi post- commit nota: Tutte le linee devono essere commentate aggiungere sotto la riga alla fine synta x (per l'utente linux): -/usr/bin/ricciolo http://username:[email protected]:8081/job/job_name/build?token=Token_name

sintassi (per utenti Windows): - C:/curl_for_win/ricciolo http://username:[email protected]:8081/job/job_name/build?token=Token_name

Problemi correlati