PHP: Implementeren met GitHub Actions
Hoe uw PHP-code te implementeren met behulp van GitHub Actions
👋 Welkom bij de Stackhero-documentatie!
Stackhero biedt een kant-en-klare PHP cloud oplossing die tal van voordelen biedt, waaronder:
- Implementeer uw applicatie in seconden met een eenvoudige
git push.- Gebruik uw eigen domeinnaam en profiteer van de automatische configuratie van HTTPS-certificaten voor verbeterde beveiliging.
- Geniet van gemoedsrust met automatische back-ups, updates met één klik, en eenvoudige, transparante en voorspelbare prijzen.
- Krijg optimale prestaties en robuuste beveiliging dankzij een privé en dedicated VM.
Bespaar tijd en vereenvoudig uw leven: het kost slechts 5 minuten om de PHP cloud hosting oplossing van Stackhero te proberen!
GitHub Actions maakt het eenvoudig om taken te automatiseren, zoals het implementeren van uw PHP-code naar productie-servers. In deze gids wordt u begeleid bij het veilig implementeren van uw PHP-applicatie naar zowel staging- als productieomgevingen met behulp van GitHub Actions.
De aanpak omvat het onderhouden van twee branches, staging en production. Code die naar deze branches wordt gepusht, wordt automatisch geïmplementeerd naar de overeenkomstige Stackhero-instantie.
Het hebben van een staging-instantie is niet verplicht. Het gebruik van zowel staging- als productie-instanties wordt echter sterk aanbevolen om soepele implementaties en meer vertrouwen bij het implementeren naar productie te garanderen. Deze praktijk is in lijn met industriestandaarden en helpt mogelijke problemen te voorkomen.
Om deze gids te volgen, heeft u een GitHub-account nodig dat uw PHP-code repository host.
Het maken van de PHP-services
Begin met inloggen op uw Stackhero-dashboard en maak twee PHP-services aan: één voor staging en één voor productie. Om georganiseerd te blijven, hernoemt u deze services naar "Production" en "Staging".
Als u geen Stackhero-account heeft, kunt u er gratis een aanmaken in slechts twee minuten en uw PHP-cloudservices met een paar klikken instellen.
Voorbeeld van productie- en stagingservices
SSH-sleutels configureren
SSH-sleutels zijn essentieel om GitHub Actions veilig verbinding te laten maken met uw PHP-service voor implementatie. In deze gids maakt u een unieke SSH-sleutelpaar die hiervoor is bedoeld.
SSH-sleutels genereren
U kunt nieuwe SSH-sleutels genereren door de volgende opdracht op uw computer uit te voeren:
ssh-keygen -C "" -f /tmp/ssh_key -N ""
De openbare sleutel instellen
Haal de openbare sleutel op door het volgende uit te voeren:
cat /tmp/ssh_key.pub
Navigeer vervolgens naar uw Stackhero-dashboard. Selecteer uw "Production" PHP-service en klik op "Configure". Volg dan deze stappen:
- Onder
SSH public keys, klik op "Add a public key". - Stel de
Descriptionin op "GitHub Action". - Plak de opgehaalde openbare sleutel in het veld
Key.
Service-instellingen ophalen
De privésleutel instellen
Open nu uw GitHub-project en volg deze stappen om de privésleutel voor implementatie te configureren:
-
Klik op
Settings, vervolgensEnvironmentsen selecteerNew environment.
GitHub-omgevingen configureren -
Voer in het veld
Name"production" in en bevestig.
De omgeving instellen -
Klik op de knop
No restrictionen selecteerSelected branches and tags.
Omgevingsbeperkingen instellen -
Klik op
Add deployment branch or tag rule, voer "production" in het veldName patternin en klik opAdd rule.
Omgevingsbranch instellen
Omgevingsbranch instellen -
Onder
Environment secrets, klik opAdd secret.
Secret toevoegen
Haal de eerder gegenereerde privésleutel op door het volgende uit te voeren:
cat /tmp/ssh_key
In de GitHub-omgevingsinstellingen:
-
Voer in
NameSTACKHERO_SSH_PRIVATE_KEYin en plak uw privésleutel in het veldValue.
De SSH privésleutel secret instellen -
Klik in de sectie
Environment variablesopAdd variable.
Variabelen instellen -
Voer in
NameSTACKHERO_ENDPOINTin en plak het PHP-service endpoint in het veldValue. U kunt dit endpoint vinden in uw Stackhero-dashboard.
De endpointvariabele instellen
Als u de domeinnaam van uw service heeft aangepast, gebruik dan de aangepaste versie in plaats van xxxxxx.stackhero-network.com.
De gegenereerde sleutels verwijderen
Om veiligheidsredenen moet u nu de gegenereerde SSH-sleutels van uw computer verwijderen:
rm /tmp/ssh_key /tmp/ssh_key.pub
De GitHub Actions workflow configureren
Vervolgens stelt u een GitHub Actions workflow in om uw implementaties te automatiseren. Maak in uw Git-repository een directory genaamd .github/workflows en voeg een bestand toe genaamd deploy-to-stackhero.yml met de volgende inhoud:
# Bestand: .github/workflows/deploy-to-stackhero.yml
name: Deploy to Stackhero
run-name: Deploy branch "${{ github.ref_name }}" to Stackhero
on:
push:
# Lijst van branches die de implementatieactie zullen activeren na een git push
# Vergeet niet om een overeenkomstige omgeving in GitHub (onder "Settings" -> "Environments") te maken voor elke branch
# Voeg vervolgens de secret "STACKHERO_SSH_PRIVATE_KEY" en variabele "STACKHERO_ENDPOINT" toe in die omgeving
branches: [ "production", "staging" ]
jobs:
Deploy:
environment: ${{ github.ref_name }}
runs-on: ubuntu-latest
steps:
- uses: stackhero-io/github-actions-deploy-to-stackhero@v1
with:
# De secret "STACKHERO_SSH_PRIVATE_KEY" en de variabele "STACKHERO_ENDPOINT" moeten worden gedefinieerd in de overeenkomstige GitHub-omgeving (onder "Settings" -> "Environments")
ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
endpoint: ${{ vars.STACKHERO_ENDPOINT }}
Nadat u het bestand heeft toegevoegd, commit uw wijzigingen door de volgende opdrachten in uw terminal uit te voeren:
git add -A .
git commit -m "Add GitHub Actions to deploy to Stackhero"
Maak vervolgens een productiebranch door het volgende uit te voeren:
git checkout -b production
Duw ten slotte uw wijzigingen naar GitHub:
git push --set-upstream origin production
Deze opdracht pusht uw code naar de GitHub production branch. GitHub Actions wordt dan automatisch uitgevoerd en implementeert uw code naar de bijbehorende Stackhero-instantie. Om de implementatie te verifiëren, bezoekt u uw GitHub-project en klikt u op Actions.
GitHub Actions die naar productie hebben geïmplementeerd
Gefeliciteerd, u bent nu klaar om uw code automatisch naar productie te implementeren met behulp van GitHub Actions!
Het maken van de stagingomgeving
U kunt de stagingomgeving instellen met een proces dat vergelijkbaar is met de productieomgeving. Herhaal eenvoudig de bovenstaande stappen, waarbij u production vervangt door staging waar van toepassing.
Zodra de instellingen zijn geconfigureerd, maakt u een stagingbranch door het volgende uit te voeren:
git checkout -b staging
Duw vervolgens uw wijzigingen naar GitHub:
git push --set-upstream origin staging
GitHub Actions implementeert automatisch de stagingbranch-code naar de PHP-service die voor staging is aangewezen.
Verder gaan
Het is een goede gewoonte om de production en staging branches te beschermen om directe pushes te voorkomen. U kunt overwegen een pull request te maken voor de staging branch die alleen wordt beoordeeld en samengevoegd door personen met implementatierechten. Zodra wijzigingen zijn gevalideerd in de stagingomgeving, kunnen geautoriseerde gebruikers de pull request samenvoegen in de production branch.
Het volgen van deze aanpak verhoogt de beveiliging door ervoor te zorgen dat alleen goedgekeurde wijzigingen worden geïmplementeerd en verbetert de betrouwbaarheid door nieuwe functies in een stagingomgeving te testen voordat ze de productie bereiken.