PHP: Wdrażanie za pomocą GitHub Actions
Jak wdrożyć swój kod PHP przy użyciu 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 to potężne narzędzie umożliwiające automatyzację workflow, w tym wdrażanie kodu PHP bezpośrednio na serwery produkcyjne. W tym przewodniku pokażemy, jak bezpiecznie wdrożyć aplikację PHP zarówno na środowisko staging, jak i produkcyjne, korzystając z GitHub Actions.
Zalecanym podejściem jest utrzymywanie dwóch gałęzi w repozytorium: staging oraz production. Za każdym razem, gdy wypchniesz kod do tych gałęzi, zostanie on automatycznie wdrożony na odpowiadającą im instancję Stackhero.
Posiadanie instancji staging nie jest obowiązkowe. Jednak korzystanie zarówno z instancji staging, jak i produkcyjnej jest zdecydowanie zalecane, aby zapewnić płynność wdrożeń i większą pewność podczas wdrażania na produkcję. Takie podejście jest zgodne ze standardami branżowymi i pomaga zapobiegać potencjalnym problemom.
Aby rozpocząć, potrzebujesz konta GitHub z kodem PHP umieszczonym w repozytorium.
Tworzenie usług PHP
Najpierw zaloguj się do swojego panelu Stackhero i utwórz dwie usługi PHP: jedną dla staging, drugą dla produkcji. Dla przejrzystości możesz zmienić ich nazwy na "Production" i "Staging".
Jeśli nie masz jeszcze konta Stackhero, możesz je założyć za darmo w ciągu dwóch minut i skonfigurować swoje usługi PHP w chmurze kilkoma kliknięciami.
Przykład usług produkcyjnej i staging
Konfiguracja kluczy SSH
Klucze SSH to zalecana metoda umożliwiająca GitHub Actions bezpieczne połączenie z usługą PHP podczas wdrożenia. W tym przewodniku utworzysz dedykowaną parę kluczy SSH do tego celu.
Generowanie kluczy SSH
Aby wygenerować nowe klucze SSH, uruchom poniższe polecenie na swoim komputerze:
ssh-keygen -C "" -f /tmp/ssh_key -N ""
Ustawienie klucza publicznego
Następnie pobierz klucz publiczny, wykonując:
cat /tmp/ssh_key.pub
Przejdź do panelu Stackhero i wybierz usługę PHP "Production". Kliknij "Configure" i wykonaj następujące kroki:
- W sekcji
SSH public keyskliknij "Add a public key". - W polu
Descriptionwpisz "GitHub Action". - Wklej właśnie pobrany klucz publiczny do pola
Key.
Pobierz ustawienia usługi
Ustawienie klucza prywatnego
Teraz dodaj klucz prywatny do projektu GitHub, aby mógł być używany podczas wdrożenia:
-
Przejdź do
Settings, następnie wybierzEnvironmentsi kliknijNew environment.
Konfiguracja środowisk GitHub -
W polu
Namewpisz "production" i zatwierdź.
Ustawianie środowiska -
Kliknij przycisk
No restrictioni wybierzSelected branches and tags.
Ustawianie ograniczeń środowiska -
Kliknij
Add deployment branch or tag rule, wpisz "production" w poluName patterni kliknijAdd rule.
Ustawianie gałęzi środowiska
Ustawianie gałęzi środowiska -
W sekcji
Environment secretskliknijAdd secret.
Dodawanie sekretu
Pobierz wcześniej wygenerowany klucz prywatny, wykonując:
cat /tmp/ssh_key
W ustawieniach środowiska GitHub:
-
W polu
NamewpiszSTACKHERO_SSH_PRIVATE_KEYi wklej swój klucz prywatny do polaValue.
Ustawianie sekretu klucza prywatnego SSH -
W sekcji
Environment variableskliknijAdd variable.
Ustawianie zmiennych -
W polu
NamewpiszSTACKHERO_ENDPOINTi wklej endpoint swojej usługi PHP do polaValue. Endpoint znajdziesz w panelu Stackhero.
Ustawianie zmiennej endpoint
Jeśli spersonalizowałeś nazwę domeny swojej usługi, użyj tej wersji zamiast <XXXXXX>.stackhero-network.com.
Usuwanie wygenerowanych kluczy
Ze względów bezpieczeństwa warto usunąć wygenerowane klucze SSH z komputera po zakończeniu konfiguracji:
rm /tmp/ssh_key /tmp/ssh_key.pub
Konfiguracja workflow GitHub Actions
Teraz skonfigurujesz plik workflow GitHub Actions, aby zautomatyzować wdrożenia. W repozytorium utwórz katalog .github/workflows i dodaj plik o nazwie deploy-to-stackhero.yml z poniższą zawartością:
# File: .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 wywołają akcję wdrożenia po git push
# Nie zapomnij utworzyć odpowiadającego środowiska w GitHub ("Settings" -> "Environments") dla każdej gałęzi
# Następnie dodaj sekret "STACKHERO_SSH_PRIVATE_KEY" oraz 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" oraz zmienna "STACKHERO_ENDPOINT" powinny być zdefiniowane w odpowiednim środowisku GitHub ("Settings" -> "Environments")
ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
endpoint: ${{ vars.STACKHERO_ENDPOINT }}
Po dodaniu tego pliku możesz zatwierdzić zmiany, wykonując poniższe polecenia w terminalu:
git add -A .
git commit -m "Add GitHub Actions to deploy to Stackhero"
Aby utworzyć gałąź produkcyjną, możesz wykonać:
git checkout -b production
Następnie wypchnij zmiany do GitHub:
git push --set-upstream origin production
To wypchnie Twój kod do gałęzi production na GitHub. GitHub Actions automatycznie uruchomi workflow i wdroży kod na powiązaną instancję Stackhero. Aby sprawdzić status wdrożenia, odwiedź swój projekt na GitHub i kliknij Actions.
GitHub Actions, które wdrożyły na produkcję
Gratulacje! Twój projekt jest teraz skonfigurowany do automatycznego wdrażania na produkcję przy użyciu GitHub Actions.
Tworzenie środowiska staging
Środowisko staging możesz skonfigurować w taki sam sposób jak produkcyjne. Wystarczy powtórzyć powyższe kroki, zamieniając production na staging tam, gdzie to konieczne.
Po skonfigurowaniu ustawień utwórz gałąź staging w następujący sposób:
git checkout -b staging
Następnie wypchnij ją do GitHub:
git push --set-upstream origin staging
GitHub Actions automatycznie wdroży kod z gałęzi staging do usługi PHP skonfigurowanej dla staging.
Dalsze kroki
Aby zapewnić niezawodność i bezpieczeństwo aplikacji, warto zabezpieczyć gałęzie production i staging przed bezpośrednimi pushami. Możesz na przykład wymusić, aby zmiany były wprowadzane poprzez pull requesty, a gałąź staging była przeglądana i scalana tylko przez osoby z uprawnieniami do wdrażania. Po zatwierdzeniu zmian w staging, upoważnieni użytkownicy mogą scalić je do gałęzi production.
Takie podejście gwarantuje, że na produkcję trafia tylko zweryfikowany kod, a nowe funkcjonalności są testowane w staging przed wdrożeniem na produkcję, co daje Tobie i Twojemu zespołowi dodatkowy spokój.