Ruby: Despliegue con GitHub Actions

Cómo desplegar su código Ruby utilizando GitHub Actions

👋 ¡Bienvenido a la documentación de Stackhero!

Stackhero ofrece una solución Ruby cloud lista para usar que proporciona una serie de beneficios, incluyendo:

  • Despliegue su aplicación en segundos con un simple git push.
  • Use su propio nombre de dominio y benefíciese de la configuración automática de certificados HTTPS para una mayor seguridad.
  • Disfrute de la tranquilidad con copias de seguridad automáticas, actualizaciones con un clic, y precios sencillos, transparentes y predecibles.
  • Obtenga un rendimiento óptimo y una seguridad robusta gracias a una VM privada y dedicada.

Ahorre tiempo y simplifique su vida: solo toma 5 minutos probar la solución de Ruby cloud hosting de Stackhero!

GitHub Actions facilita la automatización de tareas como el despliegue de su código Ruby en sus servidores de producción. No se requieren pasos manuales.

En esta guía, descubrirá cómo configurar GitHub Actions de forma segura y fiable para desplegar automáticamente su código Ruby tanto en los entornos de staging como de producción. Este enfoque garantiza que sus despliegues sean consistentes y reduce el riesgo de errores.

Para empezar, trabajará con dos ramas en su repositorio de GitHub: staging y production. Cada vez que haga push de código a estas ramas, sus cambios se desplegarán automáticamente en la instancia correspondiente de Stackhero.

Tener una instancia de staging es opcional. Aunque puede seguir esta guía solo con una instancia de producción, se recomienda encarecidamente configurar tanto los entornos de staging como de producción. Esto es una buena práctica reconocida en el sector y ayuda a detectar problemas antes de que lleguen a los usuarios en producción.

Antes de comenzar, asegúrese de tener una cuenta de GitHub y un repositorio con su código Ruby.

Acceda a su panel de Stackhero para crear dos servicios Ruby, uno para staging y otro para producción. Para mayor claridad, es recomendable renombrar estos servicios como "Production" y "Staging".

¿Aún no tiene una cuenta de Stackhero? Puede registrarse gratis en solo unos minutos y crear sus servicios en la nube Ruby con unos pocos clics.

Ejemplo de servicios de producción y stagingEjemplo de servicios de producción y staging

Para permitir que GitHub Actions despliegue su código, deberá configurar claves SSH. Esto garantiza que solo las acciones autorizadas puedan conectarse a sus servicios Stackhero, manteniendo sus despliegues seguros.

Puede generar un nuevo par de claves SSH en su ordenador con:

ssh-keygen -C "" -f /tmp/ssh_key -N ""

A continuación, obtenga la clave pública que acaba de crear:

cat /tmp/ssh_key.pub

En el panel de Stackhero, seleccione su servicio Ruby "production" y haga clic en el botón "Configure". Obtener la configuración del servicioObtener la configuración del servicio

Después:

  1. En SSH public keys, haga clic en Add a public key.
  2. En Description, introduzca GitHub Action.
  3. En Key, pegue el contenido de la clave pública desde su ordenador.

Obtener la configuración del servicioObtener la configuración del servicio

Ahora, acceda al sitio web de GitHub y abra su proyecto.

Vaya a Settings > Environments y haga clic en New environment. Configuración de entornos en GitHubConfiguración de entornos en GitHub

Nombre su entorno como "production" y guárdelo. Definir el entornoDefinir el entorno

Haga clic en el botón No restriction y seleccione Selected branches and tags. Definir restricciones de entornoDefinir restricciones de entorno

Haga clic en Add deployment branch or tag rule, introduzca "production" como patrón y añada la regla. Definir la rama del entornoDefinir la rama del entorno Definir la rama del entornoDefinir la rama del entorno

Para almacenar su clave privada SSH de forma segura, vaya a Environment secrets y haga clic en Add secret. Añadir secretoAñadir secreto

Recupere su clave privada desde su ordenador:

cat /tmp/ssh_key

En Name, introduzca STACKHERO_SSH_PRIVATE_KEY. En Value, pegue el contenido de su clave privada. Configurar el secreto de la clave privada SSHConfigurar el secreto de la clave privada SSH

A continuación, añada el endpoint de su servicio Ruby como variable de entorno. Haga clic en Add variable en Environment variables. Configurar variablesConfigurar variables

En Name, introduzca STACKHERO_ENDPOINT. En Value, pegue el endpoint de su servicio Ruby, que encontrará en su panel de Stackhero. Configurar la variable endpointConfigurar la variable endpoint

Si ha configurado un dominio personalizado para su servicio, asegúrese de utilizar ese dominio personalizado en lugar de <XXXXXX>.stackhero-network.com.

Una vez que haya configurado las claves en Stackhero y GitHub, puede eliminarlas de su ordenador por seguridad.

rm /tmp/ssh_key /tmp/ssh_key.pub

En su máquina local, dentro de su repositorio Git, cree un directorio llamado .github/workflows. Dentro de este directorio, cree un archivo llamado deploy-to-stackhero.yml.

# File: .github/workflows/deploy-to-stackhero.yml

name: Deploy to Stackhero
run-name: Deploy branch "${{ github.ref_name }}" to Stackhero

on:
  push:
    # Lista de ramas que activarán la acción de despliegue tras un git push.
    # No olvide crear un entorno correspondiente al nombre de la rama en GitHub (en "Settings"/"Environments").
    # Después añada el secreto "STACKHERO_SSH_PRIVATE_KEY" y la variable "STACKHERO_ENDPOINT" en ese entorno.
    branches: [ "production", "staging" ]

jobs:
  Deploy:
    environment: ${{ github.ref_name }}
    runs-on: ubuntu-latest
    steps:
    - uses: stackhero-io/github-actions-deploy-to-stackhero@v1
      with:
        # El secreto "STACKHERO_SSH_PRIVATE_KEY" y la variable "STACKHERO_ENDPOINT" deben estar definidos en el entorno de rama correspondiente en GitHub bajo "Settings"/"Environments".
        ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
        endpoint: ${{ vars.STACKHERO_ENDPOINT }}

Después de crear el archivo de workflow, puede confirmar sus cambios.

git add -A .
git commit -m "Add GitHub Actions to deploy to Stackhero"

A continuación, cree una rama de producción.

git checkout -b production

Por último, haga push de sus cambios a GitHub.

git push --set-upstream origin production

Este último git push subirá su código a la rama production en GitHub. GitHub Actions se iniciará automáticamente y desplegará su código en su instancia de Stackhero.

Para ver su workflow en acción, visite la página de su proyecto en GitHub y haga clic en Actions. GitHub Actions que desplegó en producciónGitHub Actions que desplegó en producción

Enhorabuena, acaba de configurar el despliegue continuo a producción con GitHub Actions.

La configuración del entorno de staging sigue exactamente el mismo proceso que el de producción. Simplemente repita los pasos anteriores, sustituyendo production por staging donde sea necesario.

Una vez que haya configurado su entorno de staging, puede crear una rama de staging.

git checkout -b staging

Haga push de su rama de staging a GitHub.

git push --set-upstream origin staging

GitHub Actions ahora desplegará automáticamente su rama de staging en la instancia Ruby de Stackhero designada para staging.

Para reforzar la seguridad de sus despliegues, es recomendable proteger sus ramas production y staging. Esto significa que los push directos están restringidos y los cambios deben pasar por una pull request. Los miembros del equipo con los permisos adecuados pueden revisar y aprobar las pull requests a staging y, una vez todo esté validado, fusionar los cambios en production de la misma manera.

Siguiendo este workflow, aumenta la seguridad (solo los usuarios autorizados pueden desplegar en staging y production) y la fiabilidad (todas las nuevas funcionalidades se prueban en staging antes de llegar a producción). Esto ayuda a garantizar que sus despliegues sean fluidos y que su entorno de producción se mantenga estable.