TGViewer
Бессонный кодер Бессонный кодер @sleeplesscode · 4.24K subscribers
Post #296 59.1K
Как мы в ST внедряли CI/CD

Однажды у нас появилась невероятная идея: а что, если создать дополнительный способ сборки сторителлинга? Это поможет в случаях, когда локальный компилятор не справляется или его просто нет под рукой (например, когда кодим с телефона).

Что мы решили использовать? Поскольку мы давно применяем JetBrains YouTrack как аутентификатор и основной инструмент для работы, выбор пал на продукт от JetBrains — TeamCity.

Спустя пару часов мы автоматизировали сборку основного мода сюжета, но хотелось большего...
И тут пришла гениальная идея: а что, если система после сборки будет сама отправлять билд в чат Telegram и уведомлять тестировщика? (У нас были случаи, когда разработчик собирал билд и забывал отправить его в течение нескольких часов :D).

Что ж, поехали! 25 строк Bash-скрипта после сборки, небольшой скрипт интеграции с YouTrack — и готово! Если упростить, то скрипт выглядит так:
curl -X POST "https://api.telegram.org/bot$BOT_TOKEN/sendDocument" \
-F chat_id="$CHAT_ID" \
-F document=@"$FILE_PATH" \
-F caption="https://github.com/StorytellingSeries/${PROJECT}/commit/%build.vcs.number%${IFS}${PINGS}" \
-F disable_notification=true \
-F parse_mode=HTML


Что ещё можно добавить? Предупреждения о коммитах с ошибками. Порой бывает, что разработчик публикует код, который не компилируется (например, забыл добавить один файл). Эту задачку мы решили написав свой собственный плагин для TeamCity, благо там для этого уже были готовые абстракции:
@Override
public void notifyBuildFailed(@NotNull SRunningBuild build, @NotNull Set<SUser> users) {
Map<String, Object> props = messageBuilder.getBuildFailedMap(build, users);
sendNotification(props, users, "build_failed", true); // Отправляем в очередь
}


В итоге наша работа стала чуть быстрее и эффективнее!
Программист может с телефона подправить мелкий баг, и TeamCity самостоятельно сделает билд для тестировщика.
Тем, у кого компиляция занимает больше 1 минуты, достаточно дождаться автоматической сборки (да, она выполняется за 60 секунд).
А тот, кто запушил не полностью рабочий код, получит «удар палкой» уже через 60 секунд после отправки коммита.

В комментариях я добавлю несколько скриншотов, чтобы показать, как это всё выглядит :3

#st
  • 🔥 100
  • 👍 18
  • ❤ 12
  • 💩 3
  • 💊 2
  • ❤‍🔥 1
  • 👎 1
  • 🤔 1
  • 🤡 1
  • 🙈 1
  • 😘 1
More from @sleeplesscode
  1. Oct 5, 2026Post #923
  2. Oct 1, 2026Post #914
  3. Sep 18, 2026Post #913
  4. Sep 17, 2026Post #912
  5. Sep 15, 2026Post #911
  6. Sep 14, 2026Post #909
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →