Qual è il vantaggio dell'integrazione continua rispetto a make?

1

Stiamo valutando e impostando l'integrazione continua per il nostro progetto PHP. Ciascuno degli strumenti di integrazione continua ha il proprio "linguaggio di costruzione" proprietario che eseguirà molti comandi e controllerà lo stato di ritorno di questi comandi.

Ecco un esempio di una configurazione .travis.yml :

language: php

php:
  - "5.3"
  - "5.4"
  - "5.5"

script: phpunit test

notifications:
  email:
    - [email protected]

Una configurazione di Jenkins sarà in XML ed è troppo lunga per essere incollata qui.

Ecco un esempio di una configurazione circle.yml :

dependencies:
  override:
    - bundle install:
        timeout: 240
        environment:
          foo: bar
          foo2: bar2
        pwd:
          test_dir

La mia domanda è: qual è il vantaggio dell'utilizzo di tutti questi linguaggi di configurazione proprietari per CI invece di utilizzare un Makefile per configurare l'ambiente di test e disporre di qualsiasi server CI appena eseguito make test ?

    
posta William Entriken 02.04.2014 - 21:06
fonte

2 risposte

12

Quale "linguaggio di costruzione" proprietario in Jenkins? Dire che il "linguaggio di costruzione" di Jenkins è un file XML è come dire che il "linguaggio di costruzione" del tuo makefile è un codice macchina. Non proprio, ma l'essenza è la stessa.

Non devi preoccuparti di come Jenkins memorizza la sua configurazione non più di quanto ti interessi con il codice macchina risultante dopo l'esecuzione del tuo makefile. Non modificherete mai l'XML di Jenkins a mano.

Jenkins è una GUI basata sul Web (con cli e web API per completarlo). Il "linguaggio di costruzione" di Jenkins è quello che vuoi, da Maven a Ant a Shell e molti altri in mezzo. È ulteriormente potenziato con una moltitudine di plug-in che ti consentono di personalizzare il flusso di generazione esattamente come desideri.

E alla fine della giornata, in Jenkins, il tuo passo di costruzione sarà "Execute Shell" in cui scriverai make test proprio come hai fatto sulla riga di comando. I vantaggi di Jenkins non sono eseguire la tua build (qualsiasi programma di pianificazione può farlo), ma organizzare e mettere tutto insieme e tenerlo accessibile al tuo team attraverso il web.

Posso continuare a elencare tutte le grandi cose di cui Jenkins manterrà traccia per te (modifiche SCM, registri della console, risultati dei test, artefatti, email, ecc.), ma otterrai una panoramica molto migliore da qualsiasi Google cerca i vantaggi / le caratteristiche di Jenkins.

Modifica in ritardo:
Una risposta più elaborata sull'argomento

    
risposta data 02.04.2014 - 21:53
fonte
1

travis-ci è progettato per prendere il tuo file di script (nel tuo caso un makefile) e configurarlo per girare su molte versioni differenti della tua lingua (nel tuo caso php) con una configurazione minima.

Il file .travis.tml è progettato per configurare tutto per eseguire i test e per eseguirli, in circa 5 linee!

È anche progettato per essere impostato e dimenticarlo, copiare le cinque righe circa dalla documentazione, modificarle leggermente in base alle esigenze e non dovrai mai più preoccuparti della configurazione del CI.

Se si esegue il proprio server CI, è molto più difficile eseguire il test su versioni linguistiche diverse (o modificare le versioni su un capriccio) ), guarda i risultati nell'interfaccia utente di GitHub e devi preoccuparti di mantenere e aggiornare il server, invece dei 5 minuti di configurazione di un servizio CI cloud come Travis.

    
risposta data 03.04.2014 - 07:13
fonte

Leggi altre domande sui tag