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.

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ų pavyzdysGamybos ir bandomųjų paslaugų pavyzdys

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

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 nustatymusGauti paslaugos nustatymus

Tada:

  1. SSH public keys skyriuje spustelėkite Add a public key.
  2. Description skyriuje įrašykite GitHub Action.
  3. Key skyriuje įklijuokite viešojo rakto turinį, kurį turite savo kompiuteryje.

Gauti paslaugos nustatymusGauti paslaugos nustatymus

Eikite į GitHub svetainę ir pasirinkite savo projektą.

Spustelėkite Settings/Environments ir tada New environment. GitHub aplinkų konfigūravimasGitHub aplinkų konfigūravimas

Name skyriuje įrašykite "production" ir patvirtinkite. Aplinkos nustatymasAplinkos nustatymas

Spustelėkite mygtuką No restriction ir pasirinkite Selected branches and tags. Aplinkos apribojimų nustatymasAplinkos apribojimų nustatymas

Spustelėkite Add deployment branch or tag rule, Name pattern skyriuje įrašykite "production" ir spustelėkite Add rule. Aplinkos šakos nustatymasAplinkos šakos nustatymas Aplinkos šakos nustatymasAplinkos šakos nustatymas

Environment secrets skyriuje spustelėkite Add secret. Pridėti slaptą raktą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 nustatymasSSH privataus rakto slaptumo nustatymas

Environment variables skyriuje spustelėkite Add variable. Kintamųjų nustatymasKintamų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 nustatymasGalinio taško kintamojo nustatymas

Jei pritaikėte savo paslaugos domeno vardą, naudokite pritaikytą versiją vietoj xxxxxx.stackhero-network.com.

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

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ąGitHub Actions, kuris diegė į gamybą

Sveikiname, dabar galite automatiškai diegti savo kodą į gamybą per GitHub Actions!

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.

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ą).