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.
- Desde dentro de un proyecto, use el ícono de ajustes para seleccionar Mirror Repository
- Desplácese hacia abajo para enviar a un repositorio remoto
- Checkmark Remote mirror repository : actualiza automáticamente las ramificaciones, las etiquetas y las confirmaciones de la réplica remota desde este repositorio cada hora.
- 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