web-dev-qa-db-fra.com

Essayer de comprendre ce que fait Travis CI et quand il devrait être utilisé

Je suis très nouveau chez Git et je prévois de contribuer à un projet open-source sur GitHub après avoir découvert une petite erreur. Après avoir corrigé l'erreur et corrigé l'erreur, j'ai formulé une demande de tirage et je l'ai remarqué: 

Failed - La génération de CI Travis a échoué

En examinant les détails, j'ai découvert que cela était dû à Could not find .travis.yml, ce qui était parfaitement logique puisque je ne m'étais pas connecté à Travis Cl avec et n'a pas ajouté .travis.yml au référentiel.

C'est la première fois que j'entends parler de Travis et de ce que l'on appelle l'intégration continue. Et ça a l'air plutôt cool alors pour en savoir plus, j'ai regardé sur Wikipédia.

Travis CI est un service d’intégration continue distribué et hébergé. utilisé pour construire et tester des projets hébergés sur GitHub. Travis CI détecte automatiquement quand une validation a été faite et poussée dans un référentiel GitHub qui utilise Travis CI. Chaque fois que cela se produit, il essaie de construire le projet et exécuter des tests . Cela inclut les commits sur toutes les branches, pas seulement sur la branche principale.

Ma compréhension actuelle de Travis CI est que ce qu'il fait pousse automatiquement le projet sur git commit -am ".." et je ne comprends pas très bien une partie de celui-ci.

  1. En construisant le projet et en exécutant des tests , quels tests va-t-il exécuter? Et comment va-t-il "construire" le projet? (comme compiler en binaire?)

  2. Il est indiqué que "Cela inclut les commandes dans toutes les branches" - mais que se passe-t-il si je ne souhaite pas m'engager dans toutes les branches?

  3. Est-ce que ça va si je n'utilise pas du tout Travis Cl? Dans quelles circonstances est-il préférable de l'utiliser (ou doit-il être utilisé)? 

66

Le moyen le plus simple d’expliquer Travis CI est d’exécuter les tests de votre programme chaque fois que vous vous engagez dans GitHub (vous pouvez le configurer de différentes façons et vous pouvez toujours désactiver les versions sur certaines branches). Le fait est que vous pouvez souvent détecter très rapidement si votre commit a cassé quelque chose et le corriger avant qu'il ne devienne un problème. Je recommanderais d'exécuter Travis CI sur chaque dépôt GitHub dans lequel vous avez des tests unitaires et utilisez un langage de programmation pris en charge par Travis CI. Comme la configuration de Travis CI est très facile, je ne vois normalement pas de bonne raison de ne pas l'utiliser, à moins que vous ne vous inquiétiez pas de savoir si vous avez réussi des tests dans votre programme. N'hésitez pas à laisser un commentaire si vous avez d'autres questions. Vous pouvez en savoir plus sur Travis CI ici .

80
joshua-anderson

Comme vous avez déjà découvert ce que Travis-CI est, je voudrais directement signaler les questions que vous avez.

En construisant le projet et en exécutant des tests, quels tests va-t-il exécuter? Et comment va-t-il "construire" le projet? (comme compiler en binaire?)

Dans le fichier .travis.yml, vous spécifiez votre système d'exploitation, le langage de programmation, votre branche de dépôt, le nom du fichier du projet et d'autres détails. En lisant ce fichier, Travis-CI utilisera les compilateurs spécifiques installés sur leur serveur pour compiler notre code. Ils auront probablement le même mécanisme que nous avons pour Github. Pour la première fois, ils pourraient extraire le code [si nous avons spécifié des branches spécifiques, ils pourraient extraire le code uniquement de ces branches]. De plus, nous nous sommes authentifiés pour utiliser notre compte avec Travis-CI. Chaque fois que nous effectuons une validation, une notification devrait être envoyée au serveur Travis-CI. Il sera donc reconnu en tant que validation et la compilation commencera.


Il est indiqué que "Cela inclut les commandes dans toutes les branches" - mais que se passe-t-il si je ne souhaite pas m'engager dans toutes les branches?

Vous pouvez spécifier différentes branches ou la branche master. Et il ne devrait compiler que les branches spécifiques spécifiées dans le fichier .travis.yml.


Est-ce que ça va si je n'utilise pas du tout Travis Cl? Dans quelles circonstances est-il préférable de l'utiliser (ou doit-il être utilisé)?

Oui, c'est bon. Pas un gros problème. Mais quels sont les avantages qui vous manqueront si vous n’utilisez pas ce moteur facile à intégrer à votre repo. Chaque fois que vous vous engagez, il est possible qu'il manque quelque chose et qu'il ne puisse pas être compilé à cause d'un code. Comment saurez-vous? Ainsi, vous devriez utiliser Travis-CI.


J'ai écrit un blog post que vous pouvez lire pour savoir ce qu'est Travis-CI, les intégrations continues et comment lier Travis-CI à votre compte Github. Je l'ai écrit pour un référentiel Swift.

13
Hemang

Je pense que je suis très bien placé pour répondre à votre question, car j'apprends actuellement Travis CI. Le premier problème que vous avez rencontré en premier lieu est dû au fait que le projet auquel vous contribuez utilise Travis CI pour le tester et le construire. Si le projet n'utilise pas Travis CI, vous n'auriez pas rencontré une telle erreur. 

La solution est la caisse Site Web Travis CI et découvrez son fonctionnement et son incidence sur le projet sur lequel vous travaillez. Cela vous placera dans une très bonne position pour comprendre ce qui ne fonctionne pas dans votre code et comment le corriger.

Pour répondre à la première question sur la construction du projet.

En construisant le projet et en exécutant des tests, quels tests va-t-il exécuter? Et comment va-t-il "construire" le projet? (comme compiler en binaire?)

Cela signifie comment le code source est traité avant utilisation/test. Cela dépend de la langue que vous écrivez. Par exemple, si le projet écrit avec PHP. Cela ne va pas construire mon code dans un fichier exécutable tel que le code source C/C++. Il exécutera mon code PHP sur un interpréteur PHP et le testera comme il le fait. Il passe toujours par le processus de compilation normal de votre langue préférée.

0
Emmanuel