
Как мы в ST внедряли CI/CD
Однажды у нас появилась невероятная идея: а что, если создать дополнительный способ сборки сторителлинга? Это поможет в случаях, когда локальный компилятор не справляется или его просто нет под рукой (например, когда кодим с телефона).
Что мы решили использовать? Поскольку мы давно применяем JetBrains YouTrack как аутентификатор и основной инструмент для работы, выбор пал на продукт от JetBrains — TeamCity.
Спустя пару часов мы автоматизировали сборку основного мода сюжета, но хотелось большего...
И тут пришла гениальная идея: а что, если система после сборки будет сама отправлять билд в чат Telegram и уведомлять тестировщика? (У нас были случаи, когда разработчик собирал билд и забывал отправить его в течение нескольких часов :D).
Что ж, поехали! 25 строк Bash-скрипта после сборки, небольшой скрипт интеграции с YouTrack — и готово! Если упростить, то скрипт выглядит так:
Что ещё можно добавить? Предупреждения о коммитах с ошибками. Порой бывает, что разработчик публикует код, который не компилируется (например, забыл добавить один файл). Эту задачку мы решили написав свой собственный плагин для TeamCity, благо там для этого уже были готовые абстракции:
В итоге наша работа стала чуть быстрее и эффективнее!
Программист может с телефона подправить мелкий баг, и TeamCity самостоятельно сделает билд для тестировщика.
Тем, у кого компиляция занимает больше 1 минуты, достаточно дождаться автоматической сборки (да, она выполняется за 60 секунд).
А тот, кто запушил не полностью рабочий код, получит «удар палкой» уже через 60 секунд после отправки коммита.
В комментариях я добавлю несколько скриншотов, чтобы показать, как это всё выглядит :3
Однажды у нас появилась невероятная идея: а что, если создать дополнительный способ сборки сторителлинга? Это поможет в случаях, когда локальный компилятор не справляется или его просто нет под рукой (например, когда кодим с телефона).
Что мы решили использовать? Поскольку мы давно применяем 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