Node.js: Diegimas naudojant GitHub Actions

Sužinokite, kaip diegti savo Node.js kodą naudojant GitHub Actions

👋 Sveiki atvykę į Stackhero dokumentaciją!

Stackhero siūlo paruoštą naudoti Node.js cloud sprendimą, kuris suteikia daugybę privalumų, įskaitant:

  • Įdiekite savo programą per kelias sekundes su paprastu git push.
  • Naudokite savo domeno vardą ir pasinaudokite automatiniu HTTPS sertifikatų konfigūravimu, kad padidintumėte saugumą.
  • Mėgaukitės ramybe su automatinėmis atsarginėmis kopijomis, vieno paspaudimo atnaujinimais ir paprasta, skaidria bei prognozuojama kainodara.
  • Gaukite optimalią veikimo ir tvirtą saugumą dėka privačios ir dedikuotos VM.

Taupykite laiką ir supaprastinkite savo gyvenimą: išbandyti Stackhero Node.js cloud hosting sprendimą užtrunka tik 5 minutes!

GitHub Actions leidžia lengvai automatizuoti užduotis, tokias kaip jūsų Node.js kodo diegimas į produkcinius serverius. Šiame vadove paaiškinsime, kaip saugiai ir patikimai diegti savo Node.js aplikaciją tiek į „staging“, tiek į „production“ aplinkas naudojant GitHub Actions.

Rekomenduojame palaikyti dvi šakas: staging ir production. Kai įkeliate kodą į bet kurią iš šių šakų, jūsų pakeitimai automatiškai įdiegiami atitinkamame Stackhero paslaugoje.

Turėti „staging“ instanciją yra neprivaloma. Šį vadovą galite sekti naudodami tik „production“ instanciją. Tačiau, norint sklandžiau vykdyti diegimus ir užtikrinti pasitikėjimą prieš paleidžiant į produkciją, labai rekomenduojama palaikyti tiek „staging“, tiek „production“ aplinkas. Šis metodas plačiai taikomas pramonėje ir padeda išvengti dažnų diegimo problemų.

Prieš pradėdami, įsitikinkite, kad turite GitHub paskyrą ir Node.js kodo saugyklą (repository).

Pirmiausia prisijunkite prie savo Stackhero valdymo skydelio ir sukurkite dvi Stackhero paslaugas: vieną „staging“, kitą – „production“. Aiškumo dėlei šias paslaugas galite pavadinti „Staging“ ir „Production“.

Jei dar neturite Stackhero paskyros, ją galite susikurti nemokamai vos per dvi minutes ir keliais paspaudimais paruošti savo Node.js cloud paslaugas.

Node.js paslaugų pavyzdysNode.js paslaugų pavyzdys

SSH raktai leidžia GitHub Actions saugiai prisijungti prie jūsų Node.js paslaugos diegiant kodą. Tai itin svarbus žingsnis siekiant apsaugoti jūsų Stackhero paslaugas.

Savo kompiuteryje galite sugeneruoti naujus SSH raktus naudodami:

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

Norėdami peržiūrėti ką tik sukurtą viešąjį raktą, vykdykite:

cat /tmp/ssh_key.pub

Tada Stackhero valdymo skydelyje pasirinkite savo „production“ Node.js paslaugą ir spauskite Configure.

Paslaugos nustatymų gavimasPaslaugos nustatymų gavimas

Toliau atlikite šiuos veiksmus:

  1. Skiltyje SSH public keys spauskite Add a public key.
  2. Laukelyje Description įrašykite GitHub Action.
  3. Laukelyje Key įklijuokite anksčiau nukopijuotą viešąjį raktą.

Paslaugos nustatymų gavimasPaslaugos nustatymų gavimas

Dabar pereikite į GitHub ir atidarykite savo projekto saugyklą. Spauskite Settings, tada pasirinkite Environments. Pasirinkite New environment.

GitHub aplinkų konfigūravimasGitHub aplinkų konfigūravimas

Laukelyje Name įrašykite „production“ ir patvirtinkite.

Aplinkos nustatymasAplinkos nustatymas

Spauskite No restriction, tada pasirinkite Selected branches and tags.

Aplinkos apribojimų nustatymasAplinkos apribojimų nustatymas

Spauskite Add deployment branch or tag rule, laukelyje Name pattern įrašykite „production“ ir spauskite Add rule.

Aplinkos šakos nustatymasAplinkos šakos nustatymas

Aplinkos šakos nustatymasAplinkos šakos nustatymas

Skiltyje Environment secrets spauskite Add secret.

Slapto rakto pridėjimasSlapto rakto pridėjimas

Norėdami gauti sugeneruotą privatų raktą, vykdykite:

cat /tmp/ssh_key

GitHub naudokite STACKHERO_SSH_PRIVATE_KEY kaip Name ir įklijuokite savo privatų raktą į Value lauką.

SSH privataus rakto slapto pridėjimasSSH privataus rakto slapto pridėjimas

Tada skiltyje Environment variables spauskite Add variable.

Kintamųjų nustatymasKintamųjų nustatymas

Įrašykite STACKHERO_ENDPOINT kaip Name ir įklijuokite savo Node.js paslaugos endpoint'ą į Value lauką. Endpoint'ą rasite Stackhero valdymo skydelyje.

Endpoint kintamojo nustatymasEndpoint kintamojo nustatymas

Jei savo paslaugai nustatėte individualų domeno vardą, naudokite jį vietoje <XXXXXX>.stackhero-network.com.

Saugumo sumetimais rekomenduojama ištrinti SSH raktus iš savo kompiuterio, kai jie jau nustatyti Stackhero ir GitHub:

rm /tmp/ssh_key /tmp/ssh_key.pub

Savo Git saugykloje sukurkite katalogą .github/workflows, jei jis dar neegzistuoja. Tada pridėkite failą pavadinimu deploy-to-stackhero.yml:

# File: .github/workflows/deploy-to-stackhero.yml

name: Deploy to Stackhero
run-name: Deploy branch "${{ github.ref_name }}" to Stackhero

on:
  push:
    # Nurodykite šakas, kurios paleidžia diegimo veiksmą. Įsitikinkite, kad kiekvienai šakai GitHub ("Settings" > "Environments") yra sukurta aplinka.
    # Tada toje aplinkoje pridėkite atitinkamą slaptą STACKHERO_SSH_PRIVATE_KEY ir kintamąjį STACKHERO_ENDPOINT.
    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 ir STACKHERO_ENDPOINT turi būti nustatyti atitinkamoje GitHub aplinkoje.
        ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
        endpoint: ${{ vars.STACKHERO_ENDPOINT }}

Kai sukursite darbo eigos failą, galite įkelti pakeitimus taip:

git add -A .
git commit -m "Pridėti GitHub Actions diegimui į Stackhero"

Norėdami sukurti „production“ šaką, vykdykite:

git checkout -b production

Tada įkelkite pakeitimus į GitHub:

git push --set-upstream origin production

Šis įkėlimas nusiųs jūsų kodą į production šaką ir paleis GitHub Actions, kad kodas būtų įdiegtas Stackhero paslaugoje. Norėdami patikrinti diegimą, atidarykite savo projektą GitHub ir spauskite Actions.

GitHub Actions, kurios įdiegė į productionGitHub Actions, kurios įdiegė į production

Viskas. Jūsų kodas dabar paruoštas automatiniam diegimui į produkciją per GitHub Actions.

„Staging“ aplinkos paruošimas beveik identiškas kaip ir „production“. Tiesiog pakartokite aukščiau aprašytus veiksmus, kai reikia, vietoje production naudodami staging.

Pradėkite sukurdami „staging“ šaką:

git checkout -b staging

Tada įkelkite „staging“ šaką į GitHub:

git push --set-upstream origin staging

GitHub Actions automatiškai įdiegs jūsų staging šaką į jai skirtą Node.js paslaugą.

Rekomenduojama apsaugoti production ir staging šakas, kad būtų išvengta tiesioginių įkėlimų (push). Vietoje to, galite sukurti pull request į „staging“ šaką ir sujungti pakeitimus iš savo vystymo (development) šakos. Patvirtinę pakeitimus „staging“ platformoje, sujunkite pull request į production šaką.

Toks darbo procesas užtikrina, kad tik įgalioti bendradarbiai gali įkelti į „staging“ ir „production“ šakas, ir suteikia papildomą testavimo etapą prieš naujų funkcijų paleidimą į produkciją.