PHP Academy · Lektion

Distribuera med GitHub Actions

Automatisera steg för bygge, testning och SSH-distribution i ett GitHub Actions-arbetsflöde.

Lektion 3 av 412 steg

Distribuera med GitHub Actions är en gratis lektion i PHP Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för PHP Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i PHP Academy innehåller totalt 4 lektioner.

Vad är GitHub Actions?

GitHub Actions är en CI/CD-plattform som är inbyggd i GitHub. Arbetsflöden som definieras i .github/workflows/*.yml körs automatiskt vid push-, pull request- eller schemalagda händelser.

Grundläggande arbetsflödesstruktur

Ett arbetsflöde består av ett eller flera jobb, där varje jobb innehåller steg.

# .github/workflows/deploy.yml
name: Deploy

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: "8.3"
      - name: Install dependencies
        run: composer install --no-dev --optimize-autoloader
      - name: Run tests
        run: vendor/bin/phpunit

Distributionssteg via SSH

Distribuera till en server via SSH efter att testerna har godkänts.

      - name: Deploy to server
        uses: appleboy/ssh-action@v1
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: ${{ secrets.SERVER_USER }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          script: |
            cd /srv/myapp
            git pull origin main
            composer install --no-dev --optimize-autoloader
            php artisan migrate --force
            php artisan config:cache
            php artisan route:cache
            sudo systemctl reload php8.3-fpm

GitHub Secrets

Lagra känsliga värden (SSH-nycklar, API-token och databaslösenord) som krypterade repository secrets under Settings → Secrets and Variables.

Cachning av beroenden

Cacha Composer-paket mellan körningar för att snabba upp arbetsflöden.

      - name: Cache Composer packages
        uses: actions/cache@v4
        with:
          path: vendor
          key: ${{ runner.os }}-composer-${{ hashFiles("composer.lock") }}

Köra tester

Inkludera en servicecontainer med MySQL eller PostgreSQL för integrationstester.

services:
  mysql:
    image: mysql:8
    env:
      MYSQL_DATABASE: test
      MYSQL_ROOT_PASSWORD: secret
    ports: [3306:3306]

Miljövariabler i Actions

Skicka hemligheter som miljövariabler till arbetsflödets steg.

      - name: Run tests
        env:
          DB_HOST: 127.0.0.1
          DB_DATABASE: test
          DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
        run: vendor/bin/phpunit

Grindar för kodkvalitet

Blockera distributioner om kontrollerna av kodkvaliteten misslyckas.

      - name: PHPStan static analysis
        run: vendor/bin/phpstan analyse src --level=6
      - name: PHP_CodeSniffer
        run: vendor/bin/phpcs src --standard=PSR12

Matristestning

Testa mot flera PHP-versioner samtidigt.

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        php: ["8.2", "8.3"]
    steps:
      - uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php }}

Distributionsstrategier

Vanliga metoder är direkt git pull (enkelt), rsync (snabb filsynkronisering), blue-green (inget driftstopp) och Deployer PHP (automatiserad distribution utan driftstopp). Välj utifrån hur mycket driftstopp ni kan acceptera.

Sammanfattning

Definiera arbetsflöden i .github/workflows/*.yml. Kör tester vid varje push och distribuera när ändringar har slagits ihop till huvudgrenen. Cacha beroenden, lagra hemligheter i GitHub Secrets och lägg till kvalitetsgrindar före distribution.

Snabbkontroll

Var lagras känsliga värden som SSH-nycklar för GitHub Actions?

Gratis att börja

Lär dig PHP med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
49
Lektioner
195

Vanliga frågor

Är lektionen ”Distribuera med GitHub Actions” gratis?

Ja – hela texten till ”Distribuera med GitHub Actions” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i PHP Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i PHP Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Distribuera med GitHub Actions”?

Automatisera steg för bygge, testning och SSH-distribution i ett GitHub Actions-arbetsflöde. Ni övar på PHP Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig PHP Academy?

Du behöver inga förkunskaper. Utbildningen i PHP Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Distribuera med GitHub Actions”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här PHP Academy-lektionen?

Ja. Varje PHP Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Konfiguration av Nginx och PHP-FPM
  2. Miljövariabler och .env-filer
  3. Distribuera med GitHub Actions
  4. Dockerisera en PHP-applikation
← Tillbaka till PHP Academy