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.
Python paslaugų kūrimas
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ų pavyzdys
SSH raktų konfigūravimas
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 ""
Viešojo rakto nustatymas
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ų gavimas
Vykdykite šiuos žingsnius:
- Skiltyje
SSH public keysspauskiteAdd a public key. - Laukelyje
DescriptionįrašykiteGitHub Action. - Laukelyje
Keyįklijuokite ką tik nukopijuotą viešąjį raktą.
Viešojo rakto pridėjimas
Privačiojo rakto nustatymas
Eikite į savo GitHub projekto puslapį, spauskite Settings, tada Environments. Pasirinkite New environment.
GitHub aplinkų konfigūravimas
Laukelyje Name įrašykite „production“ ir patvirtinkite.
Aplinkos nustatymas
Spauskite mygtuką No restriction ir pasirinkite Selected branches and tags.
Aplinkos apribojimų nustatymas
Tada spauskite Add deployment branch or tag rule, laukelyje Name pattern įrašykite „production“ ir spauskite Add rule.
Aplinkos šakos nustatymas
Aplinkos šakos nustatymas
Skiltyje Environment secrets spauskite Add secret.
Slapto 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 nustatymas
Toliau, skiltyje Environment variables, spauskite Add variable.
Kintamųjų nustatymas
Įrašykite STACKHERO_ENDPOINT kaip Name ir įklijuokite savo Python paslaugos endpoint kaip Value. Šį endpoint rasite savo Stackhero valdymo pulte.
Endpoint kintamojo nustatymas
Jei esate pritaikę savo paslaugos domeno vardą, naudokite pritaikytą versiją vietoje <XXXXXX>.stackhero-network.com.
Sugeneruotų raktų ištrynimas
Saugumo sumetimais rekomenduojama dabar ištrinti SSH raktus iš savo kompiuterio, nes jų daugiau nebereikės:
rm /tmp/ssh_key /tmp/ssh_key.pub
GitHub Actions darbo eigos konfigūravimas
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ė į production
Viskas. Dabar turite automatinius diegimus į produkciją naudodami GitHub Actions.
Staging aplinkos kūrimas
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.
Papildomos rekomendacijos
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.