Clonado y deploy desde repositorio remoto privado

En otros artículos hemos hablado de las estrategías de deploy, como crear o clonar un repositorio desde cPanel e incluso aplicar cambios desde dicha interfaz.

No obstante hoy trataremos un método diferente ya que el uso de la interfaz de cPanel no suele ser la mejor opción cuando se trabaja con un repositorio remoto que es privado.

En el siguiente ejemplo clonaremos un repositorio privado alojado en Github, y tomaremos los cambios desde el mismo cuando sea necesario.

Requisitos

Ten en cuenta que trabajaremos con la terminal, por lo que es esencial que tengas un mínimo de conocimientos de su uso así como habilites el acceso SSH en tu servicio de hosting.

Una vez dentro, comprueba que dispones de una clave pública creada, para ello ejecuta:

cat ~/.ssh/id_rsa.pub

Obtendrás un resultado tipo:

ssh-rsa AAAAB3Nza...
...

Copia el contenido que muestre. Si por el contrario recibes un error de fichero inexistente, deberás generar una nueva, para ello ejecuta:

ssh-keygen -t rsa -b 4096

Y sigue los pasos que se indican, recuerda que si introduces una "passphrase", se solicitará como contraseña al usar la clave, lo que significa que al hacer un clonado, push o pull se solicitará, puedes dejar vacío este cambio para evitar este comportamiento.

Una vez generada vuelve a ejecutar el primer comando para obtener la clave pública y copiala.

Dando permisos desde Github

Ahora debemos permitir el acceso desde nuestro servidor al repositorio privado, en el caso de Github, accede al repositorio en cuestión:

  • Haz click en la sección Settings.
  • En el menú lateral, SSH and GPG keys.
  • New SSH key para añadir nuestra clave.
  • En key introduce el código copiado y en title un identificador, por ejemplo cpanel, para recordar de que clave se trata.
  • Pulsa Add SSH key y listo, ya has dado permisos al sistema.

Para comprobar que todo está correcto, ejecuta vía SSH en tu cuenta:

ssh -T git@github.com

Si recibes una salida tipo:

Hi user/repository! You've successfully authenticated, but GitHub does not provide shell access.

Significa que todo está ok y podemos continuar los pasos.

Si por el contrario recibes Permission denied (publickey). significa que no tienes permisos, revisa el proceso de nuevo ya que debe haber algún paso no realizado correctamente.

Estos pasos son para Github, no obstante otras plataformas tipo Bitbucket tendrán un proceso similar por medio de autentificación por claves SSH.

Clonando el repositorio privado

Copia la url del repositorio desde la opción "Clone or download", url tipo Clone with SSH:

Y clona vía ssh, por ejemplo si queremos que el repositorio se vuelque sobre public_html, haríamos:

git clone git@github.com:usuario/repositorio.git ~/public_html

Y listo, ya tenemos nuestra app clonada desde el repositorio privado alojado en Github, con todos los ficheros y contenido sobre public_html.

Aplicando cambios

Si hemos realizado cambios en el repositorio que actua como master, alojado en Github y queremos aplicarlos al servidor, simplemente accedemos vía SSH al directorio donde está nuestro repositorio en nuestro servicio de hosting y ejecutamos git pull para tomar los cambios.

Si en cambio queremos aplicar cambios realizados en el propio hosting (estrategía no recomendable, el hosting al ser el entorno en producción solo debería recibir cambios, nunca enviar hacia Github) usaríamos git push para enviar dichos cambios hacia Github.

Consideraciones

Git en nuestro sistema funciona al igual que en tu propio equipo local, no tendrías ningún tipo de limitación de uso, por ejemplo si quieres prescindir de Github, puedes crear un repositorio que actue de "privado" en tu propia cuenta de hosting y esté alojado fuera de public_html, conectar tu equipo a dicho repositorio remoto. Tras esto podrías clonar dicho repositorio en public_html y hacer deploy de los cambios, todo esto se podría hacer desde la interfaz de cPanel.