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.
Ruby paslaugų kūrimas
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ų pavyzdys
SSH raktų konfigūravimas
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 ""
Viešojo rakto pridėjimas
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ų gavimas
Tada:
- Skiltyje
SSH public keysspauskiteAdd a public key. - Laukelyje
DescriptionįrašykiteGitHub Action. - Laukelyje
Keyįklijuokite viešojo rakto turinį iš savo kompiuterio.
Paslaugos nustatymų gavimas
Privačiojo rakto pridėjimas
Dabar eikite į GitHub svetainę ir atsidarykite savo projektą.
Eikite į Settings > Environments, tada spauskite New environment.
GitHub aplinkų konfigūravimas
Suteikite aplinkai pavadinimą „production“ ir išsaugokite.
Aplinkos nustatymas
Spauskite No restriction ir pasirinkite Selected branches and tags.
Aplinkos apribojimų nustatymas
Spauskite Add deployment branch or tag rule, įveskite „production“ kaip šabloną ir pridėkite taisyklę.
Aplinkos šakos nustatymas
Aplinkos šakos nustatymas
Kad saugiai išsaugotumėte savo SSH privatųjį raktą, eikite į Environment secrets ir spauskite Add secret.
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 nustatymas
Toliau, pridėkite savo Ruby paslaugos endpoint kaip aplinkos kintamąjį. Spauskite Add variable skiltyje Environment variables.
Kintamųjų nustatymas
Laukelyje Name įrašykite STACKHERO_ENDPOINT. Laukelyje Value įklijuokite savo Ruby paslaugos endpoint, kurį rasite Stackhero valdymo pulte.
Endpoint kintamojo nustatymas
Jei savo paslaugai nustatėte individualų domeno vardą, būtinai naudokite tą domeną vietoje <XXXXXX>.stackhero-network.com.
Sugeneruotų raktų ištrynimas
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
GitHub Actions workflow konfigūravimas
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ė į production
Sveikiname, ką tik įsidiegėte nuolatinį diegimą į production su GitHub Actions.
Staging aplinkos kūrimas
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ą.
Papildomos rekomendacijos
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ą.