0Pricing
PHP Academy · Lekcja

Wdrażanie za pomocą GitHub Actions

Automatyzuj etapy budowania, testowania i wdrażania przez SSH w przepływie pracy GitHub Actions

Wdrażanie za pomocą GitHub Actions to bezpłatna lekcja PHP Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej PHP Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs PHP Academy zawiera 4 lekcji w sumie.

Czym jest GitHub Actions?

GitHub Actions to platforma CI/CD wbudowana w GitHub. Przepływy pracy zdefiniowane w .github/workflows/*.yml są automatycznie uruchamiane po wypchnięciu zmian, utworzeniu żądania ściągnięcia lub zgodnie z harmonogramem.

Podstawowa struktura przepływu pracy

Przepływ pracy składa się z co najmniej jednego zadania, a każde zadanie zawiera kroki.

# .github/workflows/deploy.yml
name: Deploy

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: "8.3"
      - name: Install dependencies
        run: composer install --no-dev --optimize-autoloader
      - name: Run tests
        run: vendor/bin/phpunit

Krok wdrażania przez SSH

Po pomyślnym przejściu testów należy wdrożyć aplikację na serwerze przez SSH.

      - name: Deploy to server
        uses: appleboy/ssh-action@v1
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: ${{ secrets.SERVER_USER }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          script: |
            cd /srv/myapp
            git pull origin main
            composer install --no-dev --optimize-autoloader
            php artisan migrate --force
            php artisan config:cache
            php artisan route:cache
            sudo systemctl reload php8.3-fpm

Sekrety GitHub

Poufne wartości (klucze SSH, tokeny API, hasła do bazy danych) należy przechowywać jako szyfrowane sekrety repozytorium w Settings → Secrets and Variables.

Buforowanie zależności

Należy buforować pakiety Composer między uruchomieniami, aby przyspieszyć przepływy pracy.

      - name: Cache Composer packages
        uses: actions/cache@v4
        with:
          path: vendor
          key: ${{ runner.os }}-composer-${{ hashFiles("composer.lock") }}

Uruchamianie testów

W testach integracyjnych należy uwzględnić kontener usługowy MySQL lub PostgreSQL.

services:
  mysql:
    image: mysql:8
    env:
      MYSQL_DATABASE: test
      MYSQL_ROOT_PASSWORD: secret
    ports: [3306:3306]

Zmienne środowiskowe w Actions

Sekrety należy przekazywać do kroków przepływu pracy jako zmienne środowiskowe.

      - name: Run tests
        env:
          DB_HOST: 127.0.0.1
          DB_DATABASE: test
          DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
        run: vendor/bin/phpunit

Bramki jakości kodu

Jeśli kontrole jakości kodu zakończą się niepowodzeniem, należy zablokować wdrażanie.

      - name: PHPStan static analysis
        run: vendor/bin/phpstan analyse src --level=6
      - name: PHP_CodeSniffer
        run: vendor/bin/phpcs src --standard=PSR12

Testowanie macierzowe

Należy jednocześnie testować aplikację z użyciem wielu wersji PHP.

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        php: ["8.2", "8.3"]
    steps:
      - uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php }}

Strategie wdrażania

Typowe podejścia to: bezpośrednie git pull (proste), rsync (szybka synchronizacja plików), blue-green (brak przestoju) oraz Deployer PHP (zautomatyzowane wdrażanie bez przestoju). Należy wybrać strategię na podstawie akceptowalnego czasu niedostępności.

Podsumowanie

Przepływy pracy należy definiować w .github/workflows/*.yml. Testy należy uruchamiać po każdym wypchnięciu zmian, a wdrażanie — po scaleniu zmian z główną gałęzią. Należy buforować zależności, przechowywać sekrety w GitHub Secrets i dodawać bramki jakości przed wdrożeniem.

Szybkie sprawdzenie

Gdzie przechowuje się poufne wartości, takie jak klucze SSH, na potrzeby GitHub Actions?

Często zadawane pytania

Czy lekcja „Wdrażanie za pomocą GitHub Actions” jest bezpłatna?

Tak — pełny tekst „Wdrażanie za pomocą GitHub Actions” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu PHP Academy, przejdź na CoddyKit PRO. Kurs PHP Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Wdrażanie za pomocą GitHub Actions”?

Automatyzuj etapy budowania, testowania i wdrażania przez SSH w przepływie pracy GitHub Actions Ćwiczysz PHP Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć PHP Academy?

Nie wymagamy żadnego doświadczenia. PHP Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Wdrażanie za pomocą GitHub Actions”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji PHP Academy?

Tak. Każda lekcja PHP Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Konfiguracja Nginx i PHP-FPM
  2. Zmienne środowiskowe i pliki .env
  3. Wdrażanie za pomocą GitHub Actions
  4. Konteneryzacja aplikacji PHP za pomocą Dockera
← Powrót do PHP Academy