Сборка и публикация релиза #3
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Сборка и публикация релиза | |
| # Триггер: запускать этот рабочий процесс только при создании нового релиза | |
| on: | |
| release: | |
| types: [created] | |
| jobs: | |
| build-and-upload: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: 1. Получение исходного кода | |
| uses: actions/checkout@v4 | |
| - name: 2. Настройка PHP и Composer | |
| uses: shivammathur/setup-php@v2 | |
| with: | |
| php-version: '8.2' | |
| extensions: mbstring, curl, json | |
| tools: composer:v2 | |
| # --- НОВАЯ, ИСПРАВЛЕННАЯ ЛОГИКА СБОРКИ --- | |
| - name: 3. Создание финальной структуры проекта | |
| run: | | |
| # Создаем чистую папку для нашего релиза | |
| mkdir release_build | |
| # Копируем код самой библиотеки в её "пакет" внутри будущей папки vendor | |
| # Это будет наш "локальный репозиторий" | |
| mkdir -p release_build/vendor/digitalstars/simplevk | |
| # Используем rsync для чистого копирования, исключая ненужные файлы | |
| rsync -av --progress . release_build/vendor/digitalstars/simplevk/ --exclude ".git" --exclude ".github" --exclude "release_build" | |
| # Копируем файл лицензии в корень сборки | |
| cp LICENSE release_build/ | |
| # Создаем временный composer.json в корне сборки, чтобы установить зависимости | |
| # Он говорит Composer: "Установи digitalstars/simplevk, который лежит в локальной папке" | |
| echo '{"name": "digitalstars/simplevk-release","description": "Release package for SimpleVK","repositories": [{"type": "path","url": "vendor/digitalstars/simplevk"}],"require": {"digitalstars/simplevk": "*"}}' > release_build/composer.json | |
| # --optimize-autoloader: создает оптимизированный автозагрузчик для лучшей производительности | |
| - name: 4. Установка зависимостей в правильную структуру | |
| run: | | |
| # Переходим в папку сборки и запускаем composer install | |
| # Теперь Composer сгенерирует autoload.php с ПРАВИЛЬНЫМИ путями | |
| cd release_build | |
| composer install --no-dev --optimize-autoloader | |
| # Удаляем временные файлы, которые не нужны в финальном архиве | |
| rm composer.json composer.lock | |
| # Внедряем вызов PackagistReporter в файл Compatibility.php уже после всех установок | |
| - name: 5. Внедрение кода для отправки статистики | |
| run: | | |
| REPORTER_PATH="release_build/vendor/digitalstars/simplevk/src/Compatibility.php" | |
| REPORTER_CODE='// Активация репортера для CI-сборки. Вызывается только в релизных архивах.\n\\DigitalStars\\SimpleVK\\Utils\\PackagistReporter::checkAndReport();' | |
| sed -i '4a\'"$REPORTER_CODE" "$REPORTER_PATH" | |
| - name: 6. Подготовка к архивации | |
| id: prep | |
| run: | | |
| # Готовим имя для будущего архива | |
| echo "ARCHIVE_NAME=SimpleVK-${{ github.event.release.tag_name }}.zip" >> $GITHUB_ENV | |
| # Создаем ZIP-архив из содержимого подготовленной папки release_build | |
| - name: 7. Создание ZIP-архива | |
| run: | | |
| # Переходим в директорию сборки, чтобы в архиве не было родительской папки release_build | |
| cd release_build | |
| # Архивируем всё её содержимое | |
| zip -r ../${{ env.ARCHIVE_NAME }} . | |
| - name: 8. Загрузка архива в релиз | |
| uses: actions/upload-release-asset@v1 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| with: | |
| upload_url: ${{ github.event.release.upload_url }} | |
| asset_path: ./${{ env.ARCHIVE_NAME }} | |
| asset_name: ${{ env.ARCHIVE_NAME }} | |
| asset_content_type: application/zip |