GitHub Actions - CI/CD automatizálás
GitHub Actions használata WordPress projektekhez - automatikus tesztelés, build és deployment GitHub-on.
This content is not available in your language yet.
A GitHub Actions a GitHub beépített CI/CD platformja, amely lehetővé teszi a fejlesztési workflow-k automatizálását. WordPress projektekhez ideális tesztelésre, build-elésre és deployment-re.
Alapfogalmak
Szekció neve “Alapfogalmak”Workflow
Szekció neve “Workflow”Automatizált folyamat, amely eseményekre reagál.
name: My Workflowon: [push]jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: echo "Hello World"Trigger (on)
Szekció neve “Trigger (on)”Mikor fusson a workflow:
| Trigger | Mikor |
|---|---|
push |
Kód push-olásakor |
pull_request |
PR nyitáskor/frissítéskor |
schedule |
Ütemezve (cron) |
workflow_dispatch |
Manuális indítás |
release |
Release létrehozásakor |
Egy végrehajtási egység a workflow-ban.
Egyetlen parancs vagy action a job-ban.
Runner
Szekció neve “Runner”A virtuális gép, ahol a job fut:
ubuntu-latestwindows-latestmacos-latest
WordPress workflow-k
Szekció neve “WordPress workflow-k”PHP linting és PHPCS
Szekció neve “PHP linting és PHPCS”name: PHP Quality
on: [push, pull_request]
jobs: phpcs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4
- name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.2' tools: composer, cs2pr
- name: Install dependencies run: composer install --prefer-dist --no-progress
- name: Run PHPCS run: vendor/bin/phpcs --report=checkstyle | cs2prPHPUnit tesztek
Szekció neve “PHPUnit tesztek”name: PHPUnit Tests
on: [push, pull_request]
jobs: test: runs-on: ubuntu-latest
services: mysql: image: mysql:8.0 env: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: wordpress_test ports: - 3306:3306 options: >- --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
steps: - uses: actions/checkout@v4
- name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.2' extensions: mysqli coverage: xdebug
- name: Install dependencies run: composer install --prefer-dist --no-progress
- name: Install WordPress test suite run: bash bin/install-wp-tests.sh wordpress_test root root 127.0.0.1 latest
- name: Run tests run: vendor/bin/phpunit --coverage-textJavaScript build
Szekció neve “JavaScript build”name: Build Assets
on: push: branches: [main]
jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4
- name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm'
- name: Install dependencies run: npm ci
- name: Build run: npm run build
- name: Upload artifacts uses: actions/upload-artifact@v4 with: name: build path: dist/Deployment workflow-k
Szekció neve “Deployment workflow-k”FTP/SFTP deploy
Szekció neve “FTP/SFTP deploy”name: Deploy to Server
on: push: branches: [main]
jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4
- name: Deploy via SFTP with: server: ${{ secrets.FTP_SERVER }} username: ${{ secrets.FTP_USERNAME }} password: ${{ secrets.FTP_PASSWORD }} local-dir: ./ server-dir: /public_html/wp-content/themes/my-theme/ exclude: | **/.git* **/.git*/** **/node_modules/** .envSSH deploy
Szekció neve “SSH deploy”name: Deploy via SSH
on: push: branches: [main]
jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4
- name: Deploy to server with: host: ${{ secrets.SSH_HOST }} username: ${{ secrets.SSH_USERNAME }} key: ${{ secrets.SSH_PRIVATE_KEY }} script: | cd /var/www/html git pull origin main composer install --no-dev wp cache flushWP Engine deploy
Szekció neve “WP Engine deploy”name: Deploy to WP Engine
on: push: branches: [main]
jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0
- name: Deploy to WP Engine uses: wpengine/github-action-wpe-site-deploy@v3 with: WPE_SSHG_KEY_PRIVATE: ${{ secrets.WPE_SSHG_KEY_PRIVATE }} WPE_ENV: production SRC_PATH: wp-content/themes/my-theme/ REMOTE_PATH: wp-content/themes/my-theme/Matrix tesztelés
Szekció neve “Matrix tesztelés”Több PHP/WordPress verzió tesztelése:
name: PHP Compatibility
on: [push, pull_request]
jobs: test: runs-on: ubuntu-latest strategy: matrix: php: ['7.4', '8.0', '8.1', '8.2', '8.3'] wordpress: ['6.2', '6.3', '6.4', 'latest']
steps: - uses: actions/checkout@v4
- name: Setup PHP ${{ matrix.php }} uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }}
- name: Install WP ${{ matrix.wordpress }} run: | bash bin/install-wp-tests.sh wordpress_test root root 127.0.0.1 ${{ matrix.wordpress }}
- name: Run tests run: vendor/bin/phpunitSecrets kezelés
Szekció neve “Secrets kezelés”Secret létrehozása
Szekció neve “Secret létrehozása”- Repository → Settings → Secrets and variables → Actions
- New repository secret
- Add meg a nevet és értéket
Használat workflow-ban
Szekció neve “Használat workflow-ban”env: API_KEY: ${{ secrets.API_KEY }}
steps: - run: curl -H "Authorization: $API_KEY" https://api.example.comGyakori secrets
Szekció neve “Gyakori secrets”| Secret | Mire |
|---|---|
FTP_SERVER |
FTP szerver cím |
FTP_USERNAME |
FTP felhasználó |
FTP_PASSWORD |
FTP jelszó |
SSH_PRIVATE_KEY |
SSH kulcs |
COMPOSER_AUTH |
Private package auth |
Hasznos action-ök
Szekció neve “Hasznos action-ök”| Action | Funkció |
|---|---|
shivammathur/setup-php |
PHP telepítés |
ramsey/composer-install |
Composer install |
php-actions/phpunit |
PHPUnit futtatás |
JavaScript
Szekció neve “JavaScript”| Action | Funkció |
|---|---|
actions/setup-node |
Node.js telepítés |
actions/cache |
npm cache |
Deployment
Szekció neve “Deployment”| Action | Funkció |
|---|---|
SamKirkland/FTP-Deploy-Action |
FTP deploy |
appleboy/ssh-action |
SSH parancsok |
wpengine/github-action-wpe-site-deploy |
WP Engine |
Utility
Szekció neve “Utility”| Action | Funkció |
|---|---|
actions/checkout |
Repo checkout |
actions/upload-artifact |
Fájlok mentése |
actions/download-artifact |
Fájlok letöltése |
WordPress.org plugin deploy
Szekció neve “WordPress.org plugin deploy”name: Deploy to WordPress.org
on: release: types: [published]
jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4
- name: Build run: | npm ci npm run build
- name: WordPress Plugin Deploy uses: 10up/action-wordpress-plugin-deploy@stable env: SVN_PASSWORD: ${{ secrets.SVN_PASSWORD }} SVN_USERNAME: ${{ secrets.SVN_USERNAME }} SLUG: my-pluginCaching
Szekció neve “Caching”Composer cache
Szekció neve “Composer cache”- name: Get Composer Cache Directory id: composer-cache run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- uses: actions/cache@v4 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: ${{ runner.os }}-composer-npm cache
Szekció neve “npm cache”- uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm'Feltételes futtatás
Szekció neve “Feltételes futtatás”Branch alapján
Szekció neve “Branch alapján”on: push: branches: - main - 'release/**' branches-ignore: - 'feature/**'Fájl változás alapján
Szekció neve “Fájl változás alapján”on: push: paths: - 'src/**' - 'package.json' paths-ignore: - '**.md' - 'docs/**'Job feltételek
Szekció neve “Job feltételek”jobs: deploy: if: github.ref == 'refs/heads/main' runs-on: ubuntu-latestKöltségek
Szekció neve “Költségek”Ingyenes keretben
Szekció neve “Ingyenes keretben”| Repo típus | Percek/hó |
|---|---|
| Public | Korlátlan |
| Private | 2000 perc |
Túllépés
Szekció neve “Túllépés”- Linux: $0.008/perc
- Windows: $0.016/perc
- macOS: $0.08/perc