Cover Image for Как автоматически собирать ZIP-архив плагина WordPress при релизе на GitHub?

Как автоматически собирать ZIP-архив плагина WordPress при релизе на GitHub?

4 октября 2025

Когда вы разрабатываете плагин для WordPress и публикуете релизы на GitHub, удобно, чтобы архив плагина создавался автоматически — без ручной упаковки и загрузки. Это можно легко реализовать с помощью GitHub Actions.

В этом посте разберём, как настроить простой workflow, который при публикации релиза будет создавать ZIP-файл вашего плагина и прикреплять его к странице релиза.

🔧 Что нужно

  1. Репозиторий на GitHub с вашим плагином WordPress.
  2. Файл .distignore — в нём вы перечисляете файлы и папки, которые не должны попадать в релиз (например, .git, node_modules, tests и т. д.).
  3. Файл workflow в каталоге .github/workflows/, например release.yml.

⚙️ Пример workflow

Добавьте в ваш репозиторий файл .github/workflows/release.yml со следующим содержимым:

name: zip file to release artifacts

on:
  release:
    types: [published]

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Remove files from list .distignore
        run: |
          xargs -a .distignore rm -rf

      - name: Create ZIP
        run: |
          mkdir -p ${{ github.event.repository.name }}
          ls -la
          shopt -s extglob
          mv !("${{ github.event.repository.name }}") ${{ github.event.repository.name }}/
          zip -r ${{ github.event.repository.name }}-${{ github.ref_name }}.zip ${{ github.event.repository.name }}/
        working-directory: ${{ github.workspace }}

      - name: Upload artifact to release page
        uses: softprops/action-gh-release@v2
        with:
          name: ${{ github.ref_name }}
          files: ${{ github.event.repository.name }}-${{ github.ref_name }}.zip

🧠 Как это работает

  1. Триггер: Workflow запускается при публикации нового релиза (on: release: types: [published]).
  2. Checkout: Действие actions/checkout@v4 скачивает ваш код.
  3. Очистка: Команда xargs -a .distignore rm -rf удаляет файлы, указанные в .distignore.
  4. Архивация: Скрипт перемещает все файлы в папку с именем репозитория, затем создаёт ZIP-архив с версией (${{ github.ref_name }}).
  5. Публикация: softprops/action-gh-release прикрепляет созданный архив к странице релиза.

📦 Результат

После публикации нового релиза на GitHub в его разделе Assets автоматически появится ZIP-файл вашего плагина — готовый к загрузке в WordPress консоль или к распространению.


💡 Совет

Чтобы избежать ошибок:

  • Убедитесь, что .distignore существует и корректно заполнен.
  • Проверяйте, что в названии архива нет пробелов и специальных символов.
  • Можно добавить шаг для тестов или проверки синтаксиса PHP перед упаковкой.

🚀 Итого

Теперь ваш WordPress-плагин автоматически собирается и публикуется в виде ZIP-архива при каждом релизе. Это избавляет от рутины и делает процесс релизов более профессиональным и надёжным.