Space logo

Space

The intelligent code collaboration platform

Space is pivoting to SpaceCode, focused on Git hosting and code reviews. Learn more →

Публикации и ответы на комментарии в блогах JetBrains не выходят на русском языке с 2022 года.

Приносим извинения за неудобства.

Space

Space Automation — теперь в бета-версии

Read this post in other languages:

Возможности Space Automation набрали большую популярность среди пользователей EAP-версии. Теперь эта функциональность доступна и в бета-версии.
Модуль Automation позволяет управлять CI/CD-процессами, включая сборку, тестирование и развертывание проекта, прямо из Space.

Бета-версия Space является бесплатной и доступна для всех. Пользуясь ею, вы получаете доступ к плану Organization, предоставляющему по 10 000 CI-кредитов в месяц. Для участия в программе бета-тестирования оформите бесплатную подписку на Space и начните пользоваться инструментом уже сегодня.

Мы подготовили для вас краткий обзор системы, который поможет приступить к автоматизации различных задач и организации CD-процессов.

Итак, поехали.

Что такое Space Automation

Automation в JetBrains Space

Модуль Space Automation отвечает за все CI/CD-активности в системе. Для запуска сборок, тестирования и развертывания проекта используется специальный скрипт, хранящийся в проектном репозитории.

Управление конфигурацией из кода

Для настройки Automation используются скрипты. Интерфейс Automation, который вы видите в Space, предназначен для визуализации результатов работы скрипта (логов, тестов, артефактов и т. д.). Для написания скриптов используется DSL (предметно-ориентированный язык) на основе Kotlin.

Скрипт Automation

Скрипт Automation хранится внутри корневого каталога проекта — в файле с расширением .space.kts. Редактировать скрипт вы можете либо в веб-редакторе кода Space, либо в IntelliJ IDEA с установленным плагином Space.

Скрипт Automation

DSL на основе Kotlin

DSL для Space Automation основан на Kotlin (в дальнейшем мы также планируем поддержать YAML). Таким образом, вы можете писать скрипты, используя типы данных и языковые структуры Kotlin.

Изолированность в рамках ветки

Настройка Automation через скрипт позволяет изолировать конфигурацию в рамках текущей Git-ветки. Это значит, что вы можете спокойно экспериментировать с Automation-скриптами: просто создайте новую ветку, добавьте в нее файл .space.kts и смело приступайте к экспериментам.

Контейнеры

Все процессы Automation выполняются внутри Docker-контейнеров Linux. Automation-скрипты состоят из заданий (jobs), которые позволяют выполнять независимые друг от друга шаги внутри контейнеров. В нашем примере задание состоит из одного шага — контейнер Ubuntu запускает скрипт командной оболочки.

Контейнеры

Результаты запуска заданий и логи контейнеров доступны в разделе Jobs:

Последовательные и параллельные шаги

Шаги в контейнерах могут выполняться последовательно либо параллельно. Благодаря этому вы можете запускать целые графы контейнеров.

Последовательные и параллельные шаги в Automation

Последовательные и параллельные шаги

Запуск кода на Kotlin

DSL на основе Kotlin позволяет включать в билд-скрипты сложную логику. Для этого используйте в контейнере специальный элемент kotlinScript.
Запуск кода на Kotlin

Интеграция с другими модулями Space

Файл .space.kts предоставляет доступ к клиенту HTTP API Space. Поскольку свой API есть у каждого модуля Space, вы можете установить соединение с любым из них:

  • api.space().packages
  • api.space().projects
  • api.space().todo
  • api.space().blogs
  • и т. д.

Интеграция модулей Space

Интеграция с Gradle, Docker и другими инструментами

Для работы с внешними системами используйте специальные типы шагов и соответствующие API. Например, выполнив шаги gradle и gradlew, вы упростите сборки Gradle:

Интеграция Automation с Gradle

Результаты выполнения тестов отобразятся на странице задания:

Интеграция Automation

Чтобы опубликовать Docker-образ, используйте шаг docker:

Интеграция Automation с Docker

Со временем мы также планируем включить поддержку .NET, npm, MVN и некоторых других инструментов.

Использование внешних библиотек

Благодаря поддержке Kotlin в Automation-скриптах можно ссылаться на внешние библиотеки.

Automation и использование внешних библиотек

Плагин IntelliJ IDEA

Составлять сложные скрипты с использованием API Space можно также и в IntelliJ IDEA — при помощи плагина Space. Плагин не только проверяет синтаксис, но и предоставляет возможности автодополнения, упрощающие процесс создания Automation-скриптов.

Плагин Automation для IntelliJ IDEA

Интеграция со Space Packages

Space Packages — это универсальный инструмент управления репозиториями, встроенный в Space. Он поддерживает различные типы репозиториев: реестры контейнеров, Maven-репозитории, NuGet-каналы и npm-реестры. Automation поддерживает Packages по умолчанию, поэтому:

  • ваши Automation-скрипты не требуют аутентификации;
  • версии пакетов могут изменяться автоматически — в зависимости от номера выполнения задания.

Интеграция со Space Packages

Сервис-контейнеры

Внутри контейнеров можно в свою очередь запускать сервис-контейнеры, предоставляющие доступ к сетевым сервисам, таким как MySQL, Redis, Elastic и др.

Контейнеры в Automation

Логи сервис-контейнеров вы можете просматривать так же, как и логи обычных контейнеров:

Сервис-контейнеры в Automation

Передача файлов

Если бы не возможность делиться файлами, мы бы не могли передавать артефакты сборок от одного шага к другому. Функциональность реализована в специальном томе, который монтируется в каждый контейнер отдельно. Вы можете выполнять передачу файлов напрямую либо через специальный API.

передача файлов в Automation

«Секреты» и параметры

Важной частью любой CI/CD-системы является возможность надежно хранить данные учетных записей различных внешних ресурсов (например, внешних репозиториев пакетов). Automation предлагает свое хранилище для «секретов» и параметров:

параметры в Automation

Для получения «секретов» и параметров в файле .space.kts используйте значения ключей.

«Секреты» параметры в Automation

«Оплата»

Каждый из планов подписки на Space включает определенное число CI-кредитов — искусственной валюты, которая нужна для «оплаты» сборок в Automation. Один CI-кредит равен одной минуте работы контейнера Linux (2 vCPU, 7800 MiB RAM), доступного по умолчанию. Каждый месяц запас CI-кредитов будет восстанавливаться. Также планы включают определенное число резервных кредитов, которые выполняют роль подстраховки. После того как вы исчерпали месячный запас CI-кредитов, Automation отключит автоматический запуск заданий (например, запуск по команде ‘git push’) во всех репозиториях. В таком случае до конца месяца вы сможете запускать задания только вручную (со страницы Jobs), используя для этого резервные кредиты.

оплата Space Automation

Запись вебинара «Введение в Automation: CI/CD в Space»:

В этой лекции наш девелопер-адвокат Мартен Бальо объясняет концепции, которые легли в основу Space Automation. Также Мартен рассказывает о DSL, запуске сборок, «секретах» и параметрах, публикации пакетов Space в репозиторий и о многом другом. После рассказа Мартена руководитель команды Automation Евгений Кошкин отвечает на вопросы зрителей.

На этом пока все. Надеемся, что обзор концепции Space Automation был для вас полезным.

Если у вас есть вопросы или вы хотите поделиться своими мыслями, оставляйте комментарии под этой публикацией.

Ваша команда Space
The Drive to Develop

image description

Discover more