PHP: Wdrażanie z GitHub Actions
Jak wdrożyć kod PHP za pomocą GitHub Actions
👋 Witamy w dokumentacji Stackhero!
Stackhero oferuje gotowe do użycia rozwiązanie PHP cloud, które zapewnia wiele korzyści, w tym:
- Wdrażaj swoją aplikację w kilka sekund za pomocą prostego
git push.- Używaj własnej nazwy domeny i korzystaj z automatycznej konfiguracji certyfikatów HTTPS dla zwiększonego bezpieczeństwa.
- Ciesz się spokojem dzięki automatycznym kopiom zapasowym, aktualizacjom jednym kliknięciem oraz prostemu, przejrzystemu i przewidywalnemu cennikowi.
- Uzyskaj optymalną wydajność i solidne zabezpieczenia dzięki prywatnej i dedykowanej VM.
Oszczędzaj czas i upraszczaj sobie życie: wypróbowanie rozwiązania PHP cloud hosting Stackhero zajmuje tylko 5 minut!
GitHub Actions ułatwia automatyzację zadań, takich jak wdrażanie kodu PHP na serwery produkcyjne. W tym przewodniku dowiesz się, jak bezpiecznie wdrożyć swoją aplikację PHP do środowisk testowych i produkcyjnych za pomocą GitHub Actions.
Podejście polega na utrzymywaniu dwóch gałęzi, staging i production. Kod przesłany do tych gałęzi jest automatycznie wdrażany na odpowiednią instancję Stackhero.
Posiadanie instancji testowej nie jest obowiązkowe. Jednak korzystanie zarówno z instancji testowych, jak i produkcyjnych jest zdecydowanie zalecane, aby zapewnić płynne wdrożenia i większą pewność podczas wdrażania na produkcję. Ta praktyka jest zgodna ze standardami branżowymi i pomaga zapobiegać potencjalnym problemom.
Aby skorzystać z tego przewodnika, potrzebujesz konta GitHub, które hostuje twoje repozytorium kodu PHP.
Tworzenie usług PHP
Zaloguj się do swojego panelu Stackhero i utwórz dwie usługi PHP: jedną dla testów i jedną dla produkcji. Aby zachować porządek, zmień nazwy tych usług na "Production" i "Staging".
Jeśli nie masz konta Stackhero, możesz je utworzyć za darmo w zaledwie dwie minuty i skonfigurować swoje usługi chmurowe PHP za pomocą kilku kliknięć.
Przykład usług produkcyjnych i testowych
Konfiguracja kluczy SSH
Klucze SSH są niezbędne, aby GitHub Actions mogło bezpiecznie połączyć się z twoją usługą PHP w celu wdrożenia. W tym przewodniku utworzysz unikalną parę kluczy SSH dedykowaną do tego celu.
Generowanie kluczy SSH
Możesz wygenerować nowe klucze SSH, uruchamiając następujące polecenie na swoim komputerze:
ssh-keygen -C "" -f /tmp/ssh_key -N ""
Ustawienie klucza publicznego
Pobierz klucz publiczny, uruchamiając:
cat /tmp/ssh_key.pub
Następnie przejdź do swojego panelu Stackhero. Wybierz swoją usługę PHP "Production" i kliknij "Configure". Następnie wykonaj te kroki:
- W sekcji
SSH public keyskliknij "Add a public key". - Ustaw
Descriptionna "GitHub Action". - Wklej pobrany klucz publiczny do pola
Key.
Uzyskaj ustawienia usługi
Ustawienie klucza prywatnego
Teraz otwórz swój projekt GitHub i wykonaj te kroki, aby skonfigurować klucz prywatny do wdrożenia:
-
Kliknij
Settings, następnieEnvironmentsi wybierzNew environment.
Konfiguracja środowisk GitHub -
W polu
Namewpisz "production" i potwierdź.
Ustawienie środowiska -
Kliknij przycisk
No restrictioni wybierzSelected branches and tags.
Ustawienie ograniczeń środowiska -
Kliknij
Add deployment branch or tag rule, wpisz "production" w poluName patterni kliknijAdd rule.
Ustawienie gałęzi środowiska
Ustawienie gałęzi środowiska -
W sekcji
Environment secretskliknijAdd secret.
Dodaj sekret
Pobierz wcześniej wygenerowany klucz prywatny, uruchamiając:
cat /tmp/ssh_key
W ustawieniach środowiska GitHub:
-
W
NamewpiszSTACKHERO_SSH_PRIVATE_KEYi wklej swój klucz prywatny do polaValue.
Ustawienie sekretu klucza prywatnego SSH -
W sekcji
Environment variableskliknijAdd variable.
Ustawienie zmiennych -
W
NamewpiszSTACKHERO_ENDPOINTi wklej endpoint usługi PHP do polaValue. Możesz znaleźć ten endpoint w swoim panelu Stackhero.
Ustawienie zmiennej endpointu
Jeśli dostosowałeś nazwę domeny swojej usługi, użyj wersji dostosowanej zamiast xxxxxx.stackhero-network.com.
Usunięcie wygenerowanych kluczy
Ze względów bezpieczeństwa powinieneś teraz usunąć wygenerowane klucze SSH z komputera:
rm /tmp/ssh_key /tmp/ssh_key.pub
Konfiguracja workflow GitHub Actions
Następnie skonfigurujesz workflow GitHub Actions, aby zautomatyzować swoje wdrożenia. W swoim repozytorium Git utwórz katalog o nazwie .github/workflows i dodaj plik o nazwie deploy-to-stackhero.yml z następującą zawartością:
# Plik: .github/workflows/deploy-to-stackhero.yml
name: Deploy to Stackhero
run-name: Deploy branch "${{ github.ref_name }}" to Stackhero
on:
push:
# Lista gałęzi, które uruchomią akcję wdrożenia po przesłaniu git
# Nie zapomnij utworzyć odpowiadającego środowiska w GitHub (w "Settings" -> "Environments") dla każdej gałęzi
# Następnie dodaj sekret "STACKHERO_SSH_PRIVATE_KEY" i zmienną "STACKHERO_ENDPOINT" w tym środowisku
branches: [ "production", "staging" ]
jobs:
Deploy:
environment: ${{ github.ref_name }}
runs-on: ubuntu-latest
steps:
- uses: stackhero-io/github-actions-deploy-to-stackhero@v1
with:
# Sekret "STACKHERO_SSH_PRIVATE_KEY" i zmienna "STACKHERO_ENDPOINT" powinny być zdefiniowane w odpowiadającym środowisku GitHub (w "Settings" -> "Environments")
ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
endpoint: ${{ vars.STACKHERO_ENDPOINT }}
Po dodaniu pliku, zatwierdź swoje zmiany, uruchamiając następujące polecenia w terminalu:
git add -A .
git commit -m "Dodaj GitHub Actions do wdrażania na Stackhero"
Następnie utwórz gałąź produkcyjną, uruchamiając:
git checkout -b production
Na koniec prześlij swoje zmiany do GitHub:
git push --set-upstream origin production
To polecenie przesyła twój kod do gałęzi production na GitHub. GitHub Actions następnie automatycznie uruchamia się i wdraża twój kod na powiązaną instancję Stackhero. Aby zweryfikować wdrożenie, odwiedź swój projekt GitHub i kliknij Actions.
GitHub Actions, które wdrożyły na produkcję
Gratulacje, jesteś teraz gotowy do automatycznego wdrażania swojego kodu na produkcję za pomocą GitHub Actions!
Tworzenie środowiska testowego
Możesz skonfigurować środowisko testowe, korzystając z procesu podobnego do środowiska produkcyjnego. Po prostu powtórz powyższe kroki, zastępując production staging, gdzie to ma zastosowanie.
Po skonfigurowaniu ustawień, utwórz gałąź testową, uruchamiając:
git checkout -b staging
Następnie prześlij swoje zmiany do GitHub:
git push --set-upstream origin staging
GitHub Actions automatycznie wdraża kod gałęzi testowej na usługę PHP przeznaczoną do testów.
Dalsze kroki
Zaleca się ochronę gałęzi production i staging, aby uniknąć bezpośrednich przesłań. Możesz rozważyć utworzenie pull request dla gałęzi staging, który jest przeglądany i scalany tylko przez osoby z prawami do wdrożenia. Po zatwierdzeniu zmian w środowisku testowym, upoważnieni użytkownicy mogą scalić pull request do gałęzi production.
Podążanie za tym podejściem zwiększa bezpieczeństwo, zapewniając, że tylko zatwierdzone zmiany są wdrażane, i poprawia niezawodność, testując nowe funkcje w środowisku testowym, zanim trafią na produkcję.