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/phpunitKrok 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-fpmSekrety 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/phpunitBramki 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=PSR12Testowanie 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
- Konfiguracja Nginx i PHP-FPM
- Zmienne środowiskowe i pliki .env
- Wdrażanie za pomocą GitHub Actions
- Konteneryzacja aplikacji PHP za pomocą Dockera