PHP: Diegimas naudojant GitHub Actions

Kaip diegti savo PHP kodą naudojant GitHub Actions

👋 Sveiki atvykę į Stackhero dokumentaciją!

Stackhero siūlo paruoštą naudoti PHP 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 optimalų veikimą ir tvirtą saugumą dėka privačios ir dedikuotos VM.

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

GitHub Actions yra galingas įrankis, leidžiantis automatizuoti darbo eigas, įskaitant jūsų PHP kodo diegimą tiesiai į gamybinius serverius. Šiame vadove paaiškinsime, kaip saugiai diegti savo PHP aplikaciją tiek į „staging“, tiek į „production“ aplinkas naudojant GitHub Actions.

Rekomenduojama praktika – palaikyti dvi šakas jūsų repozitorijoje: staging ir production. Kiekvieną kartą, kai įkelsite kodą į šias šakas, jis bus automatiškai įdiegtas į atitinkamą Stackhero instanciją.

Turėti „staging“ instanciją nėra privaloma. Tačiau naudoti tiek „staging“, tiek „production“ instancijas yra labai rekomenduojama, kad diegimai vyktų sklandžiai ir būtų daugiau pasitikėjimo diegiant į gamybą. Tokia praktika atitinka pramonės standartus ir padeda išvengti galimų problemų.

Norėdami pradėti, jums reikės GitHub paskyros, kurioje jūsų PHP kodas būtų patalpintas repozitorijoje.

Pirmiausia prisijunkite prie savo Stackhero valdymo skydelio ir sukurkite dvi PHP paslaugas: vieną „staging“, kitą – „production“. Aiškumo dėlei galite šias paslaugas pervadinti į „Production“ ir „Staging“.

Jei dar neturite Stackhero paskyros, ją galite susikurti nemokamai vos per dvi minutes ir kelių paspaudimų pagalba paleisti savo PHP debesies paslaugas.

Production ir staging paslaugų pavyzdysProduction ir staging paslaugų pavyzdys

SSH raktai yra rekomenduojamas būdas leisti GitHub Actions saugiai prisijungti prie jūsų PHP paslaugos diegimo metu. Šiame vadove sukursite specialią SSH raktų porą būtent šiam tikslui.

Norėdami sugeneruoti naujus SSH raktus, savo kompiuteryje paleiskite šią komandą:

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

Tada, norėdami gauti viešąjį raktą, paleiskite:

cat /tmp/ssh_key.pub

Eikite į savo Stackhero valdymo skydelį ir pasirinkite „Production“ PHP paslaugą. Spauskite „Configure“ ir atlikite šiuos veiksmus:

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

Paslaugos nustatymų gavimasPaslaugos nustatymų gavimas

Dabar pridėkite privatųjį raktą prie savo GitHub projekto, kad jis būtų naudojamas diegimo metu:

  • Eikite į Settings, tada pasirinkite Environments ir spauskite 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

  • 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

Anksčiau sugeneruotą privatųjį raktą gaukite paleisdami:

cat /tmp/ssh_key

GitHub aplinkos nustatymuose:

  • Laukelyje Name įrašykite STACKHERO_SSH_PRIVATE_KEY ir į lauką Value įklijuokite savo privatųjį raktą.

    SSH privataus rakto slapto pridėjimasSSH privataus rakto slapto pridėjimas

  • Skiltyje Environment variables spauskite Add variable.

    Kintamųjų nustatymasKintamųjų nustatymas

  • Laukelyje Name įrašykite STACKHERO_ENDPOINT ir į lauką Value įklijuokite savo PHP paslaugos endpoint'ą. Jį rasite Stackhero valdymo skydelyje.

    Endpoint kintamojo nustatymasEndpoint kintamojo nustatymas

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

Saugumo sumetimais rekomenduojama po konfigūracijos ištrinti sugeneruotus SSH raktus iš savo kompiuterio:

rm /tmp/ssh_key /tmp/ssh_key.pub

Dabar sukursite GitHub Actions darbo eigos failą, kuris automatizuos jūsų diegimus. Savo Git repozitorijoje sukurkite katalogą .github/workflows ir į jį įdėkite failą deploy-to-stackhero.yml su šiuo turiniu:

# File: .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 kiekvienai šakai sukurti atitinkamą aplinką GitHub („Settings" -> "Environments")
    # Tada toje aplinkoje pridėkite slaptažodį „STACKHERO_SSH_PRIVATE_KEY“ ir kintamąjį „STACKHERO_ENDPOINT“
    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 GitHub aplinkoje („Settings" -> "Environments")
        ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
        endpoint: ${{ vars.STACKHERO_ENDPOINT }}

Kai pridėsite šį failą, galite įkelti pakeitimus naudodami šias komandas terminale:

git add -A .
git commit -m "Add GitHub Actions to deploy to Stackhero"

Norėdami sukurti „production“ šaką, galite paleisti:

git checkout -b production

Tada įkelkite pakeitimus į GitHub:

git push --set-upstream origin production

Tai įkels jūsų kodą į production šaką GitHub'e. GitHub Actions tada automatiškai paleis ir įdiegs jūsų kodą į susietą Stackhero instanciją. Norėdami patikrinti diegimo būseną, apsilankykite savo GitHub projekte ir spauskite Actions.

GitHub Actions, įdiegęs į productionGitHub Actions, įdiegęs į production

Sveikiname! Jūsų projektas dabar paruoštas automatiniam diegimui į gamybą naudojant GitHub Actions.

Savo „staging“ aplinką galite sukonfigūruoti taip pat, kaip ir „production“. Tiesiog pakartokite aukščiau aprašytus žingsnius, kur reikia, vietoje production naudodami staging.

Kai nustatymai bus atlikti, galite sukurti „staging“ šaką taip:

git checkout -b staging

Tada įkelkite ją į GitHub:

git push --set-upstream origin staging

GitHub Actions automatiškai įdiegs kodą iš jūsų „staging“ šakos į tam skirtą PHP paslaugą.

Norėdami užtikrinti savo aplikacijos patikimumą ir saugumą, rekomenduojama apsaugoti production ir staging šakas nuo tiesioginių įkėlimų (push). Galite nustatyti, kad pakeitimai būtų atliekami tik per pull request'us, o „staging“ šaką galėtų peržiūrėti ir sujungti tik turintys diegimo teises. Kai pakeitimai bus patvirtinti „staging“ aplinkoje, įgalioti naudotojai galės juos sujungti į production šaką.

Toks požiūris užtikrina, kad į gamybą patektų tik patikrintas kodas, o naujos funkcijos būtų išbandomos „staging“ aplinkoje prieš paleidžiant jas gyvai. Tai suteikia papildomo užtikrintumo jums ir jūsų komandai.