Кнопка «Deploy on Dada» в вашем репозитории

Зачем это нужно

У вас публичный репозиторий на GitHub — стартовый шаблон, бот, демо, опенсорсный инструмент — и вы хотите, чтобы любой читатель мог запустить его без терминала. Бейдж «Deploy on Dada» в README делает ровно это: один клик собирает репозиторий и выкатывает его в аккаунт читателя на Dada Cloud.

Читателю не нужно владеть репозиторием или форкать его, не нужно ставить GitHub App и не нужно проходить мастер настройки. Идея та же, что у кнопок «Deploy on Railway» и «Deploy to Render», только деплой происходит на российской платформе и оплачивается рублями.

Как добавить кнопку

  1. Откройте приложение в консоли — или просто возьмите сниппет ниже и замените OWNER/REPO на путь своего репозитория, например DadaDevelopment/dadatuda-starter.
  2. Вставьте markdown в README.md:
[![Deploy on Dada](https://console.dada-tuda.ru/deploy-button.svg)](https://console.dada-tuda.ru/deploy?repo=OWNER/REPO)
  1. Если ваш сайт документации не рендерит markdown, используйте HTML-вариант:
<a href="https://console.dada-tuda.ru/deploy?repo=OWNER/REPO">
  <img src="https://console.dada-tuda.ru/deploy-button.svg" alt="Deploy on Dada" height="40">
</a>
  1. Закоммитьте и запушьте. Бейдж работает сразу: ничего не надо регистрировать, нет ни листинга в маркетплейсе, ни этапа модерации.

Как взять сниппет из консоли

Если репозиторий уже подключён к приложению, консоль напишет сниппет за вас:

  1. Откройте Applications и нажмите на приложение.
  2. Пролистайте до карточки «Deploy on Dada» button.
  3. Скопируйте markdown или HTML — оба уже заполнены вашим репозиторием.

Параметры

Ссылка принимает несколько query-параметров:

  • repo — обязательный, в формате owner/name. Полный URL GitHub или SSH-remote тоже подойдут, хвост .git отрезается.
  • branch — ветка для сборки. По умолчанию main.
  • rootDir — подкаталог для сборки в монорепозитории. По умолчанию корень репозитория.

Пример для монорепозитория:

[![Deploy on Dada](https://console.dada-tuda.ru/deploy-button.svg)](https://console.dada-tuda.ru/deploy?repo=OWNER/REPO&branch=develop&rootDir=services/api)

Что видит читатель

  1. По клику на бейдж он попадает на карточку подтверждения: репозиторий, определённый фреймворк, имя приложения и порт.
  2. Если он не залогинен, сперва открывается регистрация и возвращает его на ту же карточку.
  3. Он может переименовать приложение или поменять порт и нажать Deploy.
  4. Лог сборки стримится на странице деплоев, а после сборки приложение получает HTTPS-адрес вида name-hash.dada-tuda.ru.

Подводные камни

  • Только публичные репозитории. Клон анонимный, поэтому приватный репозиторий не соберётся. Для приватного кода подключайте GitHub в консоли — см. деплой приложения из GitHub.
  • Определение фреймворка приблизительное. Оно читает репозиторий через анонимный API GitHub, а тот ограничивает частоту запросов по адресу источника; результат кешируется на шесть часов. Если в этот момент определить не удалось, порт просто становится 8080, а сборка всё равно идёт: читатель поправит порт до деплоя или потом в настройках приложения.
  • Автодеплой выключен у приложений, созданных таким способом. Читатель не владелец репозитория, поэтому приложение — снимок вашего кода на момент клика, а не подписка на ваши пуши. Позже он может подключить собственный форк и получить push-to-deploy.
  • Совпадение имён получает суффикс. Если в проекте читателя уже есть приложение с таким именем, добавится короткий случайный суффикс, а не перезапись или пересборка существующего.
  • Картинка бейджа отдаётся консолью, поэтому рендерится где угодно — GitHub, GitLab, сайт документации, пост в блоге.

Чего пока нет

  • Предзаполненных переменных окружения и манифеста в духе dada.json: секреты читатель настраивает сам после первого деплоя.
  • Режима «выкатить подкаталоги как несколько приложений» — один клик создаёт одно приложение.
  • Своей стилизации бейджа и бейджа с вашими цветами под конкретный репозиторий.

Куда дальше