PHP: Desplegar con GitHub Actions
Cómo desplegar tu código PHP usando GitHub Actions
👋 ¡Bienvenido a la documentación de Stackhero!
Stackhero ofrece una solución PHP 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 una tarificación sencilla, transparente y predecible.
- 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 PHP cloud hosting de Stackhero.
GitHub Actions facilita la automatización de tareas como el despliegue de tu código PHP en servidores de producción. En esta guía, se te guiará sobre cómo desplegar de manera segura tu aplicación PHP en entornos de staging y producción usando GitHub Actions.
El enfoque implica mantener dos ramas, staging y production. El código enviado a estas ramas se despliega automáticamente en la instancia correspondiente de Stackhero.
Tener una instancia de staging no es obligatorio. Sin embargo, se recomienda encarecidamente usar tanto instancias de staging como de producción para asegurar despliegues fluidos y aumentar la confianza al desplegar en producción. Esta práctica está alineada con los estándares de la industria y ayuda a prevenir problemas potenciales.
Para seguir esta guía, necesitas una cuenta de GitHub que aloje tu repositorio de código PHP.
Creación de los servicios PHP
Comienza iniciando sesión en tu panel de control de Stackhero y creando dos servicios PHP: uno para staging y otro para producción. Para mantener el orden, renombra estos servicios como "Production" y "Staging".
Si no tienes una cuenta de Stackhero, puedes crear una de forma gratuita en solo dos minutos y configurar tus servicios en la nube PHP con unos pocos clics.
Ejemplo de servicios de producción y staging
Configurar claves SSH
Las claves SSH son esenciales para permitir que GitHub Actions se conecte de manera segura a tu servicio PHP para el despliegue. En esta guía, crearás un par de claves SSH único dedicado a este propósito.
Generar claves SSH
Puedes generar nuevas claves SSH ejecutando el siguiente comando en tu ordenador:
ssh-keygen -C "" -f /tmp/ssh_key -N ""
Establecer la clave pública
Recupera la clave pública ejecutando:
cat /tmp/ssh_key.pub
A continuación, navega a tu panel de control de Stackhero. Selecciona tu servicio PHP "Production" y haz clic en "Configure". Luego sigue estos pasos:
- Bajo
SSH public keys, haz clic en "Add a public key". - Establece la
Descriptionen "GitHub Action". - Pega la clave pública recuperada en el campo
Key.
Obtener configuraciones del servicio
Establecer la clave privada
Ahora, abre tu proyecto de GitHub y sigue estos pasos para configurar la clave privada para el despliegue:
-
Haz clic en
Settings, luegoEnvironmentsy seleccionaNew environment.
Configurando entornos de GitHub -
En el campo
Name, introduce "production" y confirma.
Estableciendo el entorno -
Haz clic en el botón
No restrictiony seleccionaSelected branches and tags.
Estableciendo restricciones de entorno -
Haz clic en
Add deployment branch or tag rule, introduce "production" en el campoName pattern, y haz clic enAdd rule.
Estableciendo la rama de entorno
Estableciendo la rama de entorno -
Bajo
Environment secrets, haz clic enAdd secret.
Agregar secreto
Recupera la clave privada que generaste anteriormente ejecutando:
cat /tmp/ssh_key
En la configuración del entorno de GitHub:
-
En
Name, introduceSTACKHERO_SSH_PRIVATE_KEYy pega tu clave privada en el campoValue.
Estableciendo el secreto de la clave privada SSH -
En la sección
Environment variables, haz clic enAdd variable.
Estableciendo variables -
En
Name, introduceSTACKHERO_ENDPOINTy pega el endpoint del servicio PHP en el campoValue. Puedes encontrar este endpoint en tu panel de control de Stackhero.
Estableciendo la variable de endpoint
Si has personalizado el nombre de dominio de tu servicio, usa la versión personalizada en lugar de xxxxxx.stackhero-network.com.
Eliminar las claves generadas
Por razones de seguridad, ahora debes eliminar las claves SSH generadas de tu ordenador:
rm /tmp/ssh_key /tmp/ssh_key.pub
Configurar el flujo de trabajo de GitHub Actions
A continuación, configurarás un flujo de trabajo de GitHub Actions para automatizar tus despliegues. En tu repositorio Git, crea un directorio llamado .github/workflows y añade un archivo llamado deploy-to-stackhero.yml con el siguiente contenido:
# Archivo: .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 push de git
# No olvides crear un entorno correspondiente en GitHub (bajo "Settings" -> "Environments") para cada rama
# Luego añade 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 correspondiente de GitHub (bajo "Settings" -> "Environments")
ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
endpoint: ${{ vars.STACKHERO_ENDPOINT }}
Después de añadir el archivo, confirma tus cambios ejecutando los siguientes comandos en tu terminal:
git add -A .
git commit -m "Añadir GitHub Actions para desplegar en Stackhero"
Luego, crea una rama de producción ejecutando:
git checkout -b production
Finalmente, envía tus cambios a GitHub:
git push --set-upstream origin production
Este comando envía tu código a la rama production de GitHub. GitHub Actions se ejecuta automáticamente y despliega tu código en la instancia asociada de Stackhero. Para verificar el despliegue, visita tu proyecto de GitHub y haz clic en Actions.
GitHub Actions que desplegó en producción
¡Felicidades, ahora estás listo para desplegar automáticamente tu código en producción usando GitHub Actions!
Creación del entorno de staging
Puedes configurar el entorno de staging usando un proceso similar al del entorno de producción. Simplemente repite los pasos anteriores, reemplazando production por staging donde sea aplicable.
Una vez configurados los ajustes, crea una rama de staging ejecutando:
git checkout -b staging
Luego, envía tus cambios a GitHub:
git push --set-upstream origin staging
GitHub Actions despliega automáticamente el código de la rama staging en el servicio PHP designado para staging.
Avanzando más
Es buena práctica proteger las ramas production y staging para evitar envíos directos. Podrías considerar crear una pull request para la rama staging que sea revisada y fusionada solo por personas con derechos de despliegue. Una vez que los cambios se validan en el entorno de staging, los usuarios autorizados pueden fusionar la pull request en la rama production.
Seguir este enfoque aumenta la seguridad al garantizar que solo se desplieguen cambios aprobados y mejora la fiabilidad al probar nuevas características en un entorno de staging antes de que lleguen a producción.