Node.js: Wdrażanie z GitHub Actions
Dowiedz się, jak wdrożyć swój kod Node.js za pomocą GitHub Actions
👋 Witamy w dokumentacji Stackhero!
Stackhero oferuje gotowe do użycia rozwiązanie Node.js 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 Node.js cloud hosting Stackhero zajmuje tylko 5 minut!
GitHub Actions pozwala na automatyzację zadań, takich jak wdrażanie kodu Node.js na serwery produkcyjne. W tym przewodniku pokażemy, jak bezpiecznie i niezawodnie wdrożyć aplikację Node.js do środowisk staging i produkcyjnych za pomocą GitHub Actions.
Zalecamy utrzymywanie dwóch gałęzi: staging i production. Gdy kod jest przesyłany do tych gałęzi, jest automatycznie wdrażany do odpowiadającej usługi Stackhero.
Posiadanie instancji staging nie jest obowiązkowe. Możesz postępować zgodnie z tym przewodnikiem, mając tylko instancję produkcyjną. Jednak aby zapewnić płynne wdrożenia i zyskać pewność przed uruchomieniem na żywo, zaleca się utrzymywanie zarówno środowisk staging, jak i produkcyjnych. To podejście jest standardem branżowym, który może pomóc w zapobieganiu typowym problemom z wdrożeniem.
Przed rozpoczęciem upewnij się, że masz konto GitHub z repozytorium hostującym Twój kod.
Tworzenie usług Node.js
Najpierw zaloguj się do swojego panelu Stackhero i utwórz dwie usługi Stackhero: jedną dla staging i jedną dla produkcji. Dla jasności możesz nazwać te usługi "Staging" i "Production".
Nie masz jeszcze konta Stackhero? Możesz je utworzyć w zaledwie dwie minuty za darmo i skonfigurować swoje usługi chmurowe Node.js w kilku kliknięciach.
Przykład usług Node.js
Konfiguracja kluczy SSH
Klucze SSH umożliwiają GitHub Actions bezpieczne połączenie z Twoją usługą Node.js podczas wdrażania kodu. Ten krok jest niezbędny do ochrony usług Stackhero.
Na swoim komputerze wygeneruj nowe klucze SSH za pomocą tej komendy:
ssh-keygen -C "" -f /tmp/ssh_key -N ""
Ustaw klucz publiczny
Pobierz wygenerowany klucz publiczny, uruchamiając:
cat /tmp/ssh_key.pub
Następnie w panelu Stackhero wybierz swoją produkcyjną usługę Node.js i kliknij przycisk Konfiguruj.
Uzyskaj ustawienia usługi
Następnie:
- W Klucze publiczne SSH kliknij Dodaj klucz publiczny.
- Dla Opis wpisz
GitHub Action. - Dla Klucz wklej pobrany klucz publiczny.
Uzyskaj ustawienia usługi
Ustaw klucz prywatny
Przejdź na stronę GitHub i otwórz repozytorium swojego projektu. Następnie kliknij Settings i wybierz Environments. Kliknij New environment.
Konfiguracja środowisk GitHub
Wpisz "production" dla Nazwa i potwierdź swoją akcję.
Ustawianie środowiska
Kliknij przycisk No restriction, a następnie wybierz Selected branches and tags.
Ustawianie ograniczeń środowiska
Teraz kliknij Add deployment branch or tag rule, wpisz "production" w polu Name pattern i kliknij Add rule.
Ustawianie gałęzi środowiska
Ustawianie gałęzi środowiska
Następnie w Environment secrets kliknij Add secret.
Dodaj sekret
Pobierz wygenerowany klucz prywatny, uruchamiając:
cat /tmp/ssh_key
W GitHub wpisz STACKHERO_SSH_PRIVATE_KEY jako Nazwa i wklej swój klucz prywatny w polu Wartość.
Ustawianie sekretu klucza prywatnego SSH
Następnie w Environment variables kliknij Add variable.
Ustawianie zmiennych
Wpisz STACKHERO_ENDPOINT jako Nazwa i wklej punkt końcowy swojej usługi Node.js w polu Wartość. Możesz znaleźć ten punkt końcowy w swoim panelu Stackhero.
Ustawianie zmiennej punktu końcowego
Jeśli dostosowałeś nazwę domeny swojej usługi, użyj wersji dostosowanej zamiast xxxxxx.stackhero-network.com.
Usuń wygenerowane klucze
Ze względów bezpieczeństwa usuń klucze SSH z komputera po ich skonfigurowaniu na Stackhero i GitHub:
rm /tmp/ssh_key /tmp/ssh_key.pub
Konfiguracja workflow GitHub Actions
W swoim repozytorium Git utwórz katalog o nazwie .github/workflows i dodaj plik o nazwie deploy-to-stackhero.yml.
# 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 wyzwalają akcję wdrożenia. Upewnij się, że dla każdej gałęzi istnieje środowisko w GitHub (w "Settings" > "Environments").
# Następnie dodaj odpowiedni 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:
# STACKHERO_SSH_PRIVATE_KEY i STACKHERO_ENDPOINT powinny być ustawione w odpowiednim środowisku GitHub.
ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
endpoint: ${{ vars.STACKHERO_ENDPOINT }}
Po utworzeniu pliku workflow zatwierdź swoje zmiany za pomocą następujących poleceń:
git add -A .
git commit -m "Dodaj GitHub Actions do wdrażania na Stackhero"
Utwórz gałąź produkcyjną za pomocą:
git checkout -b production
Na koniec prześlij swoje zmiany do GitHub:
git push --set-upstream origin production
To przesłanie wysyła Twój kod do gałęzi production i uruchamia GitHub Actions, aby wdrożyć Twój kod do usługi Stackhero. Aby zweryfikować wdrożenie, przejdź do swojego projektu na GitHub i kliknij Actions.
GitHub Actions, które wdrożyły do produkcji
Gratulacje! Twój kod jest teraz skonfigurowany do automatycznego wdrażania do produkcji za pomocą GitHub Actions.
Tworzenie środowiska staging
Konfiguracja środowiska staging jest podobna do środowiska produkcyjnego. Powtórz powyższe kroki, zastępując production staging, jeśli to konieczne.
Rozpocznij od utworzenia gałęzi staging za pomocą:
git checkout -b staging
Następnie prześlij swoją gałąź staging do GitHub:
git push --set-upstream origin staging
GitHub Actions automatycznie wdroży Twoją gałąź staging do wyznaczonej usługi Node.js.
Idąc dalej
Zaleca się ochronę gałęzi production i staging, aby uniknąć bezpośrednich przesłań. Zamiast tego utwórz pull request dla gałęzi staging i scal zmiany z gałęzi deweloperskiej. Po zatwierdzeniu zmian na platformie staging, scal pull request do gałęzi production.
To podejście pomaga zapewnić, że tylko upoważnione osoby mogą przesyłać do staging i produkcji. Zapewnia również, że nowe funkcje są dokładnie testowane przed uruchomieniem na żywo.