Publicar desde un repositorio privado de Github

Es muy probable que tengas plugins o themes para clientes que no son públicos, o código que usas para alguno de tus sitios, que está en Github, y que quieres que se haga un deploy de forma automática.

Este tutorial ha sido creado en un VPS de Clouding.io. Puedes crear tu propio VPS desde 3€/mes.

Además, tienes la posibilidad de crear tu VPS con la imagen de WordPress en un clic.

COLABORACIÓN

Lo primero que necesitamos es un repositorio en Github (o Gitlab).

Esta plataforma, en su sección de Settings incluye una subsección llamada Deploy keys.

Para añadir una nueva clave necesitaremos ponerle un nombre e incluir su clave.

Así que lo primero que hemos de hacer es ir al servidor donde vamos a publicar el contenido de repositorio y crear una.

Entraremos por SSH en el servidor de la web y crearemos una clave. Por favor, revisa la cuenta de correo y pon la tuya (es recomendable que sea la misma de Github).

ssh-keygen -t rsa -b 4096 -C wordpress@example.com

Primero te preguntará dónde quieres dejar tu clave (puedes dejarla en la carpeta que te recomiende) o crear una clave para tu plugin en concreto (vamos a usar /root/.ssh/mi-plugin.id_rsa)

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):

Posteriormente te pedirá una contraseña. En este caso no pondremos ninguna. El propio servidor será la contraseña.

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

Esto creará tu clave y la guardará, generando dos ficheros, la clave privada (id_rsa) y la clave pública (id_rsa.pub).

Your identification has been saved in /root/.ssh/mi-plugin.id_rsa
Your public key has been saved in /root/.ssh/mi-plugin.id_rsa.pub

Finalmente se generará un identificador único:

The key fingerprint is:
SHA256:0c7GNvve9cXvzZ0uCcyXncAVNHZXCmumyWLGbXbUuHg wordpress@example.com

Puedes revisar que se han creado las dos. Primero veremos la clave privada.

cat /root/.ssh/mi-plugin.id_rsa

Y posteriormente la clave pública.

cat /root/.ssh/mi-plugin.id_rsa.pub

Este último código que aparece por pantalla es el que deberemos incluir en Github. Para ello, en el Add new Deploy key, pondremos un nombre (por ejemplo, Plugin mi-plugin en servidor1).

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDMCNTqCtJEAQGnIgFlzeATKvAyezbbSOO0Di7NlRIpVsqm2zGoygnGlLIvLXzIs5IzAGwWLHJkdK8Pm5KvbgrToH2eq1BI8pfpFcI4HwiyjV871QzGcpJbtXnj6tRkmp2eJeFBVdZn8gFfIhlKW8n94yQLQb8OTEm57yiBxPpx97tsT/AAOM/q2KC+KACb1cve31dVAA6vkzOA47curc008iRslWLRdM7ybT/1gUWMmI/10329kYZscd0ZDFtdpfz99Z+Jz0BN/3O6OrUtYmMQKXOGoGTL10n/W9E8KjPzXB4u7tHzzCOIF1tqUD/vhn7CksT25/Pi82jX3aFJh55WuUObtBCd9oRwcF8Th1VZLaV3WEpzroZu1b883rdMDo1+O96lK17zz2oEGZ7OOmm03bnpSdY1/5js/WmdQ7LYnh9tSroSFGVighcrgwPmiJbLXAYWBB79eVqSjt0pX50igl3BnToQy0d5o2ZgrpnPP77RrTlwmCqQxw5H+uR2FH0nKvP8IWTcYHmAeWiajzPo0rhvy8HV2Hvi4seXmpDWax90KB1QdzsHNWIu0gH1OExY2ibcrlRFuaSsfAh0JH6UJSvFfjRt9LYFAb92gwJ/V/82x1GOVNjxLjgrTfxFL3k2trgwFxzioRf7mQveaRChR8IpO7tyc3/kH5mfv/ECRw== wordpress@example.com

Es importante que no marquemos la opción de Modo escritura, ya que no es el objetivo de esta clave, que es sólo lectura.

Lo siguiente que haremos es añadir una configuración en el servidor.

vim ~/.ssh/config

E incluiremos algo tal que así.

Host mi-plugin
  Hostname github.com
  User git
  IdentityFile /root/.ssh/mi-plugin.id_rsa
  IdentitiesOnly yes

Iremos a la carpeta del sitio web en el que queremos hacer el deploy.

cd /webs/www.example.com/wp-content/plugins/

Y lanzaremos la primera sincronización.

git clone git@mi-plugin:wpsysadmin/mi-plugin.git carpeta-plugin

Deberemos aceptar la primera conexión para que se guarde la confianza entre los servidores.

Una vez acabado, veremos que hay una carpeta creada, tal y como la hemos llamado previamente.

cd carpeta-plugin/

Allí tendremos ya la primera descarga del repositorio.

A partir de aquí, podemos actualizar ejecutando, en esa carpeta, la siguiente llamada.

git pull origin main

A partir de aquí se puede plantear automatizar la descarga y sincronización según se necesite.


Sobre este documento

Este documento está regulado por la licencia EUPL v1.2, publicado en WP SysAdmin y creado por Javier Casares. Por favor, si utilizas este contenido en tu sitio web, tu presentación o cualquier material que distribuyas, recuerda hacer una mención a este sitio o a su autor, y teniendo que poner el material que crees bajo licencia EUPL.