Come eseguire test specifici della macchina durante la compilazione remota DevOps

0

Quali sono i metodi generalmente accettati per eseguire test che trasmettono la macchina di sviluppo sul server di compilazione dove falliscono costantemente a causa di dipendenze mancanti? (In questo caso, un file di configurazione gestito da un'altra applicazione completamente esterna.)

La mia app sta leggendo un file INI contenente varie coppie chiave / valore e sto memorizzando il percorso di quel file in App Settings . Questo funziona bene anche nel mio ambiente di sviluppo e nella produzione.

Ma quando invio tutto questo a TFS per una compilazione? Questi test falliranno perché né il file INI né l'impostazione Path che punta ad esso esistono sul server (né penso che dovrebbero, ma potrei sbagliarmi con questo).

Per citare Jon :

Typically a build machine is meant for build, compile + unit tests. There should be no external dependencies.

Devo includere la logica per saltare quei test particolari se non sono in esecuzione in dev?

- EDIT -

Ho tre ambienti di lavoro:

  1. Dev (la mia workstation)
  2. Build / Test (un'istanza TFS in esecuzione sul mio server)
  3. Produzione (l'applicazione in esecuzione sul sito del cliente)

L'app ha un'interfaccia utente per specificare il percorso del file INI. Questo percorso è memorizzato in App Settings , che a sua volta è memorizzato in una sottocartella in %AppData% (in Windows). Il file viene creato e aggiornato da un'applicazione esterna il cui codice sorgente non è sotto il mio controllo.

I test hanno esito positivo in Dev e Prod, ma falliscono in Build a causa del fatto che né il file INI né l'impostazione Path che punta ad esso esistono in Build.

Secondo la mia ricerca, le dipendenze esterne (come questo file INI e le impostazioni corrispondenti) non dovrebbero essere introdotte in un ambiente di Build. Tendo ad essere d'accordo. Sembra piccolo ora con solo questa istanza, ma posso facilmente prevedere che questa spirale fuori controllo man mano che vengono introdotti più scenari di questo tipo.

Non ci sarebbe voluto molto tempo prima che Build venisse soffocata con tutte queste configurazioni specializzate, strettamente accoppiate, fragili e difficili da gestire.

Come usciamo da questo Catch-21?

    
posta InteXX 06.08.2018 - 01:51
fonte

1 risposta

3

È meglio progettare il tuo programma in modo che possa essere eseguito dopo che è stato costruito.

In questo caso hai bisogno di un percorso predefinito nelle impostazioni dell'app, piuttosto facile, e un file ini predefinito da copiare su quel percorso.

Includi queste cose nel progetto e, se necessario, aggiungi i passaggi post build per spostarli nel percorso corretto o cosa hai.

In alternativa, potresti prendere in considerazione questi test di Integrazione del test. In tal caso, non eseguirli immediatamente dopo la compilazione. (Saltale aggiungendo categorie ai tuoi test, quindi disponi di unità e integrazione) Prima distribuisci il programma nel tuo ambiente di test con un altro passaggio automatico (Octopus deploy?) E quindi eseguilo.

    
risposta data 06.08.2018 - 09:32
fonte

Leggi altre domande sui tag