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.

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 stagingservicesVoorbeeld van productie- en stagingservices

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.

U kunt nieuwe SSH-sleutels genereren door de volgende opdracht op uw computer uit te voeren:

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

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:

  1. Onder SSH public keys, klik op "Add a public key".
  2. Stel de Description in op "GitHub Action".
  3. Plak de opgehaalde openbare sleutel in het veld Key.

Service-instellingen ophalenService-instellingen ophalen

Open nu uw GitHub-project en volg deze stappen om de privésleutel voor implementatie te configureren:

  • Klik op Settings, vervolgens Environments en selecteer New environment.

    GitHub-omgevingen configurerenGitHub-omgevingen configureren

  • Voer in het veld Name "production" in en bevestig.

    De omgeving instellenDe omgeving instellen

  • Klik op de knop No restriction en selecteer Selected branches and tags.

    Omgevingsbeperkingen instellenOmgevingsbeperkingen instellen

  • Klik op Add deployment branch or tag rule, voer "production" in het veld Name pattern in en klik op Add rule.

    Omgevingsbranch instellenOmgevingsbranch instellen Omgevingsbranch instellenOmgevingsbranch instellen

  • Onder Environment secrets, klik op Add secret.

    Secret toevoegenSecret toevoegen

Haal de eerder gegenereerde privésleutel op door het volgende uit te voeren:

cat /tmp/ssh_key

In de GitHub-omgevingsinstellingen:

  • Voer in Name STACKHERO_SSH_PRIVATE_KEY in en plak uw privésleutel in het veld Value.

    De SSH privésleutel secret instellenDe SSH privésleutel secret instellen

  • Klik in de sectie Environment variables op Add variable.

    Variabelen instellenVariabelen instellen

  • Voer in Name STACKHERO_ENDPOINT in en plak het PHP-service endpoint in het veld Value. U kunt dit endpoint vinden in uw Stackhero-dashboard.

    De endpointvariabele instellenDe endpointvariabele instellen

Als u de domeinnaam van uw service heeft aangepast, gebruik dan de aangepaste versie in plaats van xxxxxx.stackhero-network.com.

Om veiligheidsredenen moet u nu de gegenereerde SSH-sleutels van uw computer verwijderen:

rm /tmp/ssh_key /tmp/ssh_key.pub

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ïmplementeerdGitHub 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!

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.

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.