Space
The intelligent code collaboration platform
Space and SpaceCode will be discontinued on June 1, 2025. Learn more → →
Публикации и ответы на комментарии в блогах JetBrains не выходят на русском языке с 2022 года.
Приносим извинения за неудобства.
Space Automation — теперь в бета-версии
Возможности Space Automation набрали большую популярность среди пользователей EAP-версии. Теперь эта функциональность доступна и в бета-версии.
Модуль Automation позволяет управлять CI/CD-процессами, включая сборку, тестирование и развертывание проекта, прямо из Space.
Бета-версия Space является бесплатной и доступна для всех. Пользуясь ею, вы получаете доступ к плану Organization, предоставляющему по 10 000 CI-кредитов в месяц. Для участия в программе бета-тестирования оформите бесплатную подписку на Space и начните пользоваться инструментом уже сегодня.
Мы подготовили для вас краткий обзор системы, который поможет приступить к автоматизации различных задач и организации CD-процессов.
Итак, поехали.
Что такое Space Automation
Модуль Space Automation отвечает за все CI/CD-активности в системе. Для запуска сборок, тестирования и развертывания проекта используется специальный скрипт, хранящийся в проектном репозитории.
Управление конфигурацией из кода
Для настройки Automation используются скрипты. Интерфейс Automation, который вы видите в Space, предназначен для визуализации результатов работы скрипта (логов, тестов, артефактов и т. д.). Для написания скриптов используется DSL (предметно-ориентированный язык) на основе Kotlin.
Скрипт Automation
Скрипт Automation хранится внутри корневого каталога проекта — в файле с расширением .space.kts. Редактировать скрипт вы можете либо в веб-редакторе кода Space, либо в IntelliJ IDEA с установленным плагином Space.
DSL на основе Kotlin
DSL для Space Automation основан на Kotlin (в дальнейшем мы также планируем поддержать YAML). Таким образом, вы можете писать скрипты, используя типы данных и языковые структуры Kotlin.
Изолированность в рамках ветки
Настройка Automation через скрипт позволяет изолировать конфигурацию в рамках текущей Git-ветки. Это значит, что вы можете спокойно экспериментировать с Automation-скриптами: просто создайте новую ветку, добавьте в нее файл .space.kts и смело приступайте к экспериментам.
Контейнеры
Все процессы Automation выполняются внутри Docker-контейнеров Linux. Automation-скрипты состоят из заданий (jobs), которые позволяют выполнять независимые друг от друга шаги внутри контейнеров. В нашем примере задание состоит из одного шага — контейнер Ubuntu запускает скрипт командной оболочки.
Результаты запуска заданий и логи контейнеров доступны в разделе Jobs:
Последовательные и параллельные шаги
Шаги в контейнерах могут выполняться последовательно либо параллельно. Благодаря этому вы можете запускать целые графы контейнеров.
Запуск кода на Kotlin
DSL на основе Kotlin позволяет включать в билд-скрипты сложную логику. Для этого используйте в контейнере специальный элемент kotlinScript.
Интеграция с другими модулями Space
Файл .space.kts предоставляет доступ к клиенту HTTP API Space. Поскольку свой API есть у каждого модуля Space, вы можете установить соединение с любым из них:
- api.space().packages
- api.space().projects
- api.space().todo
- api.space().blogs
- и т. д.
Интеграция с Gradle, Docker и другими инструментами
Для работы с внешними системами используйте специальные типы шагов и соответствующие API. Например, выполнив шаги gradle и gradlew, вы упростите сборки Gradle:
Результаты выполнения тестов отобразятся на странице задания:
Чтобы опубликовать Docker-образ, используйте шаг docker:
Со временем мы также планируем включить поддержку .NET, npm, MVN и некоторых других инструментов.
Использование внешних библиотек
Благодаря поддержке Kotlin в Automation-скриптах можно ссылаться на внешние библиотеки.
Плагин IntelliJ IDEA
Составлять сложные скрипты с использованием API Space можно также и в IntelliJ IDEA — при помощи плагина Space. Плагин не только проверяет синтаксис, но и предоставляет возможности автодополнения, упрощающие процесс создания Automation-скриптов.
Интеграция со Space Packages
Space Packages — это универсальный инструмент управления репозиториями, встроенный в Space. Он поддерживает различные типы репозиториев: реестры контейнеров, Maven-репозитории, NuGet-каналы и npm-реестры. Automation поддерживает Packages по умолчанию, поэтому:
- ваши Automation-скрипты не требуют аутентификации;
- версии пакетов могут изменяться автоматически — в зависимости от номера выполнения задания.
Сервис-контейнеры
Внутри контейнеров можно в свою очередь запускать сервис-контейнеры, предоставляющие доступ к сетевым сервисам, таким как MySQL, Redis, Elastic и др.
Логи сервис-контейнеров вы можете просматривать так же, как и логи обычных контейнеров:
Передача файлов
Если бы не возможность делиться файлами, мы бы не могли передавать артефакты сборок от одного шага к другому. Функциональность реализована в специальном томе, который монтируется в каждый контейнер отдельно. Вы можете выполнять передачу файлов напрямую либо через специальный API.
«Секреты» и параметры
Важной частью любой CI/CD-системы является возможность надежно хранить данные учетных записей различных внешних ресурсов (например, внешних репозиториев пакетов). Automation предлагает свое хранилище для «секретов» и параметров:
Для получения «секретов» и параметров в файле .space.kts используйте значения ключей.
«Оплата»
Каждый из планов подписки на Space включает определенное число CI-кредитов — искусственной валюты, которая нужна для «оплаты» сборок в Automation. Один CI-кредит равен одной минуте работы контейнера Linux (2 vCPU, 7800 MiB RAM), доступного по умолчанию. Каждый месяц запас CI-кредитов будет восстанавливаться. Также планы включают определенное число резервных кредитов, которые выполняют роль подстраховки. После того как вы исчерпали месячный запас CI-кредитов, Automation отключит автоматический запуск заданий (например, запуск по команде ‘git push’) во всех репозиториях. В таком случае до конца месяца вы сможете запускать задания только вручную (со страницы Jobs), используя для этого резервные кредиты.
Запись вебинара «Введение в Automation: CI/CD в Space»:
В этой лекции наш девелопер-адвокат Мартен Бальо объясняет концепции, которые легли в основу Space Automation. Также Мартен рассказывает о DSL, запуске сборок, «секретах» и параметрах, публикации пакетов Space в репозиторий и о многом другом. После рассказа Мартена руководитель команды Automation Евгений Кошкин отвечает на вопросы зрителей.
На этом пока все. Надеемся, что обзор концепции Space Automation был для вас полезным.
Если у вас есть вопросы или вы хотите поделиться своими мыслями, оставляйте комментарии под этой публикацией.
Ваша команда Space
The Drive to Develop