Space logo

Space

The intelligent code collaboration platform

Space and SpaceCode will be discontinued on June 1, 2025. Learn more → →

JetBrains Space 上で Automation 機能が利用可能に

Read this post in other languages:

Space Automation

Space Automation は、EAP に参加していただいた方の間で最も人気の高かった予定機能の 1 つです。この機能がすべての Space Beta をご利用のお客様に公開されました。
Automation 機能により、Space で CI/CD アクティビティを実行し、プロジェクトの構築、テスト、およびデプロイが可能となります。

Space は現在ベータ段階にあり、無料で一般公開されています。 すべての Space ベータのお客様は、毎月 10,000 CI クレジットが含まれる組織プランをご利用いただけます。 ベータプログラムにまだ参加していただいていない方は、ぜひこの機会に Space に無料でご登録の上、ご利用ください。

幅広いタスクの自動化と継続的デリバリーパイプラインの体系化に皆さんが取り組みやすいよう、システムの簡単な概要を用意しました。

では早速、Automation について説明しましょう!

Space Automation とは

JetBrains Space Automation

Automation は、システムの CI/CD アクティビティを担う Space モジュールです。 リポジトリに保管されているスクリプトファイルを使用して、プロジェクトを構築、テスト、およびデプロイすることができます。

Configuration as code (コードとして構成を記述)

Automation の構成は、スクリプトのみで行います。 Space に表示される Automation UI は、ログ、テスト、アーティファクトといったスクリプトの結果の視覚化のみに使用します。 スクリプトは専用の Kotlin ベースの DSL(ドメイン固有言語)で記述されています。

自動化スクリプト

自動化スクリプトは、プロジェクトのルートディレクトリにある .space.kts ファイルに保存する必要があります。 .space.kts を編集するには、Space コードのウェブエディターか、Space プラグインがインストールされた IntelliJ IDEA のいずれかを使用できます。

自動化スクリプト

Kotlin ベースの DSL

Space Automation DSL は Kotlin に基づく言語で(YAML も計画中です)、Kotlin のデータ型や言語構造を自動化スクリプトで直接使用できるなどの多数のメリットがあります。

ブランチによる分離

Automation の構成はスクリプトファイルを使って行うため、構成は Git ブランチごとに完全に分離されています。 このため、新規ブランチを作成し、space.kts ファイルの追加し、そして(なんらかのアクションを)試してみるいったふうに、自動化スクリプトの構成を非常に簡単に試すことができます。

コンテナ

すべての Automation アクティビティは、Linux ベースの Docker コンテナで実行します。 自動化スクリプトのビルディングブロックは job (ジョブ)です。 ジョブにより、コンテナ内の独立したステップを実行することができます。 以下の例では、ジョブを構成するのは、シェルスクリプトを実行する Ubuntu コンテナという1つのステップです。

コンテナ

ジョブの実行結果とコンテナのログは、プロジェクトの Jobs ページに表示されます。

シーケンシャルおよび並列ステップ

コンテナ内のステップを順次にまたは並行して実行することができるため、 コンテナのグラフを実行することができます。

自動化のシーケンシャルおよび並列ステップ

シーケンシャルおよび並列ステップ

Kotlin コードの実行

Kotlin ベースの DSL では、ビルドスクリプト内に複雑なロジックを実装することができます。 この目的により、コンテナ内に特殊な KotlinScript 項目を使用できます。
Kotlin コードの実行

ほかの Space モジュールとの統合

.space.kts は、Kotin ベースの Space 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 を使用するのには、外部ライブラリを参照できるという別のメリットがあります。

外部ライブラリを使用した自動化

IntelliJ IDEA プラグイン

IntelliJ IDEA 向けの Space プラグインを使用すると、Space API を使用する複雑なスクリプトをより簡単に記述することができます。 Space プラグインは、自動化スクリプトを確認するだけでなく、自動コード補完機能も提供しています。

Automation IntelliJ IDEA プラグイン

Space Packages との統合

Space Packages は、Space に組み込まれたユニバーサルリポジトリマネージャです。 コンテナレジストリ、Maven リポジトリ、NuGet フィード、および npm レジストリといった各種リポジトリタイプをサポートしています。 Automation は、初期状態で Packages と統合することができます。

  • 自動化スクリプトには認証は不要です。
  • ジョブの実行番号に応じて、パッケージバージョンを自動的に変更できます。

Space パッケージの統合

サービスコンテナ

MySQL、Redis、Elastic といったネットワークにアクセス可能なサービスを提供する追加のサービスコンテナをコンテナ内で実行できます。

Automation コンテナ

ほかのコンテナと同様に、次のようにサービスコンテナログを閲覧することができます。

Automation サービスコンテナ

ファイルの共有

ファイルの共有を使用すると、ビルドアーティファクトをステップ間で渡すことができます。 ファイル共有は、ユーザーが直接、または特別な API を使用してアクセスできるコンテナにマウントされた特別なボリュームです。

自動化ファイルの共有

シークレットとパラメータ

どのような CI/CD システムにおいても重要なのは、外部パッケージリポジトリなどの各種外部リソースに資格情報を安全に保管できる機能です。 このため、Automation はシークレットとパラメーターを補完する独自のストレージを提供しています。

Automation パラメータ

シークレットとパラメーターは、鍵の値を使用して .space.kts から簡単にアクセスできます。

Automation のシークレットとパラメータ

サブスクリプション

JetBrains の Space サブスクリプションプランには、Automation ビルドを実行する際に使用する人工通貨の CI クレジットが含まれます。 1 CI クレジットは、デフォルトの Linux コンテナ(2 vCPU、7800 MiB RAM)1 分のワークに相当します。 CI クレジットの数量は毎月リセットされます。 サブスクリプションプランには、CI クレジットだけでなく、特定の数量の「リザーブクレジット」も含まれます。これは、CI クレジットのいわゆる金庫です。 1 か月の CI クレジットを使い果たすと、Automation はすべてのリポジトリの自動ジョブトリガー(‘git push’ で作動するトリガーなど)を無効化してしまいますが、 その場合、Jobs ページで手動で実行しない限り、ジョブをトリガーできなくなってしまいます。 リザーブクレジットは、こういったジョブの実行に充てられるクレジットです。

Space Automation の請求

今日は、これでおしまいです。 Space における Automation の概念を簡単に説明できたのであれば幸いです。
ご質問やご意見は、お気軽に以下のコメント欄に投稿してください。

JetBrains チーム
— The Drive to Develop

image description

Discover more