PHP Academy · Lektion

Deployment med GitHub Actions

Automatisér build-, test- og SSH-deploymenttrin i et GitHub Actions-workflow.

Lektion 3 af 412 trin

Deployment med GitHub Actions er en gratis PHP Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i PHP Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. PHP Academy-kurset indeholder 4 lektioner i alt.

Hvad er GitHub Actions?

GitHub Actions er en CI/CD-platform, der er indbygget i GitHub. Arbejdsgange, der er defineret i .github/workflows/*.yml, kører automatisk ved push-, pull request- eller planlagte hændelser.

Grundlæggende arbejdsgangsstruktur

En arbejdsgang består af et eller flere job, som hver har trin.

# .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

Udrulning via SSH

Udrul til en server via SSH, når testene er bestået.

      - 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-hemmeligheder

Gem følsomme værdier, såsom SSH-nøgler, API-tokens og databaseadgangskoder, som krypterede hemmeligheder i repositoriet under Indstillinger → Hemmeligheder og variabler.

Caching af afhængigheder

Cache Composer-pakker mellem kørsler for at gøre arbejdsgangene hurtigere.

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

Kørsel af test

Medtag en MySQL- eller PostgreSQL-tjenestecontainer til integrationstest.

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

Miljøvariabler i Actions

Videregiv hemmeligheder som miljøvariabler til arbejdsgangens trin.

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

Kvalitetskontroller for kode

Blokér udrulninger, hvis kontrollerne af kodekvaliteten mislykkes.

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

Test med matrix

Test mod flere 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 }}

Udrulningsstrategier

Almindelige tilgange er: direkte git pull (simpelt), rsync (hurtig filsynkronisering), blue-green (ingen nedetid) og Deployer PHP (automatiseret udrulning uden nedetid). Vælg ud fra, hvor meget nedetid du kan acceptere.

Opsummering

Definér arbejdsgange i .github/workflows/*.yml. Kør test ved hver push, og udrul ved sammenfletninger til main-branchen. Cache afhængigheder, gem hemmeligheder i GitHub Secrets, og tilføj kvalitetskontroller før udrulning.

Hurtigt tjek

Hvor gemmes følsomme værdier som SSH-nøgler til GitHub Actions?

Gratis at komme i gang

Lær PHP med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
49
Lektioner
195

Ofte stillede spørgsmål

Er lektionen “Deployment med GitHub Actions” gratis?

Ja — hele teksten til “Deployment med GitHub Actions” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af PHP Academy-kurset, skal du opgradere til CoddyKit PRO. PHP Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Deployment med GitHub Actions”?

Automatisér build-, test- og SSH-deploymenttrin i et GitHub Actions-workflow. Du øver dig i PHP Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på PHP Academy?

Der kræves ingen tidligere erfaring. PHP Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “Deployment med GitHub Actions”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne PHP Academy-lektion?

Ja. Alle PHP Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Konfiguration af Nginx og PHP-FPM
  2. Miljøvariabler og .env-filer
  3. Deployment med GitHub Actions
  4. Dockerisering af en PHP-applikation
← Tilbage til PHP Academy