Python: Diegimas naudojant GitHub Actions

Kaip diegti savo Python kodą naudojant GitHub Actions

👋 Sveiki atvykę į Stackhero dokumentaciją!

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

  • Įdiekite savo programą per kelias sekundes su paprastu git push.
  • Naudokite savo domeno vardą ir pasinaudokite automatinės HTTPS sertifikatų konfigūracijos privalumais, 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ą saugumo lygį dėka privačios ir dedikuotos VM.

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

GitHub Actions leidžia lengvai automatizuoti užduotis, įskaitant jūsų Python kodo diegimą tiesiai į produkcinius serverius.

Šiame vadove sužinosite, kaip saugiai ir patikimai sukonfigūruoti GitHub Actions, kad Python kodas būtų diegiamas tiek į „staging“, tiek į „production“ aplinkas.

Kad viskas būtų aišku ir tvarkinga, naudosite dvi šakas: staging ir production. Kiekvieną kartą, kai įkelsite kodą į šias šakas, jis bus automatiškai diegiamas į atitinkamą Stackhero instanciją.

Turėti „staging“ instanciją nėra privaloma. Galite vadovautis šiuo vadovu ir turėti tik vieną „production“ instanciją. Tačiau, norint užtikrinti sklandų diegimą ir būti visiškai užtikrintiems diegiant į produkciją, labai rekomenduojama palaikyti tiek „staging“, tiek „production“ instancijas. Tai yra pramonės standartas ir patikima praktika, padedanti išvengti daugelio problemų.

Prieš pradėdami, įsitikinkite, kad turite GitHub paskyrą ir repozitoriją, kurioje laikomas jūsų kodas.

Apsilankykite savo Stackhero valdymo pulte ir sukurkite dvi Stackhero paslaugas: vieną „staging“, kitą – „production“. Aiškumo dėlei galite jas pavadinti „Production“ ir „Staging“.

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

Production ir staging paslaugų pavyzdysProduction ir staging paslaugų pavyzdys

SSH raktai leidžia GitHub Actions saugiai prisijungti prie jūsų Python paslaugos kodo diegimui. Šis žingsnis yra itin svarbus norint apsaugoti jūsų Stackhero paslaugas.

Savo kompiuteryje galite sugeneruoti naujus SSH raktus vykdydami:

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

Pirmiausia parodykite ką tik sugeneruotą viešąjį raktą:

cat /tmp/ssh_key.pub

Tada Stackhero valdymo pulte pasirinkite savo „production“ Python paslaugą ir spauskite „Configure“.

Paslaugos nustatymų gavimasPaslaugos nustatymų gavimas

Vykdykite šiuos žingsnius:

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

Viešojo rakto pridėjimasViešojo rakto pridėjimas

Eikite į savo GitHub projekto puslapį, spauskite Settings, tada Environments. Pasirinkite New environment.

GitHub aplinkų konfigūravimasGitHub aplinkų konfigūravimas

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

Aplinkos nustatymasAplinkos nustatymas

Spauskite mygtuką No restriction ir pasirinkite Selected branches and tags.

Aplinkos apribojimų nustatymasAplinkos apribojimų nustatymas

Tada 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

Dabar parodykite anksčiau sugeneruotą privatųjį raktą:

cat /tmp/ssh_key

Slapto rakto nustatymuose naudokite STACKHERO_SSH_PRIVATE_KEY kaip Name ir įklijuokite privatųjį raktą kaip Value.

SSH privataus rakto slapto nustatymasSSH privataus rakto slapto nustatymas

Toliau, skiltyje Environment variables, spauskite Add variable.

Kintamųjų nustatymasKintamųjų nustatymas

Įrašykite STACKHERO_ENDPOINT kaip Name ir įklijuokite savo Python paslaugos endpoint kaip Value. Šį endpoint rasite savo Stackhero valdymo pulte.

Endpoint kintamojo nustatymasEndpoint kintamojo nustatymas

Jei esate pritaikę savo paslaugos domeno vardą, naudokite pritaikytą versiją vietoje <XXXXXX>.stackhero-network.com.

Saugumo sumetimais rekomenduojama dabar ištrinti SSH raktus iš savo kompiuterio, nes jų daugiau nebereikės:

rm /tmp/ssh_key /tmp/ssh_key.pub

Savo Git repozitorijoje sukurkite katalogą .github/workflows, jei jis dar neegzistuoja. Tada įdėkite 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ą 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 atitinkamos šakos aplinkoje GitHub „Settings“/„Environments“.
        ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
        endpoint: ${{ vars.STACKHERO_ENDPOINT }}

Kai pridėsite darbo eigos failą, galite įrašyti pakeitimus:

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

Galite sukurti „production“ šaką taip:

git checkout -b production

Ir įkelti pakeitimus į GitHub:

git push --set-upstream origin production

Tai įkels jūsų kodą į production šaką GitHub ir paleis GitHub Actions, kuris diegs jūsų kodą į Stackhero instanciją.

Norėdami patikrinti diegimo būseną, tiesiog apsilankykite savo GitHub projekto puslapyje ir spauskite Actions.

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

Viskas. Dabar turite automatinius diegimus į produkciją naudodami GitHub Actions.

Staging aplinkos konfigūravimas beveik identiškas production aplinkos nustatymui. Tiesiog pakartokite aukščiau aprašytus žingsnius, visur pakeisdami production į staging.

Sukonfigūravę aplinką, galite sukurti „staging“ šaką taip:

git checkout -b staging

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

git push --set-upstream origin staging

Dabar jūsų „staging“ šaka bus automatiškai diegiama į Python instanciją, kurią paskyrėte staging aplinkai.

Rekomenduojama apsaugoti production ir staging šakas, kad būtų išvengta tiesioginių įkėlimų (push). Su šia konfigūracija komandos nariai turės kurti pull request'us į staging šaką, kurie turėtų būti peržiūrėti ir sujungti vartotojų, turinčių atitinkamas teises. Kai pakeitimai bus patvirtinti staging platformoje, pull request'ą į production šaką galės sujungti tik įgaliotas asmuo.

Toks darbo eigos modelis padeda užtikrinti, kad į produkciją patektų tik patvirtinti pakeitimai, taip pat pagerina patikimumą, nes naujos funkcijos pirmiausia išbandomos staging aplinkoje prieš jas paleidžiant gyvai.