Gerrit como una herramienta de revisión, no como el repository de logging

He creado una instancia de gerrit de la guía de inicio rápido.

Mi empresa utiliza BitBucket con requestes de extracción y, ocasionalmente, críticas para revisiones de códigos. Usamos Jenkins con una extensa línea de deployment / implementación vinculada a BitBucket.

Nos gustaría integrar Gerrit para la revisión del código debido a su capacidad de realizar compromisos y comstackrlos / verificarlos antes de que se acepte la revisión.

Básicamente, quiero que el button de "enviar" de Gerrit avance hasta BitBucket. (Prefiero no tratar de tratar de hacer esto mediante la replicación, quiero mantener BitBucket como upstream / repository de logging debido a la inercia corporativa).

¿Alguien tiene alguna sugerencia de cómo lograr esto? ¿Existe la capacidad, o es esta una idea novedosa?

Gerrit implementa sus funcionalidades de revisión de código al proporcionar una envoltura (más o less) delgada alnetworkingedor de un repository real de Git alojado dentro de Gerrit. Que yo sepa, no hay posibilidad de integrar un repository externo de Git directamente en Gerrit.

Esto significa que, al utilizar Gerrit, el repository de Git debe estar alojado dentro de Gerrit . En consecuencia, deberá mantener una copy completa de su repository de BitBucket en su instancia de Gerrit. Así que esta pregunta básicamente se networkinguce a mantener dos repositorys Git sincronizados .

Sincronización de nuevas confirmaciones de BitBucket a Gerrit

Como ya está usando Jenkins, recomendaría una compilation de Jenkins para actualizar su repository de Gerrit cada vez que se envíen nuevos commits al repository de BitBucket. Para esto, necesitarás:

  1. Un usuario de Gerrit con capacidades de inserción directa. Para esto, deberá otorgar privilegios de Push en refs/heads/* ref en su proyecto de Gerrit. Este usuario será utilizado por Jenkins. Tenga cuidado de no otorgar este privilegio a los usuarios finales, o podrán omitir la revisión del código presionando directamente.
  2. Un trabajo de Jenkins configurado para comstackr cada vez que se envían nuevos commits a tu repository de BitBucket. Dentro de ese trabajo, simplemente empuja todas las twigs a tu instancia de Gerrit.
  3. Configure un gancho de service BitBucket para activar su compilation de Jenkins (para esto, su instancia de Jenkins deberá ser públicamente accesible; de ​​lo contrario, simplemente configure el cronogtwig de su trabajo de Jenkins en un intervalo corto para minimizar la demora en la synchronization).

Sincronización de nuevos commits de Gerrit a BitBucket

Al enviar revisiones de código en Gerrit, las nuevas confirmaciones deberán ser devueltas a BitBucket. Normalmente, recomiendo usar el complemento de replicación para eso . Así es como se vería un file de configuration respectivo (va en etc/replication.config en su directory de Gerrit):

 [remote "bitbucket"] url = ssh://git@bitbucket.org/<your-user>/${name}.git push = +refs/tags/*:refs/tags/* push = +refs/heads/*:refs/heads/* mirror = true replicateOnStartup = true replicatePermissions = false 

Como mencionó que le gustaría evitar el uso de la replicación, también puede usar un trabajo de Jenkins para sincronizar las confirmaciones de Gerrit a BitBucket. Para minimizar la demora, puede usar el complemento Gerrit Trigger para Jenkins (que querrá usar de todos modos para sus comprobaciones previas). Alternativamente, puede usar un gancho personalizado de Gerrit que coloque en hooks/ref-updated para desencadenar una compilation de Jenkins (deje un comentario si desea que lo amplíe).

¡Espero que esto ayude!