Gitlab regresa a control remoto: no tienes permissions para hacer esto. mientras se realiza el envío de scripts de git

Mi escenario es el siguiente:

tenemos un gitlab configurado para nuestro equipo donde realizamos todo nuestro desarrollo con sucursales, etc. También tenemos un repository oficial alojado por nuestra empresa donde nos gustaría tener nuestra twig principal reflejada para que las personas (que tienen acceso a este repository en nuestra compañía) puede ver nuestro código.

He escrito un gancho post-receive que reflejaría commits empujados a la twig master en gitlab hacia el repository oficial: ( /opt/gitlab/embedded/service/gitlab-shell/hooks/post-receive en gitlab)

 #!/opt/gitlab/embedded/bin/ruby # Fix the PATH so that gitlab-shell can find git-upload-pack and friends. ENV['PATH'] = '/opt/gitlab/bin:/opt/gitlab/embedded/bin:' + ENV['PATH'] #!/usr/bin/env ruby # This file was placed here by GitLab. It makes sure that your pushed commits # will be processed properly. # deveo_server="deveo@deveo.XXXX.com:XXXX/projects/XXXX/repositories/git/Project" from, to, branch = ARGF.read.split " " if (branch =~ /master$/) == nil puts "Received branch #{branch}, not deploying." exit end `git remote add deveo #{deveo_server} >/dev/null 2>&1` `git push deveo master` puts "DEPLOY: master(#{to}) mirronetworking to '#{deveo_server}'" refs = ARGF.read key_id = ENV['GL_ID'] repo_path = Dir.pwd require_relative '../lib/gitlab_custom_hook' require_relative '../lib/gitlab_post_receive' if GitlabPostReceive.new(repo_path, key_id, refs).exec && GitlabCustomHook.new.post_receive(refs, repo_path) exit 0 else exit 1 end 

El problema es que cuando hago esto recibo lo siguiente cuando me comprometo con la twig principal de gitlab:

 [master aa4a4f2] testing hooks 7 0 files changed create mode 100644 testing_hooks_7 Counting objects: 3, done. Delta compression using up to 2 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (2/2), 264 bytes, done. Total 2 (delta 1), reused 0 (delta 0) remote: You do not have permissions to do this. remote: fatal: Could not read from remote repository. remote: remote: Please make sure you have the correct access rights remote: and the repository exists. remote: DEPLOY: master(aa4a4f218b7bc335ee3e0d6d52df5cfd5ddc1c99) mirronetworking to 'deveo@deveo.XXXX.com:XXXX/projects/XXXX/repositories/git/Project' To git@projectgitlab.net:XXXX/Project.git 1e92695..aa4a4f2 master -> master 

Lancé el agente ssh allí y agregué el ssh de git user de gitlab a deveo, pero falta algo.

Esto funcionó cuando configuré esto con un repository simple al lado de mi repository local en mi máquina local, por lo que debe haber algunas keys que faltan en alguna parte … pero ¿dónde :(?

Ok, el problema fue que el bot (en desarrollo) que he creado era un bot de read-only . Necesitaba ir en deveo a las project options -> Settings and bot accounts -> bot -> give this bot write permissions to repositories .

Y, por supuesto, necesitaba agregar git user ssh key (del host de gitlab) a deveo.

Ahora funciona bien 🙂