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.
Creación de los servicios 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 staging
Configurar las claves SSH
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 ""
Configurar la clave pública
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 servicio
Después:
- En
SSH public keys, haga clic enAdd a public key. - En
Description, introduzcaGitHub Action. - En
Key, pegue el contenido de la clave pública desde su ordenador.
Obtener la configuración del servicio
Configurar la clave privada
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 GitHub
Nombre su entorno como "production" y guárdelo.
Definir el entorno
Haga clic en el botón No restriction y seleccione Selected branches and tags.
Definir 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 entorno
Definir 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 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 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 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 endpoint
Si ha configurado un dominio personalizado para su servicio, asegúrese de utilizar ese dominio personalizado en lugar de <XXXXXX>.stackhero-network.com.
Eliminar las claves generadas
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
Configurar el workflow de GitHub Actions
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ón
Enhorabuena, acaba de configurar el despliegue continuo a producción con GitHub Actions.
Creación del entorno de staging
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.
Más allá
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.