Ruby: Diegimas naudojant GitHub Actions

Kaip diegti savo Ruby kodą naudojant GitHub Actions

👋 Sveiki atvykę į Stackhero dokumentaciją!

Stackhero siūlo paruoštą naudoti Ruby 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 Ruby cloud hosting sprendimą užtrunka tik 5 minutes!

GitHub Actions leidžia lengvai automatizuoti užduotis, tokias kaip jūsų Ruby kodo diegimas į gamybinius serverius. Jokių rankinių veiksmų nereikia.

Šiame vadove sužinosite, kaip saugiai ir patikimai sukonfigūruoti GitHub Actions, kad jūsų Ruby kodas būtų automatiškai diegiamas tiek į staging, tiek į production aplinkas. Toks metodas užtikrina nuoseklų diegimą ir sumažina klaidų riziką.

Pradėdami dirbsite su dviem šakomis (branches) savo GitHub repozitorijoje: staging ir production. Kiekvieną kartą, kai įkelsite kodą į šias šakas, jūsų pakeitimai bus automatiškai įdiegti atitinkamoje Stackhero instancijoje.

Turėti staging instanciją yra neprivaloma. Nors galite vadovautis šiuo vadovu tik su production instancija, labai rekomenduojama įsidiegti tiek staging, tiek production aplinkas. Tai laikoma gerąja praktika pramonėje ir padeda aptikti problemas dar prieš joms pasiekiant jūsų production naudotojus.

Prieš pradėdami įsitikinkite, kad turite GitHub paskyrą ir repozitoriją su savo Ruby kodu.

Apsilankykite savo Stackhero valdymo pulte ir sukurkite dvi Ruby paslaugas: vieną staging, kitą production aplinkai. Aiškumo dėlei rekomenduojama šias paslaugas pervadinti į „Production“ ir „Staging“.

Dar neturite Stackhero paskyros? Užsiregistruoti galite nemokamai vos per kelias minutes, o tada sukurti savo Ruby cloud paslaugas vos keliais paspaudimais.

Production ir staging paslaugų pavyzdysProduction ir staging paslaugų pavyzdys

Kad GitHub Actions galėtų diegti jūsų kodą, reikia sukonfigūruoti SSH raktus. Tai užtikrina, kad tik autorizuoti veiksmai galės prisijungti prie jūsų Stackhero paslaugų ir jūsų diegimai bus saugūs.

Naują SSH raktų porą galite sugeneruoti savo kompiuteryje naudodami:

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

Toliau, išveskite viešąjį raktą, kurį ką tik sukūrėte:

cat /tmp/ssh_key.pub

Stackhero valdymo pulte pasirinkite savo „production“ Ruby paslaugą ir spauskite „Configure“. Paslaugos nustatymų gavimasPaslaugos nustatymų gavimas

Tada:

  1. Skiltyje SSH public keys spauskite Add a public key.
  2. Laukelyje Description įrašykite GitHub Action.
  3. Laukelyje Key įklijuokite viešojo rakto turinį iš savo kompiuterio.

Paslaugos nustatymų gavimasPaslaugos nustatymų gavimas

Dabar eikite į GitHub svetainę ir atsidarykite savo projektą.

Eikite į Settings > Environments, tada spauskite New environment. GitHub aplinkų konfigūravimasGitHub aplinkų konfigūravimas

Suteikite aplinkai pavadinimą „production“ ir išsaugokite. Aplinkos nustatymasAplinkos nustatymas

Spauskite No restriction ir pasirinkite Selected branches and tags. Aplinkos apribojimų nustatymasAplinkos apribojimų nustatymas

Spauskite Add deployment branch or tag rule, įveskite „production“ kaip šabloną ir pridėkite taisyklę. Aplinkos šakos nustatymasAplinkos šakos nustatymas Aplinkos šakos nustatymasAplinkos šakos nustatymas

Kad saugiai išsaugotumėte savo SSH privatųjį raktą, eikite į Environment secrets ir spauskite Add secret. Pridėti slaptą reikšmęPridėti slaptą reikšmę

Išveskite privatųjį raktą iš savo kompiuterio:

cat /tmp/ssh_key

Laukelyje Name įrašykite STACKHERO_SSH_PRIVATE_KEY. Laukelyje Value įklijuokite savo privataus rakto turinį. SSH privataus rakto slaptos reikšmės nustatymasSSH privataus rakto slaptos reikšmės nustatymas

Toliau, pridėkite savo Ruby paslaugos endpoint kaip aplinkos kintamąjį. Spauskite Add variable skiltyje Environment variables. Kintamųjų nustatymasKintamųjų nustatymas

Laukelyje Name įrašykite STACKHERO_ENDPOINT. Laukelyje Value įklijuokite savo Ruby paslaugos endpoint, kurį rasite Stackhero valdymo pulte. Endpoint kintamojo nustatymasEndpoint kintamojo nustatymas

Jei savo paslaugai nustatėte individualų domeno vardą, būtinai naudokite tą domeną vietoje <XXXXXX>.stackhero-network.com.

Kai raktai jau nustatyti Stackhero ir GitHub, galite juos ištrinti iš savo kompiuterio dėl saugumo.

rm /tmp/ssh_key /tmp/ssh_key.pub

Savo vietiniame kompiuteryje, Git repozitorijoje, sukurkite katalogą .github/workflows. Šiame kataloge sukurkite failą pavadinimu deploy-to-stackhero.yml.

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

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

on:
  push:
    # Šakų sąrašas, kurios iššauks diegimo veiksmą po git push.
    # Nepamirškite sukurti aplinkos, atitinkančios šakos pavadinimą GitHub ("Settings"/"Environments").
    # Tada pridėkite atitinkamą slaptą reikšmę "STACKHERO_SSH_PRIVATE_KEY" ir kintamąjį "STACKHERO_ENDPOINT" šioje aplinkoje.
    branches: [ "production", "staging" ]

jobs:
  Deploy:
    environment: ${{ github.ref_name }}
    runs-on: ubuntu-latest
    steps:
    - uses: stackhero-io/github-actions-deploy-to-stackhero@v1
      with:
        # Slaptas raktas "STACKHERO_SSH_PRIVATE_KEY" ir kintamasis "STACKHERO_ENDPOINT" turi būti apibrėžti atitinkamos šakos aplinkoje GitHub skiltyje "Settings"/"Environments".
        ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
        endpoint: ${{ vars.STACKHERO_ENDPOINT }}

Sukūrę workflow failą, galite įkelti savo pakeitimus.

git add -A .
git commit -m "Add GitHub Actions to deploy to Stackhero"

Toliau sukurkite production šaką.

git checkout -b production

Galiausiai, įkelkite savo pakeitimus į GitHub.

git push --set-upstream origin production

Šis paskutinis git push įkels jūsų kodą į production šaką GitHub. GitHub Actions automatiškai pradės darbą ir įdiegs jūsų kodą į Stackhero instanciją.

Norėdami pamatyti savo workflow veiksmą, apsilankykite projekto GitHub puslapyje ir spauskite Actions. GitHub Actions, kurios įdiegė į productionGitHub Actions, kurios įdiegė į production

Sveikiname, ką tik įsidiegėte nuolatinį diegimą į production su GitHub Actions.

Staging aplinkos kūrimas vyksta lygiai taip pat kaip ir production. Tiesiog pakartokite aukščiau aprašytus veiksmus, visur, kur reikia, pakeisdami production į staging.

Kai jau būsite sukonfigūravę staging aplinką, galite sukurti staging šaką.

git checkout -b staging

Įkelkite savo staging šaką į GitHub.

git push --set-upstream origin staging

Dabar GitHub Actions automatiškai diegs jūsų staging šaką į tam skirtą Stackhero Ruby instanciją.

Norėdami užtikrinti diegimų saugumą, rekomenduojama apsaugoti savo production ir staging šakas. Tai reiškia, kad tiesioginiai push veiksmai yra ribojami, o pakeitimai turi būti atliekami per pull request. Komandos nariai, turintys tinkamus leidimus, gali peržiūrėti ir patvirtinti pull request į staging, o kai viskas patikrinta, pakeitimai tokiu pačiu būdu sujungiami į production.

Laikydamiesi šio workflow, padidinate saugumą (tik autorizuoti naudotojai gali diegti į staging ir production) ir patikimumą (visos naujos funkcijos pirmiausia testuojamos staging aplinkoje prieš pasiekiant production). Tai padeda užtikrinti sklandžius diegimus ir stabilų production aplinką.