Nasazení projektu Laravel pomocí akcí GitHub CI/CD Workflow

Úvod V této příručce se dozvíte, jak nastavit skript pro nasazení pro váš projekt Laravel a jak jej hladce integrovat s pracovním postupem GitHub Actions. Projdeme si vytvoření sk...

Poptat web

15. 08. 2025

Nasazení projektu Laravel pomocí akcí GitHub CI/CD Workflow

Úvod

V této příručce se dozvíte, jak nastavit skript pro nasazení pro váš projekt Laravel a jak jej hladce integrovat s pracovním postupem GitHub Actions. Projdeme si vytvoření skriptu nasazení pro váš produkční server a vysvětlíme si jednotlivé kroky pipeline GitHub Actions, která testuje a nasazuje vaši aplikaci vždy, když jsou změny odeslány na server. main pobočka. Na konci budete mít spolehlivý a opakovatelný postup, jak udržovat aplikaci Laravel aktuální s minimálním ručním úsilím.

Nasazovací skript Laravel

Nejprve musíme napsat skript Laravel deploy, který bude spuštěn z našeho pracovního postupu GitHub Actions. Ujistěte se, že je tento soubor uložen na vašem produkčním serveru. Nic náročného, jsou to všechno příkazy, které používáme při vývoji. Podívejte se na ně:

# Change your Laravel project directory
cd ~/mywebsite
 
# Turn on maintenance mode
php artisan down || true
 
# Pull the latest changes from the git repository
git pull origin main
 
# Install composer dependecies
composer install --no-interaction --no-dev
 
# Optimize view, routes, events, configs
php artisan optimize:clear
php artisan optimize
 
# Clear expired password reset tokens
php artisan auth:clear-resets
 
# Run database migrations
php artisan migrate --force
 
# Turn off maintenance mode
php artisan up
 
exit 0

Pracovní postup akcí GitHub pro testování a nasazení Laravelu

Dále napíšeme náš pracovní postup Akce GitHub, který provede zejména dvě věci; Provede testy a nasadí je na server.. V kořenovém adresáři vašeho projektu Laravel vytvořte .github a uvnitř složky .github, vytvořit workflows složka. Nakonec získáte .github/workflows struktura. Vytvoření souboru YAML e.g. tests.yml a uložte jej do složky pracovních postupů.

Tento pracovní postup se spustí, když jsou změny odeslány do složky main pobočka. Podívejme se na pracovní postup:

name: mywebsite.com
 
on:
push:
branches: ["main"]
 
jobs:
test-and-deploy:
runs-on: ubuntu-latest
 
steps:
- name: Checkout code
uses: actions/checkout@v4
 
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: "8.3"
 
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "latest"
cache: "npm"
 
- name: Copy .env
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
 
- name: Install PHP Dependencies
run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist
 
- name: Generate key
run: php artisan key:generate
 
- name: Install and Build Frontend Dependencies
run: |
npm ci
npm run build --if-present
 
- name: Execute tests
run: composer test
 
- name: Deploy to Server
uses: appleboy/ssh-action@v1.1.0
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USER }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: cd scripts && sh deploy_script.sh

Projdeme si jednotlivé kroky a pochopíme, co jednotlivé kroky pracovního postupu dělají. Pojďme na to.

Název pracovního postupu: e.g. mywebsite.com

Pracovní postup je spuštěn při jakémkoli push na main pobočka. Pracovní postup provádí testování a nasazení aplikace Laravel (může to být váš web, server API nebo cokoli jiného).

Spouštěcí událost

  • on: push:
    • Spustí tento pracovní postup vždy, když jsou do složky main pobočka.

Práce: e.g. test-and-deploy

Tato úloha se provádí na Ubuntu prostředí (ubuntu-latest) a skládá se z několika kroků.

  1. Pokladní kód
- name: Checkout code
uses: actions/checkout@v4
  • Akce: Stáhne kód úložiště do běhového programu.
  • Účel: Zajišťuje, že pracovní postup má přístup k nejnovějším souborům aplikace.
  1. Nastavení PHP
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: "8.3"
  • Akce: Nastaví PHP verze 8.3 na běžícím systému (tj. Ubuntu).
  • Účel: Připraví prostředí pro provádění úloh založených na PHP, jako je spouštění příkazů Laravel nebo instalace závislostí.
  1. Nastavení Node.js
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "latest"
cache: "npm"
  • Akce: Nainstaluje nejnovější verzi Node.js a povolí ukládání do mezipaměti pro npm.
  • Účel: Poskytuje potřebné prostředí Node.js pro vytváření a správu frontendových prostředků.
  1. Kopírovat .env Soubor
- name: Copy .env
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
  • Akce: Zkontroluje, zda je .env soubor existuje; pokud ne, vytvoří ho zkopírováním ze souboru .env.example.
  • Účel: Zajišťuje, aby aplikace měla k dispozici potřebný konfigurační soubor prostředí.
  1. Instalace závislostí PHP
- name: Install PHP Dependencies
run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist
  • Akce: Instaluje závislosti PHP Laravelu pomocí nástroje Composer s optimalizovaným nastavením.
  • Účel: Připravuje závislosti backendu pro aplikaci Laravel.
  1. Generování aplikačního klíče
- name: Generate key
run: php artisan key:generate
  • Akce: Spustí key:generate Příkaz Artisan k vytvoření šifrovacího klíče.
  • Účel: Zajistí, aby aplikace Laravel měla platný šifrovací klíč.
  1. Instalace a sestavení závislostí frontendů
- name: Install and Build Frontend Dependencies
run: |
npm ci
npm run build --if-present
  • Akce:
    1. Instaluje závislosti frontendů pomocí npm ci.
    2. Vytvoří prostředky frontend pomocí npm run build pokud je definován skript sestavení.
  • Účel: Připravuje a sestavuje frontendové prostředky.
  1. Provádění testů
- name: Execute tests
run: composer test
  • Akce: Spustí testy PHP nebo libovolné nakonfigurované testy pomocí příkazu Composer.
  • Účel: Ověřuje funkčnost aplikace prováděním automatizovaných testů.
  1. Nasazení na server
- name: Deploy to Server
uses: appleboy/ssh-action@v1.1.0
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USER }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: cd scripts && sh deploy_script.sh
  • Akce:
    • Připojí se k serveru pro nasazení prostřednictvím SSH pomocí pověření uložených jako GitHub Secrets.
    • Spustí skript nasazení (deploy_script.sh) umístěné v scripts adresář.
  • Účel: Automatizuje nasazení na produkční server.

Závěr

S nasazovacím skriptem a pracovním postupem GitHub Actions je správa nasazení aplikace Laravel výrazně efektivnější a méně náchylná k chybám. Nastavili jste automatizovaný proces, který zvládne vše od testování kódu až po jeho nasazení na produkční server pouhým odesláním na adresu main pobočka. Tento přístup nejen šetří čas, ale také zajišťuje konzistentní nasazení, takže se můžete soustředit na vytváření funkcí a ne se starat o ruční nastavení. Ať už spravujete webové stránky nebo server API, tento zjednodušený pracovní postup mění vývojářům Laravel pravidla hry.

Původní článek publikoval Nabil Hassen.