acciones de GitHub: Implemente Laravel

acciones de github

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 }}

acciones de GitHub

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ó.

acciones de GitHub

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.

Recent Post