Implemente Laravel con acciones de GitHub en alojamiento compartido
Acciones de GitHub – Veamos el proceso para implementar la aplicación Laravel en alojamiento compartido con SSH GitHub Action.
Requisitos previos:
- Configure las claves SSH en el servidor.
- Configure el proyecto Laravel en GitHub.
¡Empecemos!
Crear secuencia de comandos de implementación:
Ejecute el siguiente comando en la raíz del directorio del proyecto. Se crea un archivo deployment.sh dentro de la carpeta de scripts. Pegue el fragmento de código a continuación en el archivo deployment.sh.
mkdir .scripts/
touch .scripts/deploy.sh
#!/bin/bash set -e echo "Deployment started ..." # Enter maintenance mode or return true # if already is in maintenance mode (php artisan down) || true # Pull the latest version of the app git pull origin master # Install composer dependencies composer install --no-dev --no-interaction --prefer-dist --optimize-autoloader # Clear the old cache php artisan clear-compiled # Recreate cache php artisan optimize # Run database migrations php artisan migrate --force # Exit maintenance mode php artisan up echo "Deployment finished!"
Configurar acciones de GitHub:
Opción 1:
Ejecute el siguiente comando en la raíz del directorio del proyecto. Se crea un archivo ci.yml dentro de la carpeta de flujos de trabajo, el archivo puede tener cualquier nombre pero debe terminar con una extensión .yml. Escriba el fragmento de código de configuración a continuación en el archivo ci.yml.
mkdir .github/
mkdir .github/workflows/
touch .github/workflows/ci.yml
Opcion 2:
En el repositorio de GitHub, haga clic en Acciones > configure un flujo de trabajo usted mismo y escriba el fragmento de código de configuración a continuación en el archivo ci.yml. El archivo puede tener cualquier nombre, pero debe terminar con una extensión .yml.
name: 🚀 Deploy on push master on: push: branches: - master jobs: web-deploy: name: 🎉 Deploy runs-on: ubuntu-latest steps: - name: 🚚 Get latest code uses: actions/checkout@v2 - name: 📂 Deploy to server via ssh uses: appleboy/[email protected] with: host: ${{ secrets.HOST }} username: ${{ secrets.USERNAME }} password: ${{ secrets.PASSWORD }} port: ${{ secrets.PORT }} script: "cd /var/www/html && sh ./.scripts/deploy.sh"
Voy a explicar lo que hace cada sección.
name: Deploy on push master
Simplemente especificando un nombre para el flujo de trabajo.
on:
push:
branches:
- master
El fragmento de código anterior activa el flujo de trabajo cuando se empuja a la rama maestra.
jobs:
web-deploy:
name: Deploy
runs-on: ubuntu-latest
- trabajos: agrupa todos los trabajos que se ejecutan en el flujo de trabajo. Especificación y configuración de un trabajo de implementación web.
- se ejecuta en: ubuntu-latest: se configura para ejecutar el flujo de trabajo con la última versión de Ubuntu.
steps:
- name: 🚚 Get latest code
uses: actions/checkout@v2
- pasos: agrupa todos los pasos que se ejecutan en el trabajo de implementación web.
- uses: actions/checkout@v2 — Desproteger el repositorio para que el flujo de trabajo pueda acceder a él.
- name: 📂 Deploy to server via ssh
uses: appleboy/[email protected]
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
port: ${{ secrets.PORT }}
script: "cd /var/www/html && sh ./.scripts/deploy.sh"
Usando appleboy/ssh-action; cualquier comando ssh se puede ejecutar de forma remota en el servidor de alojamiento compartido con el nombre de usuario/contraseña SSH proporcionados.
Agregar secretos de GitHub:
Vaya a la pestaña Configuración en el repositorio de GitHub, haga clic en Secretos > Acciones > Nuevo secreto de repositorio para agregar el host del servidor, el nombre de usuario ssh, la contraseña y el puerto.
Por ejemplo: Para el host del servidor: HOST como Nombre y la dirección IP de su servidor como Valor. Para puerto SSH: PUERTO como Nombre y su puerto ssh como Valor. 22 es el puerto ssh predeterminado. Por ejemplo: para el nombre de usuario de SSH: NOMBRE DE USUARIO como Nombre y ejecute whoami en su servidor y use el resultado como Valor.
Para acceder a las variables en la canalización, utilice el siguiente formato:
${{ secrets.HOST }}
${{ secrets.USERNAME }}
${{ secrets.PASSWORD }}
${{ secrets.PORT }}
Ahora, cada vez que uno ingresa a la rama maestra, la canalización comienza a ejecutar un trabajo de implementación web que implementa la aplicación Laravel.
Vaya a la pestaña Acciones para monitorear si se está ejecutando, se implementó correctamente o falló.
Esto concluye una canalización de CI/CD para Laravel en GitHub.
Gracias por llegar hasta aquí, si encuentras esto útil no olvides dejar un👍🏼y suscribirse para recibir más contenido.
Si le interesa, puede echar un vistazo a algunos de los otros artículos que he escrito recientemente sobre AWS y Laravel:
Publicado originalmente en https://anlisha.com.np el 9 de enero de 2023.