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 automatizuoti užduotis, tokias kaip Ruby kodo diegimas į gamybos serverius.
Šiame vadove sužinosite, kaip saugiai ir patikimai naudoti GitHub Actions, kad diegtumėte savo Ruby kodą tiek bandomojoje, tiek gamybos aplinkoje.
Tam palaikysite dvi šakas: staging ir production, kur kodas, įkeltas į šias šakas, bus automatiškai diegiamas atitinkamoje Stackhero instancijoje.
Turėti bandomąją instanciją nėra privaloma. Galite sekti šį vadovą ir turėti tik vieną gamybos instanciją. Tačiau, norint užtikrinti sklandų diegimą ir būti visiškai užtikrintam diegiant į gamybą, labai rekomenduojama palaikyti tiek bandomąją, tiek gamybos instanciją. Ši praktika yra pramonės standartas ir gera praktika, padedanti išvengti daugybės problemų.
Norėdami tęsti šį vadovą, jums reikia GitHub paskyros su saugykla, kurioje talpinamas jūsų kodas.
Ruby paslaugų kūrimas
Eikite į savo Stackhero valdymo skydą ir sukurkite dvi Stackhero paslaugas: vieną bandomajai ir vieną gamybai. Kad išvengtumėte painiavos, rekomenduojame šias paslaugas pervadinti į "Production" ir "Staging".
Dar neturite Stackhero paskyros? Galite ją sukurti vos per dvi minutes, nemokamai, ir tada sukurti savo Ruby debesų paslaugas vos keliais paspaudimais.
Gamybos ir bandomųjų paslaugų pavyzdys
SSH raktų konfigūravimas
SSH raktai suteiks GitHub Actions teisę prisijungti prie jūsų Ruby paslaugos, kad diegtų jūsų kodą. Tai yra esminė dalis, siekiant užtikrinti jūsų Stackhero paslaugų saugumą.
Savo kompiuteryje sukurkite naujus SSH raktus:
ssh-keygen -C "" -f /tmp/ssh_key -N ""
Viešojo rakto nustatymas
Gaukite ką tik sugeneruotą viešąjį raktą:
cat /tmp/ssh_key.pub
Stackhero valdymo skydelyje pasirinkite savo "production" Ruby paslaugą ir spustelėkite mygtuką "Configure".
Gauti paslaugos nustatymus
Tada:
SSH public keysskyriuje spustelėkiteAdd a public key.Descriptionskyriuje įrašykiteGitHub Action.Keyskyriuje įklijuokite viešojo rakto turinį, kurį turite savo kompiuteryje.
Gauti paslaugos nustatymus
Privačiojo rakto nustatymas
Eikite į GitHub svetainę ir pasirinkite savo projektą.
Spustelėkite Settings/Environments ir tada New environment.
GitHub aplinkų konfigūravimas
Name skyriuje įrašykite "production" ir patvirtinkite.
Aplinkos nustatymas
Spustelėkite mygtuką No restriction ir pasirinkite Selected branches and tags.
Aplinkos apribojimų nustatymas
Spustelėkite Add deployment branch or tag rule, Name pattern skyriuje įrašykite "production" ir spustelėkite Add rule.
Aplinkos šakos nustatymas
Aplinkos šakos nustatymas
Environment secrets skyriuje spustelėkite Add secret.
Pridėti slaptą raktą
Gaukite anksčiau sugeneruotą privatųjį raktą savo kompiuteryje:
cat /tmp/ssh_key
Name skyriuje įrašykite STACKHERO_SSH_PRIVATE_KEY. Value skyriuje įklijuokite savo privatųjį raktą.
SSH privataus rakto slaptumo nustatymas
Environment variables skyriuje spustelėkite Add variable.
Kintamųjų nustatymas
Name skyriuje įrašykite STACKHERO_ENDPOINT. Value skyriuje įklijuokite savo Ruby paslaugos galinį tašką. Jį rasite savo Stackhero valdymo skydelyje.
Galinio taško kintamojo nustatymas
Jei pritaikėte savo paslaugos domeno vardą, naudokite pritaikytą versiją vietoj xxxxxx.stackhero-network.com.
Sugeneruotų raktų ištrynimas
Kadangi jums nebereikės anksčiau sugeneruotų SSH raktų, galite juos ištrinti iš savo kompiuterio dėl saugumo priežasčių:
rm /tmp/ssh_key /tmp/ssh_key.pub
GitHub Actions darbo eigos konfigūravimas
Savo Git saugykloje, savo kompiuteryje, sukurkite katalogą pavadinimu .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 sukels diegimo veiksmą po git push.
# Nepamirškite sukurti aplinkos, atitinkančios šakos pavadinimą GitHub ("Settings"/"Environments").
# Tada pridėkite atitinkamą slaptą raktą "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 atitinkamoje šakos aplinkoje GitHub "Settings"/"Environments".
ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
endpoint: ${{ vars.STACKHERO_ENDPOINT }}
Įsipareigokite savo pakeitimus:
git add -A .
git commit -m "Add GitHub Actions to deploy to Stackhero"
Tada sukurkite gamybos šaką:
git checkout -b production
Galiausiai, įkelkite savo pakeitimus į GitHub:
git push --set-upstream origin production
Šis galutinis git push komanda įkels kodą iš jūsų kompiuterio į GitHub šaką production. GitHub Actions automatiškai paleis ir diegs šį kodą jūsų Stackhero instancijoje.
Norėdami patikrinti šį veiksmą, eikite į GitHub svetainę, pasirinkite savo projektą ir spustelėkite Actions.
GitHub Actions, kuris diegė į gamybą
Sveikiname, dabar galite automatiškai diegti savo kodą į gamybą per GitHub Actions!
Bandomosios aplinkos kūrimas
Bandomosios aplinkos kūrimas yra panašus į gamybos aplinkos nustatymą.
Norėdami ją sukurti, pakartokite ankstesnių šio vadovo skyrių veiksmus, tiesiog pakeisdami production į staging.
Tada sukurkite bandomąją šaką:
git checkout -b staging
Galiausiai, įkelkite savo pakeitimus į GitHub:
git push --set-upstream origin staging
GitHub Actions automatiškai diegs jūsų bandomąją šaką į Ruby instanciją, skirtą bandomajai aplinkai.
Tolimesni žingsniai
Gera praktika yra apsaugoti production ir staging šakas, kad būtų išvengta tiesioginių įkėlimų į jas.
Tokiu atveju turi būti sukurtas pull request bandomajai šakai ir tada sujungtas žmonių, turinčių teisę įkelti kodą į bandomąją aplinką.
Kai patvirtinama bandomojoje platformoje, pull request gali būti sujungtas į production šaką tų pačių žmonių, turinčių teises.
Šis požiūris užtikrina saugumą (tik įgalioti asmenys gali įkelti į staging ir production) ir patikimumą (naujos funkcijos pirmiausia išbandomos bandomojoje platformoje prieš įkeliant į production šaką).