Builds et tests en Python

Ce guide vous montre comment générer des projets Python avec TeamCity. Il est recommandé pour les développeurs et développeuses qui font leurs tout premiers pas sur TeamCity.

Conditions préalables

We recommend that you have a basic understanding of Python and PyTest.

Pour plus d'informations, consultez la documentation de Python.

Étape 1 : créer un projet TeamCity

  1. Cliquez sur l'icône en forme de roue Administration dans le coin supérieur droit de la page TeamCity.
  2. Cliquez sur + Create Project et sélectionnez l'onglet From a repository URL. In the Repository URL field, enter your repository, for example: https://github.com/marcobehlerjetbrains/teamcity-python.git. TeamCity gère nativement tous les principaux systèmes de gestion des versions : Git, Subversion, Mercurial, Perforce et TFS (TeamCity Cloud et installation locale). La prise en charge de CVS, StarTeam et Visual SourceSafe est uniquement disponible dans les installations locales de TeamCity.
  3. Si votre dépôt nécessite une authentification, saisissez votre nom d'utilisateur et votre mot de passe / jeton d'accès.
  4. Cliquez sur Proceed.

Si TeamCity se connecte avec succès à votre dépôt, le message ci-dessous s'affiche.

Dans la boîte de dialogue Create Project From URL, vous avez la possibilité de modifier le nom du projet et le nom de la configuration de build initiale.

Remarque : Dans les versions plus récentes de TeamCity, vous verrez également les champs Default branch et Branch specification, qui vous permettent de spécifier les branches que TeamCity doit créer. Ignorez-les pour l'instant.

  • TeamCity propose un nom de projet par défaut, mais vous pouvez choisir un nom plus approprié pour votre projet si vous le souhaitez.
  • TeamCity suggère également un nom de configuration de build par défaut. Ici, vous pouvez laisser la valeur par défaut et la modifier plus tard si nécessaire. (Chaque projet TeamCity est constitué d'au moins une configuration de build, qui contient toutes les étapes nécessaires pour développer votre projet. Les configurations de build de TeamCity sont souvent appelées Jobs dans d'autres systèmes de CI.)
  • Cliquez sur Proceed.

Une fois que vous avez cliqué sur Proceed, TeamCity analyse automatiquement votre dépôt de contrôle de version à la recherche des technologies prises en charge, dans ce cas Python.

Si TeamCity détecte un fichier .py dans votre dépôt, il suggère automatiquement une ou plusieurs étapes de build pour votre projet. Pour le référentiel utilisé dans ce tutoriel, ces étapes de build auto-détectées exécuteraient vos fichiers main.py ou setup.py. Ce n'est pas forcément ce que vous souhaitez.

Il est plus judicieux d'ajouter par défaut les étapes de build suivantes à votre projet Python :

  1. Une étape de build Linting, qui exécute Flake8 ou PyLint.
  2. Une étape de build Testing, qui exécute PyTest ou UnitTest.

Au lieu de choisir l'une des étapes de build détectées automatiquement, ajoutons plutôt ces deux étapes de build à votre projet.

Vous allez commencer par ajouter une étape Linting Flake8 à votre projet TeamCity.

  1. Cliquez sur Build Steps pour rejeter les étapes de build détectées automatiquement.
  2. Cliquez sur Add Build Step et choisissez Runner type: Python pour ajouter une étape de build capable de générer du code Python.
  3. Choisissez Command: Flake8, car ce projet Python a une dépendance à Flake8 pour le linting. Si votre projet utilisait Pylint pour le linting, vous choisiriez Pylint.
  4. Vous pouvez indiquer le répertoire que vous voulez linter dans le champ Script or module arguments. Définissez-le en tant que "src/anewtodolist" si vous travaillez avec le dépôt Python de ce tutoriel. Vous pouvez aussi le laisser vierge pour linter le projet entier.
  5. Facultatif : choisissez une autre version majeure de Python si votre projet utilise encore la 2.x.
  6. Outil d'environnement : ce projet utilise Virtualenv pour toutes les dépendances dont il a besoin, comme Flake8 et PyTest. Veillez à activer la prise en charge de Virtualenv en le sélectionnant comme outil d'environnement.
  7. Cliquons sur Save.

Si vous avez créé avec succès votre étape de build, la boîte de dialogue suivante s'affiche alors.

Ajoutons une étape PyTest à votre projet.

  1. (Facultatif) Si vous n'êtes pas sur la page Build Steps Overview, cliquez sur Build Steps pour rejeter les étapes de build détectées automatiquement.
  2. Cliquez sur Add Build Step et choisissez Runner type: Python pour ajouter une étape de build capable de générer du code Python.
  3. Choisissez Command: Pytest, car ce projet Python a une dépendance Pytest pour le test. Si votre projet utilisait UnitTest pour les tests, vous choisiriez UnitTest.
  4. Facultatif : vous pouvez indiquer le répertoire à tester dans le champ Script or module arguments. Laissez-le vierge si vos tests se trouvent dans le dossier /tests, que l'outil d'exécution Python détectera automatiquement.
  5. Facultatif : choisissez une autre version majeure de Python si votre projet utilise encore la 2.x.
  6. Outil d'environnement : ce projet utilise Virtualenv pour toutes les dépendances dont il a besoin, comme Flake8 et PyTest. Veillez à activer la prise en charge de Virtualenv en le sélectionnant comme outil d'environnement.
  7. Cliquons sur Save.

Etape 2 : exécuter votre première build

Vous pouvez à présent exécuter vos premières builds.

  1. Cliquez sur le bouton Run en haut à droite de la fenêtre, comme illustré ci-dessous.
  2. Attendez que la build commence et se termine.

Remarque : si vous utilisez TeamCity Cloud, il vous faudra peut-être attendre quelques minutes avant qu'un agent de build soit disponible. Pendant ce temps, votre build attendra dans la file d'attente jusqu'à ce qu'elle soit prise en charge par un agent disponible.

Si vous utilisez des installations locales de TeamCityTeamCity avec des agents de build locaux, votre build commencera immédiatement.

Une fois votre build démarrée, vous serez redirigé·e vers la page de vue d'ensemble de la build. L'onglet Build Log sera ouvert et affichera en temps réel les données concernant votre build.

Après l'exécution de la build, vous serez redirigé·e vers la page de vue d'ensemble de la build. Vous pouvez maintenant consulter les résultats de vos tests et de vos inspections, ou parcourir le journal complet de la build depuis la page de vue d'ensemble de la build.

Étape 3 : configuration de votre projet Python TeamCity

Maintenant que votre dépôt Python est connecté à TeamCity, vous pouvez continuer à développer et à envoyer votre code vers le dépôt en mode push.

Par défaut, TeamCity interroge la branche principale de votre dépôt VCS toutes les 60 secondes pour les changements entrants et déclenche un build (combiné) pour tous les commits détectés.

Génération de branches

Si vous voulez déclencher un build pour chaque changement apporté à n'importe quelle branche de votre dépôt, et pas seulement à la branche principale, ajoutez une spécification de branche avec un caractère générique à vos paramètres racine VCS. Notez que les paramètres VCS appartiennent au projet TeamCity, et non à une seule configuration de build. Par conséquent, toute modification apportée est appliquée à toutes les configurations de build qui utilisent la même racine VCS.

  1. Sur la page de présentation du projet, cliquez sur Edit Project. Alternativement, si la configuration de build Build est ouverte, cliquez sur Edit Configuration.
  2. Accédez à VCS Roots (systèmes de contrôle de version) et modifiez votre racine VCS.
  3. Remplissez le champ de saisie Branch Specification, puis cliquez sur Save. Si le champ de saisie Branch Specification n'apparaît pas, cliquez d'abord sur Show Advanced.

Exemples de spécifications de branches :

  • +:refs/heads/* : TeamCity vérifiera les changements dans toutes les branches de vos projets, mais ne vérifiera pas les requêtes Pull sur des plateformes comme GitHub dans la mesure où elles correspondent à refs/pull/*.
  • +:* : TeamCity vérifiera toutes les modifications entrantes sur toutes les branche.
  • Votre propre spécification de branche personnalisée.

TeamCity surveille désormais toutes les branches qui sont conformes à votre spécification de branche et qui sont transmises à votre dépôt, en vérifiant les changements entrants, et il exécute les builds en conséquence.

Création de requêtes pull

Si vous souhaitez que TeamCity fasse un build automatique des requêtes Pull faites sur votre dépôt, vous pouvez ajouter la fonctionnalité de build Pull Request à votre configuration de build.

  1. Ouvrez votre configuration de build et cliquez sur Edit Configuration.
  2. Accédez à Build Features, puis cliquez sur Add Build Feature. Si le lien Build Features n'apparaît pas, cliquez sur Show More.
  3. Sélectionnez Pull Requests dans la liste déroulante et choisissez votre dépôt, ainsi que le fournisseur de dépôt (GitHub, GitLab, ou similaire).
  4. En option, appliquez le filtrage de Pull Request, par auteur ou nom de branche.

Remarque : la fonctionnalité de build Pull Request étend de manière transparente la spécification de branche (voir l'étape précédente pour plus d'informations). Par exemple, dans le cas de GitHub, la fonctionnalité de requête Pull ajoute (de manière invisible) +:refs/pull/* à votre spécification de branche.

Nous recommandons de vous assurer que les branches de requêtes Pull ne sont pas incluses dans votre spécification de branche générale lorsque la fonctionnalité de requête Pull est utilisée. Sinon, les fonctionnalités liées aux requêtes Pull ne seront pas disponibles dans TeamCity.

TeamCity détecte désormais les requêtes Pull sur la plateforme externe et déclenche un build pour celles qui correspondent à vos règles de configuration.

Remarque : Vous devriez utiliser cette fonctionnalité avec prudence sur les dépôts publics, car n'importe qui pourrait publier du code nuisible dans le dépôt (que vous ne voudriez surtout pas inclure dans votre build).

Commit Status Publisher

When using the pull requests feature in combination with Azure DevOps, Bitbucket Server, GitHub, or GitLab, it also makes sense to use the Commit Status Publisher build feature. Cette fonctionnalité met à jour le statut de la requête Pull sur la plateforme correspondante avec les résultats du build.

Pour configurer TeamCity afin de transmettre les résultats du build à GitHub, veuillez suivre les étapes suivantes :

  1. Ouvrez votre configuration de build et cliquez sur Edit Configuration.
  2. Accédez à Build Features, puis cliquez sur Add Build Feature.
  3. Sélectionnez Commit Status Publisher dans la liste déroulante et choisissez votre dépôt, ainsi qu'un éditeur (GitHub, GitLab, ou similaire).
  4. Fournissez un jeton d'accès avec les autorisations appropriées pour publier les statuts de commit.
  5. Cliquons sur Save.

Après que TeamCity a exécuté un build, vous pourrez désormais facilement voir si les changements ont causé un échec de build directement depuis l'onglet Pull Request sur GitHub (coche verte).