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.

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 testowychPrzykład usług produkcyjnych i testowych

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.

Możesz wygenerować nowe klucze SSH, uruchamiając następujące polecenie na swoim komputerze:

ssh-keygen -C "" -f /tmp/ssh_key -N ""

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:

  1. W sekcji SSH public keys kliknij "Add a public key".
  2. Ustaw Description na "GitHub Action".
  3. Wklej pobrany klucz publiczny do pola Key.

Uzyskaj ustawienia usługiUzyskaj ustawienia usługi

Teraz otwórz swój projekt GitHub i wykonaj te kroki, aby skonfigurować klucz prywatny do wdrożenia:

  • Kliknij Settings, następnie Environments i wybierz New environment.

    Konfiguracja środowisk GitHubKonfiguracja środowisk GitHub

  • W polu Name wpisz "production" i potwierdź.

    Ustawienie środowiskaUstawienie środowiska

  • Kliknij przycisk No restriction i wybierz Selected branches and tags.

    Ustawienie ograniczeń środowiskaUstawienie ograniczeń środowiska

  • Kliknij Add deployment branch or tag rule, wpisz "production" w polu Name pattern i kliknij Add rule.

    Ustawienie gałęzi środowiskaUstawienie gałęzi środowiska Ustawienie gałęzi środowiskaUstawienie gałęzi środowiska

  • W sekcji Environment secrets kliknij Add secret.

    Dodaj sekretDodaj sekret

Pobierz wcześniej wygenerowany klucz prywatny, uruchamiając:

cat /tmp/ssh_key

W ustawieniach środowiska GitHub:

  • W Name wpisz STACKHERO_SSH_PRIVATE_KEY i wklej swój klucz prywatny do pola Value.

    Ustawienie sekretu klucza prywatnego SSHUstawienie sekretu klucza prywatnego SSH

  • W sekcji Environment variables kliknij Add variable.

    Ustawienie zmiennychUstawienie zmiennych

  • W Name wpisz STACKHERO_ENDPOINT i wklej endpoint usługi PHP do pola Value. Możesz znaleźć ten endpoint w swoim panelu Stackhero.

    Ustawienie zmiennej endpointuUstawienie zmiennej endpointu

Jeśli dostosowałeś nazwę domeny swojej usługi, użyj wersji dostosowanej zamiast xxxxxx.stackhero-network.com.

Ze względów bezpieczeństwa powinieneś teraz usunąć wygenerowane klucze SSH z komputera:

rm /tmp/ssh_key /tmp/ssh_key.pub

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ę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!

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.

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ę.