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()
|
例:
関連ページ:
実行環境
Space Automation の実行環境は、ワーカーのコンセプトに基づいています。ワーカーは、Space Automation に接続し、ジョブとソースコードを取得し、ジョブを実行して、結果を Space にレポートする軽量エージェントです。ワーカーは、Space Automation Cloud の仮想マシン、独自のセルフホストマシン、および Docker コンテナーで実行できます。次の表は、考えられる実行環境をまとめたものです。Space クラウドワーカー (オンプレミスの Space で...
ジョブの表示、実行、停止、サブスクライブ
プロジェクトのジョブページでは、ジョブの実行と停止、現在のジョブの実行進行状況と実行結果の表示、およびジョブ通知のサブスクライブを行うことができます。ジョブの実行結果を表示する:プロジェクトに移動します。サイドバーメニューで、ジョブを選択します。必要なリポジトリとブランチが選択されていることを確認してください。このページには、プロジェクト内のすべてのジョブのリストとその実行結果が表示されます。ここでは、たとえば次のような場合にジョブフィルターを適用することもできます。実物のみジョブを残す: 自...
コンテナーイメージの公開
Docker イメージがあり、次のコマンドを使用して、新しく作成したコンテナーレジストリにそれを公開するとします。Docker コマンドラインツール。JetBrains TeamCity.、Space Automation.、同じイメージバージョンのイメージを公開することは許可されていないことに注意してください。サーバーは 409 HTTP 応答を返します。Docker コマンドラインツールを使用してイメージを公開する:コンテナーレジストリにログインします。docker login mycom...
Java および Kotlin 用の Gradle
前提条件 Java または Kotlin で書かれたプロジェクトがあります。プロジェクトでは Gradle を使用します。Gradle ラッパーはプロジェクトのルートディレクトリに存在します。アーティファクトを Space パッケージに公開する場合は、プロジェクトに Maven リポジトリがあることを確認してください。対象イメージ JRE/JDK バージョン 11 以降を含むイメージ。例:amazoncorretto イメージ。通常、プロジェクトを構築してテストを実行するために必要なのは、プロジェクト...
Space HTTP API
Space HTTP API を使用すると、チャット、チームディレクトリ、プロジェクト、ドキュメント、パッケージなどの任意の Space モジュールにプログラムでアクセスできます。特定の API リクエストの実行の詳細については、API 参照を参照するか、API Playground(下記を参照) を使用してください。HTTP API をすぐに使い始めるには、Space SDK を使用します。API Playground:API Playground を使用すると、次のことが可能になります。Spac...
他の Space モジュールと対話する
ブロックは、チャット、課題、ドキュメントなどの他の Space モジュールを操作できる API を提供します。例: これは、ジョブからチャネルにメッセージを送信する方法です。job(