DSL リファレンス
オートメーション DSL は、Space オートメーションスクリプトの作成を支援することを目的としたドメイン固有の言語です。DSL は Kotlin プログラミング言語(英語)に基づいています。これは、スクリプト内で Kotlin データ型と言語構造を使用できることを意味します。
作業
job
は、ステップで構成される定義済みタスクです。
job(name: String, init: Task.() -> Unit)
|
|
|
|
例:
job.requirements
requirements
は、ジョブ実行環境の要件を指定します。
requirements(init: ScriptJobRequirementsBuilder.() -> Unit)
|
|
例:
job.container
container
はコンテナーを実行し、このコンテナー内で指定されたコマンドまたはスクリプトを実行します。
container(image: String, init: Container.() -> Unit = {})
container(displayName: String?, image: String, init: Container.() -> Unit = {})
|
| ||||||||||||||||||||
|
| ||||||||||||||||||||
|
|
例:
job.container.args
entrypoint
が指定されている場合、args
は entrypoint
コマンドの引数を提供します。それ以外の場合、args
はデフォルトのイメージコマンド (たとえば、 ENTRYPOINT
(英語) によって設定される) の引数を提供します。各引数は、args
配列内の個別の文字列である必要があります。複数の args
を指定した場合は、最後のものだけが有効になります。
args(vararg args: String)
例:
job.container.cache
cache
は、プロジェクトの依存関係をファイルリポジトリにキャッシュすることでビルドを高速化します。詳細
cache(init: FileCache.() -> Unit)
|
|
例:
job.container.dockerRegistryConnections
dockerRegistryConnections
は、container
ステップを実行する前にログインする Docker レジストリを定義します。このステップでは、これらの Docker レジストリのイメージを使用できます。これにより、認証が必要なレジストリのイメージを使用できるようになります。対応するレジストリ接続を最初にプロジェクト設定で宣言する必要があることに注意してください。詳細
dockerRegistryConnections(init: DockerRegistryConnections.() -> Unit)
dockerRegistryConnections
内で、単項 +
演算子を使用して接続を追加します。
例:
job.container.entrypoint
entrypoint
は、デフォルトのイメージコマンドをオーバーライドして、指定されたコマンドを実行します。これは、Docker の ENTRYPOINT
(英語) に相当します。コマンド引数は、 args
配列内の個別の文字列として指定する必要があります。複数の entrypoint
を指定した場合は、最後のものだけが有効になります。
entrypoint(entryPoint: String)
例:
job.container.env
env
を使用すると、コンテナーに環境変数を設定できます。オートメーション環境変数を使用すると、現在の実行コンテキストに関するさまざまな情報を取得できることに注意してください。
env = Environment()
|
例:
job.container.fileArtifacts
fileArtifacts
は、ステップによって生成されたファイルアーティファクトをファイルリポジトリにアップロードします。詳細
fileArtifacts(init: FileArtifact.() -> Unit)
|
|
例:
job.container.fileInput
fileInput
は、指定されたソースの 1 つからファイルを読み込みます。詳細
fileInput(init: FileInput.() -> Unit)
|
|
例:
job.container.kotlinScript
kotlinScript
は任意の Kotlin コードを実行します。複数の kotlinScript
を指定した場合、最後のものだけが実行されます。Kotlin スクリプトを実行するには、使用するコンテナーイメージに JRE/JDK 11 以降が含まれている必要があることに注意してください。
kotlinScript(init: ProcessKotlinScript.(ScriptAPI) -> Unit)
例:
kotlinScript
は、さまざまな API へのアクセスを提供します。API を使用すると、特定の Space モジュールや Gradle などのビルドツールを操作できます。現在、次の API が利用可能です。
機能 | 戻り値 | 説明 |
---|---|---|
|
| プロジェクトソースから Gradle ラッパーを使用して Gradle コマンドを実行します。例: |
|
| Space インスタンスの URL を返します。 |
|
| 現在の Git ブランチの名前を返します。例: |
|
| 現在の Git リビジョン番号を返します。例: |
|
| 現在のオートメーションスクリプトの実行数を返します。たとえば、この番号を使用してアプリケーションのバージョン番号を生成できます。 |
|
| 現在のプロジェクトの ID とキーを返します。 |
|
| 現在のクライアント ID とシークレットを返します。これらは、現在のスクリプトに対して発行される一時的な OAuth 2.0 認証情報です。スクリプトはこれらを使用して、さまざまな Space モジュールで認証を行います。例: スクリプトアーティファクトを公開するために、パッケージリポジトリでの認証に必要になる場合があります。 |
|
| Kolin スクリプトでパラメーターを使用できるようにします。詳細 |
|
| Kolin スクリプトでプロジェクトシークレットを使用できるようにします。詳細 |
| ジョブステップ間でファイルを共有できます。詳細 | |
| さまざまな Space モジュールを操作できます。例:
Space モジュール API は Space HTTP API を通じて機能します。つまり、 |
job.container.resources
resources
は、コンテナーのリソースを制限します。デフォルトのリソース制約は次のとおりです。
2 つの仮想 CPU
7800MB のメモリ
resources(init: ExplicitResources.() -> Unit)
|
|
例:
job.container.requirements
requirements
は、ステップの実行に使用する必要があるホストマシンの要件を指定します。Space クラウドではなく特定のワーカーで container
ステップを含むジョブを実行する場合は、requirements
を指定します。詳細
requirements(init: ContainerRequirementsBuilder.() -> Unit)
|
|
例:
job.container.runIf
runIf
を使用すると、特定の条件でステップを実行できます。runIf
が空の文字列、false
、または 0
を返すコードブロックの場合、このステップはスキップされます。詳細
runIf(condition: String)
例:
job.container.service
service
は、ネットワークからアクセスできるサービスを使用してコンテナーを実行します。詳細
service(image: String, init: Service.() -> Unit = {})
|
| ||||||||||||||
|
|
例:
job.container.shellScript
shellScript
は、提供されたシェルスクリプトを実行します。
shellScript(init: ContainerShellScript.() -> Unit)
|
|
例:
chmod +x
を使用してスクリプトファイルを実行可能としてマークする必要はないことに注意してください。オートメーションは、location
で指定されたスクリプトファイルに「実行可能」フラグを自動的に設定します。
job.host
host
は、指定されたスクリプトをホストマシン上で直接実行します。これは、ホスト型またはクラウドワーカーである可能性があります。
host(displayName: String? = null, init: Host.() -> Unit = {})
|
| ||||||||
|
|
例:
job.host.cache
cache
は、プロジェクトの依存関係をファイルリポジトリにキャッシュすることでビルドを高速化します。詳細
cache(init: FileCache.() -> Unit)
|
|
例:
job.host.dockerBuildPush
dockerBuildPush
は、セルフホストまたは Space Cloud ワーカーで Docker イメージを構築および公開するために使用される特別なヘルパーブロックです。詳細
dockerBuildPush(displayName: String? = null, init: DockerBuildPushAction.() -> Unit)
|
| ||||||||||||||||||||
|
|
例:
job.host.dockerRegistryConnections
dockerRegistryConnections
は、host
ステップを実行する前にログインする Docker レジストリを定義します。これにより、host
ステップ内で認証を必要とするレジストリを使用できるようになります。例: このようなリポジトリにイメージを公開できます。対応するレジストリ接続を最初にプロジェクト設定で宣言する必要があることに注意してください。詳細
dockerRegistryConnections(init: DockerRegistryConnections.() -> Unit)
dockerRegistryConnections
内で、単項 +
演算子を使用して接続を追加します。
例:
job.host.env
env
を使用すると、ホストマシン上で環境変数を設定できます。オートメーション環境変数を使用すると、現在の実行コンテキストに関するさまざまな情報を取得できることに注意してください。
env = Environment()
|
例:
job.host.fileArtifacts
fileArtifacts
は、ステップによって生成されたファイルアーティファクトをファイルリポジトリにアップロードします。詳細
fileArtifacts(init: FileArtifact.() -> Unit)
|
|
例:
job.host.fileInput
fileInput
は、指定されたソースの 1 つからファイルを読み込みます。詳細
fileInput(init: FileInput.() -> Unit)
|
|
例:
job.host.kotlinScript
kotlinScript
は任意の Kotlin コードを実行します。
kotlinScript(init: ProcessKotlinScript.(ScriptAPI) -> Unit)
例:
kotlinScript
は、さまざまな API へのアクセスを提供します。API を使用すると、特定の Space モジュールや Gradle などのビルドツールを操作できます。利用可能な API の完全なリストについては、 job.container.kotlinScript
を参照してください。
job.host.requirements
requirements
は、ステップの実行に使用する必要があるホストマシンの要件を指定します。詳細
requirements(init: HostRequirementsBuilder.() -> Unit)
|
|
例:
job.host.requirements.os
os
は、必要なオペレーティングシステムを指定します。自動化は、指定されたオペレーティングシステムを使用するワーカーにのみジョブをルーティングします。詳細
os(configure: OSRequirementsBuilder.() -> Unit)
|
|
例:
job.host.requirements.resources
resources
は、ホストマシン上で利用可能なシステムリソース (CPU コアと RAM) に対する要件を指定します。自動化は、十分なリソースを持つワーカーにのみジョブをルーティングします。詳細
resources(configure: ResourceRequirementsBuidler.() -> Unit)
|
|
例:
job.host.requirements.workerTags
workerTags
は必要なタグを指定します。自動化は、指定されたタグでマークされたワーカーにのみジョブをルーティングします。詳細
workerTags(vararg tags: String)
例:
job.host.runIf
runIf
を使用すると、特定の条件でステップを実行できます。runIf
が空の文字列、false
、または 0
を返すコードブロックの場合、このステップはスキップされます。詳細
runIf(condition: String)
例:
job.host.shellScript
shellScript
は、指定されたシェルスクリプトを実行します。
shellScript(displayName: String? = null, init: HostShellScript.() -> Unit)
|
| ||||||||
|
|
例:
chmod +x
を使用してスクリプトファイルを実行可能としてマークする必要はないことに注意してください。オートメーションは、location
で指定されたスクリプトファイルに「実行可能」フラグを自動的に設定します。
job.git
git
を使用すると、Git リポジトリのチェックアウトオプションを指定できます。git
アイテムには 2 つの主な使用例があります。
追加のブランチとリビジョンの取得 : デフォルトでは、オートメーションは現在のリビジョン (現在実行中の
.space.kts
スクリプトを含むリビジョン) のみをチェックアウトします。複数のリポジトリを持つプロジェクトで追加のリポジトリをチェックアウトする : ビルドスクリプトで一度に複数のリポジトリからのソースコードが必要な場合。
git(init: DefaultGitRepository.() -> Unit = {})
git(repositoryName: String, init: ExternalGitRepository.() -> Unit = {})
|
| ||||||||||
|
|
例:
job.parallel
デフォルトでは、すべての container
ステップは job
内で順番に実行されます。これらを並行して実行するには、parallel
ブロック内に置きます。
parallel(init: StepFork.() -> Unit)
|
|
例:
job.parallel.sequential
sequential
は、 parallel
ブロック内の container
ステップを順番に実行します。
sequential(init: StepSequence.() -> Unit)
|
|
例:
job.parameters
parameters
ブロックを使用すると、ジョブパラメーターを定義したり、プロジェクトのシークレットとパラメーターを参照したりできます。詳細
parameters(init: Parameters.() -> Unit)
|
|
例:
job.startOn
startOn
ブロックには、 job
をトリガーするイベントが含まれています。
startOn(init: Triggers.() -> Unit)
|
|
例:
job.startOn.gitPush
gitPush
は、コミットがプロジェクトリポジトリにプッシュされた後にジョブを実行します。デフォルトでは、プロジェクトに対して gitPush
トリガーが有効になっています。重要: 他のトリガーをジョブに追加すると、gitPush
トリガーは無効になります。
gitPush(init: GitPushTrigger.() -> Unit)
|
|
例:
job.startOn.schedule
schedule
でジョブを実行します。例: 1 日 1 回、特定の時間 (UTC タイムゾーン)。
schedule(init: ScheduleTrigger.() -> Unit)
|
|
例:
job.startOn.gitBranchDeleted
gitBranchDeleted
は、git ブランチがプロジェクトリポジトリから削除されるときにジョブを実行します。プロジェクトのデフォルトのブランチ (main
) でのみ機能します。
gitBranchDeleted(init: GitBranchDeletedTrigger.() -> Unit = {})
|
|
例:
job.startOn.codeReviewOpened
codeReviewOpened
は、プロジェクトでコードレビューが開かれるとジョブを実行します。
codeReviewOpened(init: CodeReviewOpenedTrigger.() -> Unit = {})
|
|
例:
job.startOn.codeReviewClosed
codeReviewClosed
は、プロジェクトでコードレビューが閉じられたときにジョブを実行します。
codeReviewClosed(init: CodeReviewClosedTrigger.() -> Unit = {})
|
|
例:
job.failOn
failOn
ブロックには、 job
が失敗したとみなされる条件が含まれています。デフォルトでは、失敗したテストとゼロ以外の終了コードが失敗条件となります。
failOn(init: FailureConditions.() -> Unit)
|
|
job.failOn.nonZeroExitCode
nonZeroExitCode
では、ジョブがゼロ以外のステータスコード(英語)を返した場合、ジョブは失敗したと見なされます。これはデフォルトの障害状態です。
nonZeroExitCode(init: NonZeroExitCodeCondition.() -> Unit)
|
|
job.failOn.testFailed
testFailed
では、ジョブの実行中に少なくとも 1 つのテストが失敗した場合、ジョブは失敗したとみなされます。これはデフォルトの障害状態です。自動化は、ジョブ出力を解析することによって、失敗したテストを検出します。現在、Gradle テスト出力のみがサポートされています。
testFailed(init: TestFailedCondition.() -> Unit)
|
|
例:
job.failOn.outOfMemory
outOfMemory
では、いずれかのジョブコンテナーでメモリが不足すると、ジョブは失敗したとみなされます (OOMKilled
イベントに基づいて)。これはデフォルトの障害状態です。
outOfMemory(init: OutOfMemoryCondition.() -> Unit)
|
|
例:
job.failOn.timeOut
timeOut
では、指定された期間内にジョブを開始できない場合、または指定された期間よりも長く実行された場合、ジョブは失敗したとみなされます。タイムアウト期間を指定するには、timeOut
内で timeOutInMinutes
キーワードを使用する必要があります。デフォルトおよび最大許容タイムアウトは 120 分です。
timeOut(init: TimeOutFailedCondition.() -> Unit)
|
|
例:
job.volumeSize
volumeSize
は、コンテナーにマウントされるディスクのサイズを設定します。ディスクにはプロジェクトリポジトリが含まれています。デフォルトでは 5 GiB。MB および GB の mb
および gb
ユニットをサポートします。例: 10000.mb
または 10.gb
volumeSize: Any?
例:
job.kaniko
kaniko
は、Docker イメージを構築して公開するために使用される特別なステップです。このステップは、Kaniko ツールを使用したカスタムイメージに基づいてコンテナー内で実行されます。詳細
kaniko(init: KanikoStep.() -> Unit)
|
|
例:
job.gradlew
gradlew
は、プロジェクトディレクトリの Gradle ラッパーを使用して Gradle コマンドを実行する特別なヘルパーアイテムです。gradlew
を使用してビルドスクリプトを簡素化します。詳細
gradlew(image: String? = null, vararg args: String, init: Project.Container.() -> Unit = {})
|
|
|
|
|
|
例:
job.warmup (非推奨)
warmup
を使用すると開発環境用のウォームアップデータを準備するが可能になります。
warmup(ide: Ide, profileId: String? = null, init: Warmup.() -> Unit = {})
|
| ||||||||
|
| ||||||||
|
|
例:
job.warmup.env
env
を使用すると、開発環境コンテナーに環境変数を設定できます。オートメーション環境変数を使用すると、現在の実行コンテキストに関するさまざまな情報を取得できることに注意してください。
env = Environment()
|
例:
関連ページ:
![](https://pleiades.io/icons/jetbrains_logo.png)
実行環境
Space Automation の実行環境は、ワーカーのコンセプトに基づいています。ワーカーは、Space Automation に接続し、ジョブとソースコードを取得し、ジョブを実行して、結果を Space にレポートする軽量エージェントです。ワーカーは、Space Automation Cloud の仮想マシン、独自のセルフホストマシン、および Docker コンテナーで実行できます。次の表は、考えられる実行環境をまとめたものです。Space クラウドワーカー (オンプレミスの Space で...
![](https://resources.jetbrains.com/help/img/space/automationJobRunStop.png)
ジョブの表示、実行、停止、サブスクライブ
プロジェクトのジョブページでは、ジョブの実行と停止、現在のジョブの実行進行状況と実行結果の表示、およびジョブ通知のサブスクライブを行うことができます。ジョブの実行結果を表示する:プロジェクトに移動します。サイドバーメニューで、ジョブを選択します。必要なリポジトリとブランチが選択されていることを確認してください。このページには、プロジェクト内のすべてのジョブのリストとその実行結果が表示されます。ここでは、たとえば次のような場合にジョブフィルターを適用することもできます。実物のみジョブを残す: 自...
![](https://resources.jetbrains.com/help/img/space/tcAddDockerRepo.png)
コンテナーイメージの公開
Docker イメージがあり、次のコマンドを使用して、新しく作成したコンテナーレジストリにそれを公開するとします。Docker コマンドラインツール。JetBrains TeamCity.、Space Automation.、同じイメージバージョンのイメージを公開することは許可されていないことに注意してください。サーバーは 409 HTTP 応答を返します。Docker コマンドラインツールを使用してイメージを公開する:コンテナーレジストリにログインします。docker login mycom...
![](https://resources.jetbrains.com/help/img/space/secretsMavenRepo.png)
Java および Kotlin 用の Gradle
前提条件 Java または Kotlin で書かれたプロジェクトがあります。プロジェクトでは Gradle を使用します。Gradle ラッパーはプロジェクトのルートディレクトリに存在します。アーティファクトを Space パッケージに公開する場合は、プロジェクトに Maven リポジトリがあることを確認してください。対象イメージ JRE/JDK バージョン 11 以降を含むイメージ。例:amazoncorretto イメージ。通常、プロジェクトを構築してテストを実行するために必要なのは、プロジェクト...
![](https://resources.jetbrains.com/help/img/space/httpapiplayground.png)
Space HTTP API
Space HTTP API を使用すると、チャット、チームディレクトリ、プロジェクト、ドキュメント、パッケージなどの任意の Space モジュールにプログラムでアクセスできます。特定の API リクエストの実行の詳細については、API 参照を参照するか、API Playground(下記を参照) を使用してください。HTTP API をすぐに使い始めるには、Space SDK を使用します。API Playground:API Playground を使用すると、次のことが可能になります。Spac...
![](https://resources.jetbrains.com/help/img/space/automation_api_playground.png)
他の Space モジュールと対話する
ブロックは、チャット、課題、ドキュメントなどの他の Space モジュールを操作できる API を提供します。例: これは、ジョブからチャネルにメッセージを送信する方法です。job("Build and publish") { container(displayName = "Build and notify", image = "gradle:7.1-jre11") { kotlinScript { api -> try { api.gradle("build") } catch (ex:...