web-dev-qa-db-fra.com

Gated Check-ins/pré-testés pour Git?

Je souhaite migrer de TFS (Team Foundation Server) vers Git, mais je ne trouve rien qui corresponde à la prise en charge par TFS des archivages synchronisés (également appelés commits pré-testés ou retardés).

Atlassian Bamboo ne prend pas en charge les enregistrements sécurisés. TeamCity le supporte ("retards retardés" en utilisant leur terminologie), mais pas pour Git. Utiliser Jenkins seul ou Jenkins + Gerrit présente d’énormes inconvénients et n’est pas proche de la fonctionnalité d’enregistrement sécurisé dans TFS. (Inconvénients expliqués par le créateur de Jenkins lui-même dans cette vidéo: http://www.youtube.com/watch?v=LvCVw5gnAo0 )

Git est très populaire (pour une bonne raison), alors comment les gens résolvent-ils ce problème? Quelle est actuellement la meilleure solution?

27
user479911

Nous venons tout juste de commencer à utiliser git et avons implémenté des commits pré-testés à l'aide de workflows (j'ai fini de le tester aujourd'hui).

en gros, chaque développeur dispose d’un référentiel personnel auquel il a accès en lecture/écriture. Dans notre cas, le serveur de génération TeamCity construit à l'aide de ces référentiels personnels, puis en cas de succès, applique les modifications au référentiel "vert". Les développeurs n'ont pas d'accès en écriture à «vert», seuls les agents de build de TeamCity peuvent écrire dans ce domaine, mais les développeurs extraient les mises à jour communes de «vert».

Ainsi, dev tire de «vert», passe à personnel, TeamCity construit de personnel, passe au vert.

Cet article de blog montre le modèle de base que nous utilisons, avec les forks GitHub pour les référentiels personnels (utiliser des forks signifie que le nombre de référentiels ne devient pas incontrôlable et finit par coûter plus cher, et que les développeurs peuvent gérez les versions personnelles, car elles peuvent créer un groupe de tâches et créer ensuite les tâches de génération de l’équipe pour que leur code devienne «vert»):

enter image description here

C’est un travail supplémentaire à configurer dans TeamCity, car chaque développeur doit disposer de sa propre configuration. Ce qui doit en fait être 2 configurations car TeamCity semble exécuter toutes les étapes de la construction (y compris la dernière étape «Push to green») même si les étapes précédentes de la construction échouent (comme les tests :)), ce qui impliquait de disposer d'un construire pour le développeur, puis une autre configuration qui dépendait de cela, qui ferait juste le Push en supposant que la construction marchait.

16
Sam Holder

Check out Verigreen - Un système d’enregistrement léger, contrôlé par le serveur. Il vérifie chaque commit avant de se retrouver dans les branches protégées par le système. Verigreen n'autorisera aucun engagement de CI ayant échoué d'interrompre l'intégration, la publication ni aucune branche devant être protégée. En outre, il s'agit d'un projet libre et à code source ouvert.

Fonctionnement: Verigreen intercepte les enregistrements et exécute la vérification dans une branche ad-hoc. Ainsi, en cas d'échec de la validation, seul le développeur concerné est affecté.

  • Un hook de pré-réception intercepte et crée une branche ad-hoc du code.
  • La vérification est exécutée via un travail Jenkins. Le contenu du travail de vérification est entièrement configurable.
  • Le code vérifié est fusionné dans la branche protégée, tandis qu'une validation ayant échoué est bloquée avec une notification envoyée au développeur.

 enter image description here

Les décisions sont prises en fonction du flux suivant:

 Verigreen - Basic Flow

Pour plus d'informations, s'il vous plaît voir le wiki ou Verigreen.io site

9
soninob

Je pense qu'après le 23 octobre 2013 la réponse peut être - Fusion automatique dans TeamCity .

4
Stanislav

git a une philosophie différente - les commits sont faciles, commettez comme vous le souhaitez. Si quelque chose ne va pas, vous pouvez le changer plus tard. Et les fusions sont faciles. Vous pouvez donc organiser un flux de travail approprié, par exemple Les développeurs peuvent s’engager dans une ou des branches distinctes. Lorsqu'une branche est testée, elle peut être fusionnée dans une branche principale.

0
kan

Pourquoi ne pas utiliser TFS comme référentiel central et utiliser GIT comme solution DVCS locale?

Cela vous permettrait de construire et de valider localement, puis d'envoyer ce que vous voulez au serveur TFS et de faire une construction gated.

Parfois, il est bon d'avoir le meilleur des deux mondes ...

Avec VS Team Services (fka Visual Studio Online) et TFS 2015 ou une version plus récente, vous pouvez utiliser des stratégies de branche nécessitant une construction passe pour une demande d'extraction sous la forme d'un flux de travail d'archivage sécurisé avec Git.

0
Buck Hodges