Ú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 directorycd ~/mywebsite # Turn on maintenance modephp artisan down || true # Pull the latest changes from the git repositorygit pull origin main # Install composer dependeciescomposer install --no-interaction --no-dev # Optimize view, routes, events, configsphp artisan optimize:clearphp artisan optimize # Clear expired password reset tokensphp artisan auth:clear-resets # Run database migrationsphp artisan migrate --force # Turn off maintenance modephp 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
mainpobočka.
- Spustí tento pracovní postup vždy, když jsou do složky
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ů.
- 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.
- 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í.
- 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ů.
- Kopírovat
.envSoubor
- name: Copy .env run: php -r "file_exists('.env') || copy('.env.example', '.env');"
- Akce: Zkontroluje, zda je
.envsoubor 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í.
- 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.
- Generování aplikačního klíče
- name: Generate key run: php artisan key:generate
- Akce: Spustí
key:generatePříkaz Artisan k vytvoření šifrovacího klíče. - Účel: Zajistí, aby aplikace Laravel měla platný šifrovací klíč.
- Instalace a sestavení závislostí frontendů
- name: Install and Build Frontend Dependencies run: | npm ci npm run build --if-present
- Akce:
- Instaluje závislosti frontendů pomocí
npm ci. - Vytvoří prostředky frontend pomocí
npm run buildpokud je definován skript sestavení.
- Instaluje závislosti frontendů pomocí
- Účel: Připravuje a sestavuje frontendové prostředky.
- 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ů.
- 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é vscriptsadresář.
- Úč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.