Рабочий процесс Deploow Release Deployer - это автоматизированное развертывание выпуска для непрерывной интеграции / непрерывного развертывания (CI / CD). Он предназначен для автоматизации процесса развертывания вашего веб -приложения. Это действие обрабатывает настройку среды, установку зависимости, создание проекта (пакет сборки), развертывание ее на удаленном сервере и отправка уведомлений в Slack.
| Вход | Описание | Необходимый | По умолчанию |
|---|---|---|---|
| сайт-урл | URL сайта развертывания | Да | N/a |
| GitHub-Token | Github токен. Это обеспечивается автоматически GitHub. Используйте значение по умолчанию $ {{secrets.github_token}}. Больше информации | Да | N/a |
| Deploy-Path | Путь на удаленном сервере, где будет развернуто приложение. | Да | N/a |
| развертывание | Имя хоста или IP -адрес удаленного сервера. | Да | N/a |
| Развертывание-порт | SSH -порт удаленного сервера (обычно 22). | Да | N/a |
| Deploy-User | Имя пользователя для доступа к SSH к удаленному серверу. | Да | N/a |
| развертывание ключ | Частный ключ SSH для доступа к удаленному серверу. Генерировать ключ SSH | Да | N/a |
| метка | Имя тега из сборки. | Да | N/a |
| путь | Путь к каталогу сборки на бегуне GitHub. | Да | Строитель/багажник/ |
| переключатели | Rsync переключатели для развертывания. Это контролирует поведение процесса синхронизации файлов. Rsync документация | Нет | -Avzr -exclude = "*. env" -exclude = "env" -exclude = ". github" -exclude = ". git" -exclude = ". gitignore" -exclude = ". user.ini" |
| Slack-Weebhook | Slack Webhook URL для уведомлений. Получите это из ваших слабых настроек. Создание Slack Webhooks | Нет | N/a |
| слабый канал | Slack Channel для уведомлений. | Нет | общий |
| слабый титл | Название для уведомления Slack. | Нет | Веб -приложение развернуто |
| Slack-Message | Тело сообщения для уведомления о слабых. | Нет | Процесс развертывания завершен. Проверьте журналы для деталей. |
| Slack-Username | Имя пользователя, которое появится как отправитель уведомления о слабых. | Нет | WebApp Deploy Bot |
| Слэк-футер | Текст нижнего колонтитула для уведомления о слабых. | Нет | Состояние обновления веб -приложений |
| PHP-версия | PHP версия для настройки | Нет | 7.4 |
| PHP-экстенсии | Расширения PHP для установки | Нет | PCOV |
| узел-версия | Версия Node.js для настройки | Нет | 16 |
| USE-PHP | Настройка PHP | Нет | истинный |
| использование узла | Настройка node.js | Нет | истинный |
| Использование-восстановление | Выполнять удаленные SSH установить/обновления. | Нет | ЛОЖЬ |
| Загрузка-смягчающие соавы | Загружать ли выпуск активов | Нет | истинный |
| Filles | Файлы для загрузки для выпуска | Нет | Build.zip; Changelog.md |
| использование | Использовать ли кэширование для зависимостей | Нет | ЛОЖЬ |
| Загрузка-артифакт | Загружать ли артефакты | Нет | ЛОЖЬ |
| Артефакт-имени | Название артефакта для загрузки | Нет | сборка |
| Артефакт-Плат | Путь артефакта для загрузки | Нет | Строитель/багажник/ |
Чтобы использовать это действие в своем рабочем процессе, включите следующие шаги в файле рабочего процесса Github Daisions. Если вы новичок в действиях GitHub, создайте каталог .github/workflows в корне вашего репозитория и добавьте файл YAML (например, release-deployer.yml ) со следующим содержанием:
Основной пример:
name : Release Deployer
on :
pull_request :
types :
- closed
workflow_dispatch :
jobs :
release :
runs-on : ubuntu-latest
steps :
- name : Run release-please
uses : googleapis/release-please-action@v4
id : release
with :
token : ${{ secrets.GITHUB_TOKEN }}
command : manifest
default-branch : main
- name : Run Custom Deployer Action
if : ${{ steps.release.outputs.releases_created }}
uses : devuri/rdx-release-deployer-action@v1
with :
site-url : ${{ secrets.SITE_URL }} # Deployment site URL
github-token : ${{ secrets.GITHUB_TOKEN }} # GitHub Token
deploy-path : ${{ secrets.DEPLOY_PATH }} # Remote deploy path
deploy-host : ${{ secrets.DEPLOY_HOST }} # Remote deploy host
deploy-port : ${{ secrets.DEPLOY_PORT }} # Remote deploy port
deploy-user : ${{ secrets.DEPLOY_USER }} # Remote deploy user
deploy-key : ${{ secrets.DEPLOY_KEY }} # Remote deploy key
tag-name : ${{ steps.release.outputs.tag_name }} # Release tag name
path : build/trunk/ # Path to the build directory on the GitHub runner (default: build/trunk/)
slack-webhook : ${{ secrets.SLACK_WEBHOOK }} # Slack webhook URL for notificationsПример с комментариями для каждого параметра:
name : Release Deployer
on :
pull_request :
types :
- closed
workflow_dispatch :
jobs :
release :
runs-on : ubuntu-latest
steps :
- name : Run release-please
uses : googleapis/release-please-action@v4
id : release
with :
token : ${{ secrets.GITHUB_TOKEN }}
command : manifest
default-branch : main
- name : Run Custom Deployer Action
if : ${{ steps.release.outputs.releases_created }}
uses : devuri/rdx-release-deployer-action@v1
with :
# Required parameters
site-url : ${{ secrets.SITE_URL }} # Deployment site URL
github-token : ${{ secrets.GITHUB_TOKEN }} # GitHub Token
deploy-path : ${{ secrets.DEPLOY_PATH }} # Remote deploy path
deploy-host : ${{ secrets.DEPLOY_HOST }} # Remote deploy host
deploy-port : ${{ secrets.DEPLOY_PORT }} # Remote deploy port
deploy-user : ${{ secrets.DEPLOY_USER }} # Remote deploy user
deploy-key : ${{ secrets.DEPLOY_KEY }} # Remote deploy key
tag-name : ${{ steps.release.outputs.tag_name }} # Release tag name
# Optional parameters with defaults
path : build/trunk/ # Path to the build directory on the GitHub runner (default: build/trunk/)
switches : ' -avzr --exclude="*.env" --exclude="env" --exclude=".github" --exclude=".git" --exclude=".gitignore" --exclude=".user.ini" ' # Rsync switches for deployment (default: '-avzr --exclude="*.env" --exclude="env" --exclude=".github" --exclude=".git" --exclude=".gitignore" --exclude=".user.ini"')
slack-webhook : ${{ secrets.SLACK_WEBHOOK }} # Slack webhook URL for notifications
slack-channel : general # Slack channel for notifications (default: general)
slack-title : " Web Application Deployed " # Title for the Slack notification (default: "Web Application Deployed")
slack-message : " Deployment process completed. " # Message body for the Slack notification (default: "Deployment process completed. Check logs for details.")
slack-username : " WebApp Deploy Bot " # Username that will appear as the sender of the Slack notification (default: "WebApp Deploy Bot")
slack-footer : " Web Application Update Status " # Footer text for the Slack notification (default: "Web Application Update Status")
# Optional setup parameters with defaults
php-version : ' 7.4 ' # PHP version to setup (default: '7.4')
php-extensions : ' pcov ' # PHP extensions to install (default: 'pcov')
node-version : ' 16 ' # Node.js version to setup (default: '16')
# Boolean flags
use-php : true # Whether to setup PHP (default: true)
use-node : true # Whether to setup Node.js (default: true)
use-remote-install : true # Whether to execute remote SSH updates (default: false)
upload-release-assets : true # Whether to upload release assets (default: true)
# Files to upload to release
release-files : ' build.zip;CHANGELOG.md ' # Files to upload to release (default: 'build.zip;CHANGELOG.md')
В этом примере рабочий процесс запускается по запросам с закрытыми притяжениями, а также может быть запускается вручную с помощью вкладки Action Github. Он использует googleapis/release-please-action для управления выпусками, а затем запускает пользовательское действие развертывателя, если созданы выпуски.
Предупреждение
Опция --delete в switches может быть опасной, поскольку она может привести к удалению важных файлов или контента на сервере.
Справочник по сборке : ввод path (по умолчанию build/trunk/ ) указывает каталог, из которого файлы будут копированы на удаленный сервер с использованием rsync . Убедитесь, что ваш процесс сборки выводит необходимые файлы в этот каталог, или соответствующим образом настройте ввод path , чтобы соответствовать месту выхода из сборки.
RSYNC --delete Option : опция --delete при входе switches используется для поддержания дистанционного каталога в синхронизации с локальным каталогом сборки путем удаления файлов на удаленном сервере, которого больше не существует локально. Это может быть опасно, поскольку это может привести к удалению важных файлов или контента на сервере, таких как пользовательские изображения или другие активы. Используйте этот вариант с осторожностью, чтобы избежать непреднамеренной потери данных. Рассмотрим исключение каталогов, которые не должны быть удалены, добавив их в список --exclude ввод switches . Смотрите: варианты удаления RSYNC
rsync с указанными коммутаторами.set -eo ), что гарантирует, что последующие шаги не выполняются, если предыдущий шаг снят сбой.| Секрет | Описание |
|---|---|
GITHUB_TOKEN | Токен GitHub для аутентификации (по умолчанию в действиях GitHub) |
DEPLOY_PATH | Удаленный путь развертывания |
DEPLOY_HOST | Удаленное развертывание хост |
DEPLOY_PORT | Удаленный порт развертывания |
DEPLOY_USER | Пользователь удаленного развертывания |
DEPLOY_KEY | Удаленное развертывание ключа |
SLACK_WEBHOOK | Slack Webhook URL для уведомлений |
Чтобы добавить секреты в ваш репозиторий:
CI/CD - это метод для часто доставки приложений клиентам путем введения автоматизации в этапы разработки приложений. Основными понятиями, приписываемыми CI/CD, являются непрерывная интеграция, непрерывная доставка и непрерывное развертывание. Это действие помогает реализовать CI/CD путем автоматизации процесса развертывания, гарантируя, что ваше приложение будет
Всегда в развертываемом состоянии и что обновления передаются пользователям быстро и эффективно.
Внедряя это действие в свой рабочий процесс, вы можете достичь более надежного и безопасного процесса развертывания, улучшить свой рабочий процесс разработки и обеспечить последовательно и быстрое развертывание ваших приложений.
Важный
GitHub предоставляет определенное количество бесплатных минут каждый месяц, в зависимости от вашего плана, которого может быть достаточным для малых и средних проектов. Использование действий GitHub основано на вычислении, необходимом для запуска ваших рабочих процессов, что может варьироваться в зависимости от используемого бегуна и общего количества потребляемых минут. Чтобы эффективно управлять использованием, оптимизируйте свои рабочие процессы и рассмотрите возможность использования самостоятельных бегунов для более крупных проектов. Калькулятор ценообразования.
Сценарии и документация в этом проекте выпускаются по лицензии MIT.