Publicación automática en el repositorio oficial de WordPress

Para empezar, es necesario saber que el repositorio oficial de WordPress es un repositorio Subversion, un sistema de control de versiones que actualmente carece de popularidad, por lo que a mi, como a tantos otros desarrolladores nos resulta incomodo.

Por otra parte esta Git, otro sistema de control de versiones, con el cual me siento como pez en el agua y GitHub es un repositorio bastante popular, que nos permite almacenar/publicar nuestro código.

Bueno este articulo va de como hacer que GitHub se encargue de la parte fea y publique nuestro código en el repositorio oficial de WordPress de forma automática.

El proceso

  1. La primera vez que publicamos en el repositorio oficial de WordPress, es mediante un archivo .zip que subimos en un formulario. Si todo sale bien, nos generan un repositorio SVN y nos dan acceso al mismo.
  2. En GitHub
    1. Creamos el repositorio
    2. En Settings -> Secrets agregamos las variables SVN_PASSWORD y SVN_USERNAME
  3. En nuestro fuente
    1. Creamos el archivo .github/workflows/wordpress-plugin-deploy.yml
    2. Creamos la carpeta .wordpress-org, con los archivos que anteriormente teníamos en la carpeta «assets»
    3. Opcionalmente podemos crear el archivo .gitattributes con los archivos que no deseamos publicar.
  4. Ahora tenemos que subir todo a GitHub
    git commit -a -m "Primer commit"
    git push -u origin master

    Este paso es necesario para que en el próximo push, GitHub ejecute el los comandos que publicamos en .github/workflows/wordpress-plugin-deploy.yml
  5. A partir de ahora el proceso es siempre el mismo, modificamos, generamos un nuevo release y volver a subir a GitHub
    git flow release start 0.0.1
    Es en este punto donde no debemos olvidar de actualizar el readme.txt ni el número de version
    git commit -a -m "Nueva version 0.0.1«
    git flow release finish '0.0.1'
    git push --tags -u origin master
    Nota: Es necesario subir las etiquetas ya que el comando solo se ejecuta bajo esta condición. Por otra parte personalmente utilizo git flow para agilizar todo el asunto.

Referencias