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.
PHP paslaugų kūrimas
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ų pavyzdys
SSH raktų konfigūravimas
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.
SSH raktų generavimas
Norėdami sugeneruoti naujus SSH raktus, savo kompiuteryje paleiskite šią komandą:
ssh-keygen -C "" -f /tmp/ssh_key -N ""
Viešojo rakto pridėjimas
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:
- Skiltyje
SSH public keysspauskite „Add a public key“. - Laukelyje
Descriptionįrašykite „GitHub Action“. - Į lauką
Keyįklijuokite ką tik gautą viešąjį raktą.
Paslaugos nustatymų gavimas
Privačiojo rakto pridėjimas
Dabar pridėkite privatųjį raktą prie savo GitHub projekto, kad jis būtų naudojamas diegimo metu:
-
Eikite į
Settings, tada pasirinkiteEnvironmentsir spauskiteNew environment.
GitHub aplinkų konfigūravimas -
Laukelyje
Nameįrašykite „production“ ir patvirtinkite.
Aplinkos nustatymas -
Spauskite mygtuką
No restrictionir pasirinkiteSelected branches and tags.
Aplinkos apribojimų nustatymas -
Spauskite
Add deployment branch or tag rule, laukelyjeName patternįrašykite „production“ ir spauskiteAdd rule.
Aplinkos šakos nustatymas
Aplinkos šakos nustatymas -
Skiltyje
Environment secretsspauskiteAdd secret.
Slapto rakto pridėjimas
Anksčiau sugeneruotą privatųjį raktą gaukite paleisdami:
cat /tmp/ssh_key
GitHub aplinkos nustatymuose:
-
Laukelyje
NameįrašykiteSTACKHERO_SSH_PRIVATE_KEYir į laukąValueįklijuokite savo privatųjį raktą.
SSH privataus rakto slapto pridėjimas -
Skiltyje
Environment variablesspauskiteAdd variable.
Kintamųjų nustatymas -
Laukelyje
NameįrašykiteSTACKHERO_ENDPOINTir į laukąValueįklijuokite savo PHP paslaugos endpoint'ą. Jį rasite Stackhero valdymo skydelyje.
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 po konfigūracijos ištrinti sugeneruotus SSH raktus iš savo kompiuterio:
rm /tmp/ssh_key /tmp/ssh_key.pub
GitHub Actions darbo eigos konfigūravimas
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 į production
Sveikiname! Jūsų projektas dabar paruoštas automatiniam diegimui į gamybą naudojant GitHub Actions.
Staging aplinkos kūrimas
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ą.
Papildomos rekomendacijos
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.