2014-08-04 3 views
8

Sto creando un ambiente di test jenkins utilizzando la finestra mobile per CI. Ho un container con jenkins installato e tutti i lavori sono stati trasferiti dal mio jenkins precedente. Ora sono bloccato con questo problema in cui ho bisogno di eseguire test che richiedono unità DB e PHP.Jenkins usando la finestra mobile: come eseguire i test?

Non voglio installarli nel mio contenitore jenkins poiché ho contenitori dedicati per DB, phpunit. Quindi la mia domanda è come posso attivare il lavoro di jenkins per eseguire i test nella finestra mobile contenente i prerequisiti necessari.

Ho due opzioni, ma non sono sicuro se sono fattibili,

Opzione 1:

Quando si esegue il lavoro in Jenkins, grilletto finestra mobile run [contenitore con tutte le dipendenze] [script per eseguire il test] Ma non sono sicuro se riusciremo a far scattare la finestra mobile da dentro un container ??

Opzione 2:

creare un nuovo contenitore e installare Jenkins schiavo su questo. Aggiungi quel contenitore nel jenkins principale ed esegui il test sullo schiavo. Assicurarsi che lo slave abbia collegamenti al database e ai contenitori dell'unità PHP. È possibile?

Grazie

+3

Vai per opzione 2. Crea lavori normalmente eseguiti su schiavi in ​​Jenkins. Vedere la sezione "Allegare build executors" nella documentazione del contenitore docker Jenkins: https://registry.hub.docker.com/_/jenkins/ si collega ad un agente di build slave di esempio: https: //registry.hub.docker .com/u/maestrodev/build-agent / –

risposta

1

consiglio di andare per l'opzione 2

Utilizzare Jenkins lavoro grilletto per eseguire i processi in nodo Jenkins schiava al posto del vostro contenitore Jenkins.

E utilizzare jenkins docker plugin per gestire i contenitori docker che sono DB, phpunit, trattarli come nodo slave jenkins, sarà molto più semplice.

4

io non sono sicuro che rispondere alla tua domanda, ma a Jenkins dichiarativa Pipeline https://jenkins.io/doc/book/pipeline/syntax/ si può facilmente eseguire contenitori docker su cui si consiglia di eseguire il vostro tecnologia passaggi specifici come

php --version

Se il Jenkins è in esecuzione come contenitore Docker, potresti voler estendere questa immagine con il client Docker e che consente di connettersi all'host Docker e generare nuovi contenitori Docker come i fratelli contenitore Jenkins non childs. Per questo è necessario puntare docker.sock a quella da host:

docker run -v /var/run/docker.sock:/var/run/docker.sock 

Descrizione completa di tale soluzione si può trovare in questo post del blog: https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/

oleodotto semplice per l'esecuzione di finestra mobile con PHP e funzionante php --version ha questo aspetto.

pipeline { 
    agent { docker 'php' } 
    stages { 
     stage('build') { 
      steps { 
       sh 'php --version' 
      } 
     } 
    } 
} 

Esempio trovato qui https://jenkins.io/doc/pipeline/tour/hello-world/

Speranza che aiuta un po '.