PHP: Deployen met GitHub Actions
Hoe u uw PHP-code kunt deployen met 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 is een krachtig hulpmiddel waarmee u workflows kunt automatiseren, waaronder het direct deployen van uw PHP-code naar uw productie-servers. In deze handleiding laten we zien hoe u uw PHP-applicatie veilig kunt deployen naar zowel staging- als productieomgevingen met behulp van GitHub Actions.
De aanbevolen aanpak is om twee branches in uw repository te onderhouden: staging en production. Telkens wanneer u code pusht naar deze branches, wordt deze automatisch gedeployed naar de bijbehorende 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 deploys te garanderen en het vertrouwen bij productie-deploys te vergroten. Deze werkwijze sluit aan bij de industriestandaarden en helpt mogelijke problemen te voorkomen.
Om te beginnen heeft u een GitHub-account nodig met uw PHP-code in een repository.
PHP-services aanmaken
Log eerst in op uw Stackhero-dashboard en maak twee PHP-services aan: één voor staging en één voor productie. Voor de duidelijkheid kunt u deze services hernoemen naar "Production" en "Staging".
Als u nog geen Stackhero-account heeft, kunt u er gratis één aanmaken in slechts twee minuten en uw PHP cloud services met een paar klikken opzetten.
Voorbeeld van productie- en staging-services
SSH-sleutels configureren
SSH-sleutels zijn de aanbevolen methode om GitHub Actions veilig verbinding te laten maken met uw PHP-service tijdens het deployen. In deze handleiding maakt u een uniek SSH-sleutelpaar speciaal voor dit doel aan.
SSH-sleutels genereren
Om nieuwe SSH-sleutels te genereren, voert u het volgende commando uit op uw computer:
ssh-keygen -C "" -f /tmp/ssh_key -N ""
De publieke sleutel instellen
Haal vervolgens de publieke sleutel op door het volgende commando uit te voeren:
cat /tmp/ssh_key.pub
Ga naar uw Stackhero-dashboard en selecteer uw "Production" PHP-service. Klik op "Configure" en volg deze stappen:
- Onder
SSH public keys, klik op "Add a public key". - Vul bij
Description"GitHub Action" in. - Plak de zojuist opgehaalde publieke sleutel in het veld
Key.
Service-instellingen ophalen
De private sleutel instellen
Voeg nu de private sleutel toe aan uw GitHub-project zodat deze gebruikt kan worden tijdens het deployen:
-
Ga naar
Settings, selecteer vervolgensEnvironmentsen klik opNew environment.
GitHub-omgevingen configureren -
Vul bij
Name"production" in en bevestig.
Omgeving instellen -
Klik op de knop
No restrictionen selecteerSelected branches and tags.
Omgevingsrestricties instellen -
Klik op
Add deployment branch or tag rule, vul "production" in bij het veldName patternen klik opAdd rule.
Omgevingsbranch instellen
Omgevingsbranch instellen -
Onder
Environment secrets, klik opAdd secret.
Secret toevoegen
Haal de eerder gegenereerde private sleutel op door het volgende commando uit te voeren:
cat /tmp/ssh_key
In de GitHub-omgevingsinstellingen:
-
Vul bij
NameSTACKHERO_SSH_PRIVATE_KEYin en plak uw private sleutel in het veldValue.
SSH private key secret instellen -
In de sectie
Environment variables, klik opAdd variable.
Variabelen instellen -
Vul bij
NameSTACKHERO_ENDPOINTin en plak uw PHP-service endpoint in het veldValue. U vindt dit endpoint in uw Stackhero-dashboard.
Endpoint variabele 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 is het verstandig om de gegenereerde SSH-sleutels van uw computer te verwijderen na de installatie:
rm /tmp/ssh_key /tmp/ssh_key.pub
De GitHub Actions workflow configureren
Nu gaat u een GitHub Actions workflow-bestand aanmaken om uw deploys te automatiseren. Maak in uw Git-repository een map aan genaamd .github/workflows en voeg een bestand toe met de naam deploy-to-stackhero.yml met de volgende inhoud:
# File: .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 deploy-actie triggeren na een git push
# Vergeet niet om voor elke branch een bijbehorende environment in GitHub aan te maken (onder "Settings" -> "Environments")
# Voeg vervolgens het secret "STACKHERO_SSH_PRIVATE_KEY" en de variabele "STACKHERO_ENDPOINT" toe aan die environment
branches: [ "production", "staging" ]
jobs:
Deploy:
environment: ${{ github.ref_name }}
runs-on: ubuntu-latest
steps:
- uses: stackhero-io/github-actions-deploy-to-stackhero@v1
with:
# Het secret "STACKHERO_SSH_PRIVATE_KEY" en de variabele "STACKHERO_ENDPOINT" moeten gedefinieerd zijn in de bijbehorende GitHub environment (onder "Settings" -> "Environments")
ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
endpoint: ${{ vars.STACKHERO_ENDPOINT }}
Nadat u dit bestand heeft toegevoegd, kunt u uw wijzigingen committen met de volgende commando's in uw terminal:
git add -A .
git commit -m "Add GitHub Actions to deploy to Stackhero"
Om de production branch aan te maken, voert u uit:
git checkout -b production
Push vervolgens uw wijzigingen naar GitHub:
git push --set-upstream origin production
Hiermee pusht u uw code naar de production branch op GitHub. GitHub Actions zal dan automatisch uw code deployen naar de gekoppelde Stackhero-instantie. Om de status van de deployment te controleren, kunt u uw GitHub-project openen en op Actions klikken.
GitHub Actions die naar productie heeft gedeployed
Gefeliciteerd! Uw project is nu ingesteld voor automatische deployment naar productie met GitHub Actions.
De staging-omgeving aanmaken
U kunt uw staging-omgeving op vrijwel dezelfde manier instellen als de productieomgeving. Herhaal simpelweg de bovenstaande stappen en vervang production door staging waar nodig.
Zodra de instellingen zijn geconfigureerd, kunt u uw staging branch aanmaken met:
git checkout -b staging
En push deze vervolgens naar GitHub:
git push --set-upstream origin staging
GitHub Actions zal automatisch de code uit uw staging branch deployen naar de PHP-service die u voor staging heeft ingesteld.
Verder gaan
Om de betrouwbaarheid en veiligheid van uw applicatie te waarborgen, is het verstandig om uw production en staging branches te beschermen tegen directe pushes. U kunt bijvoorbeeld instellen dat wijzigingen alleen via pull requests worden doorgevoerd, waarbij de staging branch alleen door geautoriseerde personen mag worden gereviewd en gemerged. Zodra uw wijzigingen in staging zijn gevalideerd, kunnen bevoegde gebruikers deze samenvoegen met de production branch.
Met deze aanpak komt alleen gecontroleerde code in productie terecht en kunt u nieuwe features eerst in staging testen voordat ze live gaan. Dit geeft u en uw team extra zekerheid.