es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Bitbucket Pipeline no maneja la URL relativa del submódulo git para la comprobación SSH?

Tengo un repositorio git alojado en Bitbucket, el cual tiene un submodule de git.
Me gustaría usar una URL relativa para permitir tanto el uso de https como de ssh en el archivo .gitmodules:

[submodule "sm-ourlib"]
path = sm-ourlib
url = git@bitbucket.org:companyname/ourlib.git

Utilice una URL relativa para permitir tanto el acceso HTTP como el acceso SSH, consulte https://stackoverflow.com/a/44630028/50899.

url = ../ourlib.git

Sin embargo, parece que los pipelines de Bitbucket no pueden manejar la URL relativa como se espera, ya que no utiliza SSH para el subrepositorio de las URL relativas, sino que utiliza HTTPS y falla (para la URL absoluta, utiliza SSH correctamente).

La ejecución del pipeline falla en el paso git submodule update --init con el siguiente mensaje:

+ git submodule update --init
Submódulo 'sm-ourlib' (http://bitbucket.org/companyname/ourlib.git) registrado en la ruta 'sm-ourlib'
Clonando en '/opt/atlassian/pipelines/agent/build/sm-ourlib'...
fatal: no se pudo leer el nombre de usuario para 'https://bitbucket.org': No hay ningún dispositivo o dirección
fatal: la clonación de 'http://bitbucket.org/companyname/ourlib.git' en la ruta del submódulo '/opt/atlassian/pipelines/agent/build/sm-ourlib' falló
Error al clonar 'sm-ourlib'. Se programó un nuevo intento
Clonando en '/opt/atlassian/pipelines/agent/build/sm-ourlib'...
fatal: no se pudo leer el nombre de usuario para 'https://bitbucket.org': No hay ningún dispositivo o dirección
fatal: la clonación de 'http://bitbucket.org/companyname/ourlib.git' en la ruta del submódulo '/opt/atlassian/pipelines/agent/build/sm-ourlib' falló
Error al clonar 'sm-ourlib' por segunda vez, se aborta

¿Es este un problema conocido o estoy haciendo algo mal?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que cuando se utiliza una URL relativa en el archivo .gitmodules, Bitbucket Pipelines no utiliza el protocolo correcto para el repositorio del submódulo. En lugar de utilizar SSH, se utiliza HTTPS de forma predeterminada, lo que resulta en un error de “no existe tal dispositivo o dirección”. Este problema parece ser un problema conocido con Bitbucket Pipelines y existen varias posibles soluciones alternativas disponibles.

    Una forma de solucionar este problema es configurar la variable de entorno GIT_SUBMODULES_HTTPS en “true” en la configuración de Bitbucket Pipelines. Esto obligará a Git a utilizar HTTPS para todos los submódulos, independientemente de la URL especificada en el archivo .gitmodules. Si bien esta solución funcionará, puede que no sea ideal si necesita utilizar SSH para otros repositorios.

    Otra solución es utilizar un cliente Git diferente en su canalización que pueda manejar las URL relativas correctamente. Algunos usuarios han informado de éxito al utilizar el archivo .ssh/config para especificar un cliente Git diferente, como Git LFS o la herramienta de línea de comandos Git. Esto puede requerir alguna configuración adicional por su parte, pero puede ser una solución alternativa más confiable que configurar la variable de entorno GIT_SUBMODULES_HTTPS.

    En cualquier caso, es importante tener en cuenta que este problema no está relacionado con SSH ni con ninguna herramienta en particular, sino más bien con la forma en que Bitbucket Pipelines maneja los submódulos con URL relativas. Si encuentra este problema, puede ser útil buscar otros usuarios que hayan tenido problemas similares y ver qué soluciones han encontrado.

Comments are closed.