Deploy automático de Rust con GitHub Actions

Resumen

Desplegar una aplicación Rust en Heroku usando GitHub Actions automatiza el proceso de subir tu proyecto a la nube cada vez que haces push a tu rama principal. Aprenderás a configurar el flujo completo, desde los secrets hasta el workflow en YAML, para que tu app quede accesible en Internet con una URL pública.

Cómo preparas el repositorio y los secrets en GitHub

Antes de tocar cualquier archivo de configuración, tu código debe vivir en un repositorio de GitHub junto con tu Dockerfile y todo lo que la aplicación necesita para correr [01:10]. Si nunca has trabajado con Git, conviene reforzar esa base antes de continuar.

Una vez tengas el repositorio listo, entra a Settings, busca la sección Secrets dentro de Actions y añade un nuevo repository secret. Aquí es donde vivirá la llave que conecta GitHub con Heroku.

Cómo generas la Heroku API Key

Abre tu aplicación en Heroku, en este caso Blog Platzi, y entra a la pestaña Deploy. Desde tu terminal, ejecuta los siguientes comandos:

  • heroku login para abrir el navegador y autenticarte en tu cuenta.
  • heroku authorizations:create para generar un token válido que GitHub Actions usará en cada despliegue.

Copia ese token, regresa a GitHub y guárdalo con el nombre HEROKU_API_KEY. Ese valor será leído por el workflow sin exponerlo en el código.

¿Qué es un secret en GitHub Actions? Es una variable de entorno cifrada que el repositorio guarda para que tus workflows la usen sin mostrarla en los logs ni en el código fuente.

Cómo configuras el workflow de GitHub Actions con YAML

El flujo de trabajo se define en un archivo YAML dentro de una estructura de carpetas específica. Crea la carpeta .github en la raíz del proyecto y, dentro, otra llamada workflows. Allí coloca un archivo nuevo llamado main.yaml.

Dentro de ese archivo pegas el workflow base y solo cambias dos cosas:

  • La rama desde la que se dispara el despliegue, en branches. En el ejemplo se usa main.
  • El app_name con el nombre exacto de tu aplicación en Heroku, en este caso blog-platzi.
  • El correo electrónico asociado a tu cuenta de Heroku.

Un detalle fácil de pasar por alto: en el Dockerfile debes borrar la línea que copia el archivo .env a la carpeta app [03:30]. Esa instrucción solo tiene sentido en local, porque en Heroku las variables de entorno se configuran directamente desde el dashboard de la aplicación.

Cómo lanzas el primer deploy con git push

Con el workflow listo y el Dockerfile corregido, los pasos son los de siempre:

  1. git add . para preparar los cambios.
  2. git commit -m "workflow generation" para registrarlos.
  3. git push origin main para enviarlos al repositorio remoto.

Lo recomendable en proyectos reales es trabajar con ramas y pull requests, pero para este ejemplo el push directo a main funciona como disparador del despliegue.

Cómo verificas el deploy y revisas logs en Heroku

En tu repositorio de GitHub aparecerá la carpeta .github y, en la pestaña Actions, verás el workflow workflow generation ejecutándose. Al hacer clic en Build se muestra el estado en tiempo real.

El proceso completo tarda alrededor de cinco o seis minutos [04:30]. Cuando termina con éxito, la aplicación queda publicada en un dominio del estilo blog-platzi.heroku.app, accesible desde el botón Open app del dashboard.

¿Cómo veo errores de mi app en Heroku? Entra al dashboard, abre el menú More y selecciona View logs. Allí aparecen todos los comandos ejecutados y los errores que haya lanzado tu aplicación.

Si necesitas correr un comando puntual, como una migración o un build manual, usa Run Console desde el mismo menú. Desde esa consola puedes ejecutar instrucciones como cargo run o cargo build directamente sobre el contenedor desplegado.

Cómo encajan Docker, Heroku y GitHub Actions en el flujo

El Dockerfile define cómo se construye la imagen de tu aplicación Rust, Heroku la aloja y le asigna un dominio público, y GitHub Actions orquesta el despliegue automático cada vez que detecta cambios en la rama configurada. Los tres trabajan juntos para que tu único trabajo sea escribir código y hacer push.

Con el proyecto ya en Internet, cualquier persona con la URL puede acceder a él. ¿Qué vas a hacer con tu primera app Rust en producción? Cuéntame en los comentarios si vas a migrar tu portafolio, lanzar un blog o experimentar con una API.