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.

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.jsPrzykład usług Node.js

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 ""

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ługiUzyskaj ustawienia usługi

Następnie:

  1. W Klucze publiczne SSH kliknij Dodaj klucz publiczny.
  2. Dla Opis wpisz GitHub Action.
  3. Dla Klucz wklej pobrany klucz publiczny.

Uzyskaj ustawienia usługiUzyskaj ustawienia usługi

Przejdź na stronę GitHub i otwórz repozytorium swojego projektu. Następnie kliknij Settings i wybierz Environments. Kliknij New environment.

Konfiguracja środowisk GitHubKonfiguracja środowisk GitHub

Wpisz "production" dla Nazwa i potwierdź swoją akcję.

Ustawianie środowiskaUstawianie środowiska

Kliknij przycisk No restriction, a następnie wybierz Selected branches and tags.

Ustawianie ograniczeń środowiskaUstawianie ograniczeń środowiska

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

Ustawianie gałęzi środowiskaUstawianie gałęzi środowiska

Ustawianie gałęzi środowiskaUstawianie gałęzi środowiska

Następnie w Environment secrets kliknij Add secret.

Dodaj sekretDodaj 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 SSHUstawianie sekretu klucza prywatnego SSH

Następnie w Environment variables kliknij Add variable.

Ustawianie zmiennychUstawianie 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ńcowegoUstawianie zmiennej punktu końcowego

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

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

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

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.

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.