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 automatizuoti užduotis, tokias kaip jūsų Python kodo diegimas į gamybos serverius.

Šiame vadove sužinosite, kaip saugiai ir patikimai naudoti GitHub Actions, kad diegtumėte savo Python kodą tiek į bandomąją, tiek į gamybos aplinką.

Tam palaikysite dvi šakas: staging ir production. 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žtikrintiems diegiant į gamybą, labai rekomenduojama palaikyti tiek bandomąją, tiek gamybos instanciją. Ši praktika yra pramonės standartas ir protingas požiūris, kuris gali padėti išvengti daugybės problemų.

Prieš pradėdami, įsitikinkite, kad turite GitHub paskyrą su saugykla, kurioje talpinamas jūsų kodas.

Apsilankykite savo Stackhero valdymo skydelyje ir sukurkite dvi Stackhero paslaugas: vieną bandomajai ir vieną gamybai. Aiškumo dėlei galite pervadinti šias paslaugas į "Production" ir "Staging".

Dar neturite Stackhero paskyros? Galite užsiregistruoti per dvi minutes nemokamai ir tada sukurti savo Python debesų paslaugas vos keliais paspaudimais.

Gamybos ir bandomųjų paslaugų pavyzdysGamybos ir bandomųjų paslaugų pavyzdys

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

Savo kompiuteryje sugeneruokite naujus SSH raktus vykdydami:

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

Pirmiausia, gaukite ką tik sugeneruotą viešąjį raktą:

cat /tmp/ssh_key.pub

Tada, Stackhero valdymo skydelyje, pasirinkite savo "production" Python paslaugą ir spustelėkite "Configure" mygtuką.

Gauti paslaugos nustatymusGauti paslaugos nustatymus

Sekite šiuos žingsnius:

  1. SSH public keys skyriuje spustelėkite Add a public key.
  2. Description lauke įveskite GitHub Action.
  3. Key lauke įklijuokite viešąjį raktą, kurį nukopijavote iš savo kompiuterio.

Pridėti viešąjį raktąPridėti viešąjį raktą

Eikite į savo GitHub projekto puslapį ir spustelėkite Settings, tada Environments. Pasirinkite New environment.

GitHub aplinkų konfigūravimasGitHub aplinkų konfigūravimas

Name lauke įveskite "production" ir patvirtinkite.

Aplinkos nustatymasAplinkos nustatymas

Spustelėkite No restriction mygtuką ir pasirinkite Selected branches and tags.

Aplinkos apribojimų nustatymasAplinkos apribojimų nustatymas

Tada spustelėkite Add deployment branch or tag rule, Name pattern lauke įveskite "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ą

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

cat /tmp/ssh_key

Slapto rakto nustatyme naudokite STACKHERO_SSH_PRIVATE_KEY kaip Pavadinimą ir įklijuokite privatųjį raktą kaip Vertę.

SSH privataus rakto slapto rakto nustatymasSSH privataus rakto slapto rakto nustatymas

Tada, Environment variables skyriuje spustelėkite Add variable.

Kintamųjų nustatymasKintamųjų nustatymas

Įveskite STACKHERO_ENDPOINT kaip Pavadinimą ir įklijuokite savo Python paslaugos galinį tašką kaip Vertę. Šį galinį tašką galite rasti 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.

Dėl saugumo priežasčių pašalinkite SSH raktus iš savo kompiuterio, nes jų daugiau nereikės:

rm /tmp/ssh_key /tmp/ssh_key.pub

Savo Git saugykloje sukurkite katalogą .github/workflows, jei jis dar neegzistuoja. Tada sukurkite failą pavadinimu deploy-to-stackhero.yml tame kataloge.

# 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 }}

Patvirtinkite šiuos pakeitimus vykdydami:

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

Ši komanda įkelia jūsų kodą į GitHub production šaką ir sukelia GitHub Actions, kad diegtų kodą į jūsų Stackhero instanciją.

Norėdami patikrinti diegimą, apsilankykite GitHub projekto puslapyje ir spustelėkite Actions.

GitHub Actions, kurios diegė į gamybąGitHub Actions, kurios diegė į gamybą

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

Bandomosios aplinkos nustatymas yra labai panašus į gamybos aplinkos konfigūravimą. Tiesiog pakartokite aukščiau nurodytus veiksmus, pakeisdami production į staging.

Po aplinkos nustatymo sukurkite bandomąją šaką:

git checkout -b staging

Tada įkelkite savo bandomąją šaką į GitHub:

git push --set-upstream origin staging

GitHub Actions automatiškai diegs jūsų bandomąją šaką į Python instanciją, skirtą bandomajai aplinkai.

Rekomenduojama apsaugoti production ir staging šakas, kad būtų išvengta tiesioginių įkėlimų. Su šia konfigūracija, turi būti sukurtos pull requests staging šakai ir sujungtos komandos narių, turinčių atitinkamas teises. Kai patvirtinama bandomojoje platformoje, pull request gali būti sujungta į production šaką tų pačių įgaliotų asmenų.

Šis požiūris padidina saugumą užtikrinant, kad būtų diegiami tik patvirtinti pakeitimai, ir pagerina patikimumą, išbandant naujas funkcijas bandomojoje platformoje prieš joms pasiekiant gamybą.