webhook example github gitlab webhooks

example - github webhooks



¿Cómo crear un webhook de Gitlab para actualizar un repositorio espejo en Github? (3)

Me gustaría crear un webhook dentro de Gitlab para actualizar automáticamente un repositorio espejo en Github, siempre que ocurra un evento push . Revisé esta page , pero no entendí cómo se hace.

Mi versión de Gitlab es 6.5. Aquí está la página de configuración:

¿Qué debería poner en la URL? ¿Dónde debo colocar el script para actualizar el repositorio?


No necesita un webhook para eso. Un gancho de post-recepción regular funcionará muy bien.

Para crear y usar dicho enganche, solo tiene que iniciar sesión en el servidor donde está instalado su gitlab y crear una clave ssh para el usuario de git.

sudo -u git ssh-keygen -f /home/git/.ssh/reponame_key

(no escriba ninguna frase de contraseña cuando se le solicite)

Vaya a su cuenta de github y agregue la clave pública (se ha creado como /home/git/ssh/reponame_key.pub ) a su proyecto como una clave de implementación. eche un vistazo a https://help.github.com/articles/managing-deploy-keys si necesita ayuda con eso.

Una vez hecho esto, solo tiene que configurar la conexión entre su servidor git y github: agregue un alias a la configuración ssh del usuario git (agregue las siguientes líneas a /home/git/.ssh/config - /home/git/.ssh/config si no está presente)

Host reponame IdentityFile /home/git/.ssh/reponame_key HostName github.com User git

Ahora agregue el nuevo control remoto (usando el alias que acaba de crear) a su repositorio:

cd /home/git/repositories/namespace/reponame.git git remote add --mirror github reponame:youruser/reponame.git

Ahora que todo está en su lugar, tendrás que crear el gancho real:

cd /home/git/repositories/namespace/reponame.git/hooks echo "exec git push --quiet github &" >> post-receive chmod 755 post-receive

El último comando es muy importante porque git comprobará si un enganche es ejecutable antes de ejecutarlo.

¡Eso es!

(Reemplace el nombre de pila, el espacio de nombres y su usuario de acuerdo con sus cuentas reales y disfrute).

Última nota: si quieres que tu nombre yvatar cerca de commit en github, asegúrate de que la dirección de correo electrónico que estás usando en gitlab sea una de las direcciones ingresadas a tu cuenta de github también. Verás tu nombre de usuario gitlab de lo contrario.


Para el procesamiento de WebHooks, estoy usando el servidor web sinatra.

require ''sinatra'' post ''/pew'' do puts JSON.parse request.body.read # here can be placed signal code to run commit processing script end

registra webhook para push events (u otro) a http://localhost:4567/pew dentro de GitLab y desde este momento en cada commit gitlab enviará información de commit a url.


Si no está alojando su propio GitLab, GitLab.com ha introducido esta característica directamente, sin soluciones provisionales.

  1. Desde dentro de un proyecto, use el ícono de ajustes para seleccionar Mirror Repository
  2. Desplácese hacia abajo para enviar a un repositorio remoto
  3. Checkmark Remote mirror repository : actualiza automáticamente las ramificaciones, las etiquetas y las confirmaciones de la réplica remota desde este repositorio cada hora.
  4. Ingrese el repositorio que desea actualizar; para GitHub puede incluir su nombre de usuario y contraseña en la URL, de la siguiente manera: https://yourgithubusername:[email protected]/agaric/guts_discuss_resource.git