Deployment med GitHub Actions
Automatisér build-, test- og SSH-deploymenttrin i et GitHub Actions-workflow.
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/phpunitUdrulning 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-fpmGitHub-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/phpunitKvalitetskontroller 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=PSR12Test 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?
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
- Konfiguration af Nginx og PHP-FPM
- Miljøvariabler og .env-filer
- Deployment med GitHub Actions
- Dockerisering af en PHP-applikation