JetBrains Space ヘルプ

DSL リファレンス

オートメーション DSL は、Space オートメーションスクリプトの作成を支援することを目的としたドメイン固有の言語です。DSL は Kotlin プログラミング言語(英語)に基づいています。これは、スクリプト内で Kotlin データ型と言語構造を使用できることを意味します。

作業

job は、ステップで構成される定義済みタスクです。

job(name: String, init: Task.() -> Unit)

Property

name: String はジョブの名前です

Method

init は作業内容です

例:

job("Hello World!") { container(image = "hello-world") }

job.requirements

requirements は、ジョブ実行環境の要件を指定します。

requirements(init: ScriptJobRequirementsBuilder.() -> Unit)

Method

init 関数は、ホストマシンに対する要件を指定します。

Property

workerPool: String? : 目的の実行環境を明示的に指定します。

  • Space Automation Cloud の WorkerPools.SPACE_CLOUD または "space-cloud"

  • セルフホスト型ワーカーの場合は WorkerPools.SELF_HOSTED または "self-hosted.default"

指定した場合、デフォルトのワーカープールパラメーターをオーバーライドします。

Property

workerType: String? : 目的のワーカーインスタンスを明示的に指定します。

  • WorkerTypes.SPACE_CLOUD_UBUNTU_LTS_REGULAR または "space-cloud.ubuntu-lts.regular" (デフォルト)

  • WorkerTypes.SPACE_CLOUD_UBUNTU_LTS_LARGE または "space-cloud.ubuntu-lts.large"

指定した場合、デフォルトのワーカープールパラメーターをオーバーライドします。

Method

workerTags : ユーザーが作成したワーカータグによって適切な実行環境を選択します

Method

resources : ホストマシンで利用可能なリソース (CPU コアと RAM) に応じて適切な実行環境を選択します

例:

job("Example") { host("Run it on macOS") { shellScript { location = "./myscript.sh" } requirements { os { type = OSType.Mac } } } }

job.container

container はコンテナーを実行し、このコンテナー内で指定されたコマンドまたはスクリプトを実行します。

container(image: String, init: Container.() -> Unit = {})

container(displayName: String?, image: String, init: Container.() -> Unit = {})

Property

displayName: String? は、求人ページでのジョブ実行結果に表示されるステップ名です。指定しない場合はイメージ名が表示されます。

Property

image: String は上のイメージの名前です

  • Docker Hub(英語)。たとえば、イメージ名で十分です。container(image = "alpine:latest")

  • Space パッケージ。完全なイメージ URL が必要です。例:: container(image = "mycompany.registry.jetbrains.space/p/mpj/mydocker/myimage")

Method

init 関数はコンテナーを構成し、指定されたコマンドとスクリプトを実行します。init 内では次のメソッドとプロパティを使用できます。

Property

mountDir: String は、オートメーションボリュームをマウントする必要があるディレクトリへの絶対パスを設定します。デフォルトでは、/mnt/space 詳細

Property

workDir: String 作業ディレクトリ(英語)へのパス。すべてのコマンドはこのディレクトリから実行されます。デフォルトでは、作業ディレクトリはプロジェクトソースが含まれるディレクトリです: $mountDir/work/{git-repo-name} workDir を使用して以下を設定できます。

  • 作業ディレクトリへの絶対パス。例:

    workDir = "/home/john-doe/myproject"

  • 現在の作業場所への相対パス。例:

    workDir = "myproject"

    $mountDir/work/{git-repo-name}/myproject に解決されます。

shellScript または kotlinScript 内の作業ディレクトリへのパスを取得するために workDir を使用しないでください。代わりに、JB_SPACE_WORK_DIR_PATH 環境変数を使用してください。詳細

Property

user: String は、コンテナー内でコマンドとスクリプトを実行するために使用されるユーザーアカウントを指定します。

Method

args は、デフォルトのイメージコマンドまたは entrypoint の引数を提供します

Method

entrypoint は、デフォルトのイメージコマンドを指定されたイメージコマンドでオーバーライドします。

Method

shellScript は指定されたシェルスクリプトを実行します

Method

kotlinScript は Kotlin コードを実行します

Method

service は、ネットワークアクセス可能なサービス (データベースサーバーなど) を使用してコンテナーを実行します。

Property

env はコンテナーに環境変数を設定します

Method

resources はコンテナーのリソースを制限します (CPU とメモリ)

例:

job("Example") { // in the container with 'gradle' image container(image = "gradle") { // run 'gradle build' shellScript { content = "gradle build" } } }

job.container.args

entrypoint が指定されている場合、argsentrypoint コマンドの引数を提供します。それ以外の場合、args はデフォルトのイメージコマンド (たとえば、 ENTRYPOINT (英語) によって設定される) の引数を提供します。各引数は、args 配列内の個別の文字列である必要があります。複数の args を指定した場合は、最後のものだけが有効になります。

args(vararg args: String)

例:

job("Example args") { container(image = "alpine") { args("echo", "Hello World!") } }

job.container.cache

cache は、プロジェクトの依存関係をファイルリポジトリにキャッシュすることでビルドを高速化します。詳細

cache(init: FileCache.() -> Unit)

Method

init 関数はキャッシュ設定を指定します。

Property

location: CacheLocation は、キャッシュされたファイルをアップロードする必要があるリポジトリを指定します。指定しない場合、オートメーションはデフォルトのファイルリポジトリを使用します。

CacheLocation(val name: String, val remoteBasePath: String) ここで、namePackages 内のリポジトリの名前です。remoteBasePath は基本アップロードパスです (結果のキャッシュパスは remoteBasePath + localPath です)。

Property

localPath: String は、キャッシュされたディレクトリへのパスを指定します。詳細

Property

storeKey: String は、キャッシュされたファイルを含むアーカイブの名前を指定します。storeKey は、参照セットごとに一意である必要があります。詳細

Property

restoreKeys: Iterable<String> は、storeKey で指定されたファイルが見つからない場合のフォールバックキャッシュを指定します。詳細

Property

reuploadWhenFilesChange: Boolean は、変更されたファイルをキャッシュストレージにアップロードするかどうかを指定します。デフォルトでは、true 詳細

例:

job("File caches") { container(displayName = "Use cache", image = "node") { cache { storeKey = "npm-{{ hashFiles('package.json') }}" restoreKeys { +"npm-master" } localPath = "node_modules/*" } // here goes the rest of the script } }

job.container.dockerRegistryConnections

dockerRegistryConnections は、container ステップを実行する前にログインする Docker レジストリを定義します。このステップでは、これらの Docker レジストリのイメージを使用できます。これにより、認証が必要なレジストリのイメージを使用できるようになります。対応するレジストリ接続を最初にプロジェクト設定で宣言する必要があることに注意してください。詳細

dockerRegistryConnections(init: DockerRegistryConnections.() -> Unit)

dockerRegistryConnections 内で、単項 + 演算子を使用して接続を追加します。

例:

job("Example") { container(displayName = "Get image from private registry", image = "some.registry.com/image:1.2.3") { dockerRegistryConnections { // some-registry is the connection key // the connection contains registry URL and access credentials +"some-registry" } // here goes the rest of the script } }

job.container.entrypoint

entrypoint は、デフォルトのイメージコマンドをオーバーライドして、指定されたコマンドを実行します。これは、Docker の ENTRYPOINT (英語) に相当します。コマンド引数は、 args 配列内の個別の文字列として指定する必要があります。複数の entrypoint を指定した場合は、最後のものだけが有効になります。

entrypoint(entryPoint: String)

例:

job("Example entrypoint") { // override the default command set in 'myImage' container(image = "myImage") { entrypoint("/bin/sh") args("echo", "Hello World!") } }

job.container.env

env を使用すると、コンテナーに環境変数を設定できます。オートメーション環境変数を使用すると、現在の実行コンテキストに関するさまざまな情報を取得できることに注意してください。

env = Environment()

Environment クラスは、環境変数を設定するための単一関数を提供します。

Method

set(name: String, value: String)

例:

job("Example") { container(image = "alpine") { env.set("SITE_URL", "staging.mysite.com") } }

job.container.fileArtifacts

fileArtifacts は、ステップによって生成されたファイルアーティファクトをファイルリポジトリにアップロードします。詳細

fileArtifacts(init: FileArtifact.() -> Unit)

Method

init 関数は、アーティファクトのアップロード設定を指定します。

Property

repository: FileRepository は、アーティファクトをアップロードする必要があるリポジトリを指定します。指定しない場合、オートメーションはデフォルトのファイルリポジトリを使用します。

FileRepository(val name: String, val remoteBasePath: String = "") ここで、namePackages 内のリポジトリの名前です。remoteBasePath は、基本アップロードパスです (結果のアーティファクトパスは remoteBasePath + FileArtifact.remotePath です)。

Property

localPath: String は、アップロードする必要があるファイルアーティファクトへのソースパスを指定します。詳細

Property

remotePath: String は、repository.remoteBasePath を基準としたファイルリポジトリ内のファイルアーティファクトへのターゲットパスを指定します。

Property

archive: Boolean は、アーティファクトを zip アーカイブにパックするかどうかを指定します。デフォルトでは、false

Property

optional: Boolean : true の場合、キャッシュされたファイルが見つからなくてもジョブは失敗しません。デフォルトでは、false

Property

onStatus: OnStatus は、アーティファクトをアップロードするための条件を指定します。可能な値:

  • OnStatus.SUCCESS – (デフォルト) ジョブが正常に終了した場合にのみファイルをアップロードします。

  • OnStatus.ERROR – ジョブがエラーで終了した場合にのみファイルをアップロードします。

  • OnStatus.ALWAYS – 常にファイルをアップロードしてください。

例:

job("Generate zip file") { container(image = "ubuntu") { // Here goes some code... fileArtifacts { localPath = "build/build.zip" remotePath = "{{ run:number }}/build.zip" } } }

job.container.fileInput

fileInput は、指定されたソースの 1 つからファイルを読み込みます。詳細

fileInput(init: FileInput.() -> Unit)

Method

init 関数は、アーティファクトのアップロード設定を指定します。

Property

source: FileSource はファイルソースを指定します。

  • FileArtifact( val repositoryName: String, val path: String, var optional: Boolean = false, var extract: Boolean = false, init: FileArtifact.() -> Unit = {}, ) ここで:

    • name はファイルリポジトリの名前です。

    • path は、ファイルリポジトリのルートを基準としたファイルへの相対パスです。

    • optional は、ファイルが存在しない場合でもビルドを続行できるかどうかを定義します。

    • extract は、アーカイブをローカルパスに抽出するかどうかを定義します。

  • Text( val value: String ) ここで、value はファイルの内容を設定する文字列です。

Property

localPath: String は、ファイルを作成する必要があるターゲットパスを指定します。詳細

例:

job("File artifacts") { container(displayName = "Create file", image = "ubuntu") { fileInput { source = FileSource.FileArtifact("repo-name", "artifacts/remote-file.txt") localPath = "local-file.txt" } // here goes the rest of the script } }

job.container.kotlinScript

kotlinScript は任意の Kotlin コードを実行します。複数の kotlinScript を指定した場合、最後のものだけが実行されます。Kotlin スクリプトを実行するには、使用するコンテナーイメージに JRE/JDK 11 以降が含まれている必要があることに注意してください。

kotlinScript(init: ProcessKotlinScript.(ScriptAPI) -> Unit)

例:

job("Example kotlin script") { container(image = "amazoncorretto:17-alpine") { kotlinScript { api -> if (api.gitBranch() == "refs/heads/main") { println("Running in main branch") } else { println("Running in custom branch") } } } }
job("Example script") { container(image = "amazoncorretto:17-alpine") { kotlinScript { api -> val totalMembers = api.space().teamDirectory.stats.getAllStats().totalMembers val user = ChannelIdentifier.Profile(ProfileIdentifier.Username("Anna")) val msg = ChatMessage.Text("Hi! Employees total is $totalMembers") api.space().chats.messages.sendMessage(channel = user, content = msg) } } }

kotlinScript は、さまざまな API へのアクセスを提供します。API を使用すると、特定の Space モジュールや Gradle などのビルドツールを操作できます。現在、次の API が利用可能です。

機能

戻り値

説明

gradlew(vararg args: string)

Int

プロジェクトソースから Gradle ラッパーを使用して Gradle コマンドを実行します。例: api.gradlew("assemble") 詳細

spaceUrl()

String

Space インスタンスの URL を返します。

gitBranch()

String

現在の Git ブランチの名前を返します。例: if api.gitBranch().contains("dev")

gitRevision()

String

現在の Git リビジョン番号を返します。例: if api.gitRevision() == "..."

executionNumber()

String

現在のオートメーションスクリプトの実行数を返します。たとえば、この番号を使用してアプリケーションのバージョン番号を生成できます。

projectId() および projectKey()

String

現在のプロジェクトの ID とキーを返します。

spaceClientId() および spaceClientSecret()

String

現在のクライアント ID とシークレットを返します。これらは、現在のスクリプトに対して発行される一時的な OAuth 2.0 認証情報です。スクリプトはこれらを使用して、さまざまな Space モジュールで認証を行います。例: スクリプトアーティファクトを公開するために、パッケージリポジトリでの認証に必要になる場合があります。

parameters()

String

Kolin スクリプトでパラメーターを使用できるようにします。詳細

secrets()

String

Kolin スクリプトでプロジェクトシークレットを使用できるようにします。詳細

fileShare()

ジョブステップ間でファイルを共有できます。詳細

space()

さまざまな Space モジュールを操作できます。例:

  • space().chats : チャットにメッセージを送信できます。

  • space().packages : パッケージ内のパッケージリポジトリを操作できます。

  • space().projects : プロジェクトを管理できます。

  • その他。

Space モジュール API は Space HTTP API を通じて機能します。つまり、space() は Kotlin ベースの HTTP API クライアントです。詳細

job.container.resources

resources は、コンテナーのリソースを制限します。デフォルトのリソース制約は次のとおりです。

  • 2 つの仮想 CPU

  • 7800MB のメモリ

resources(init: ExplicitResources.() -> Unit)

Method

init 関数はリソース制約を指定します。init 内では次のプロパティを使用できます。

Property

cpu: Any? は計算機能 (CPU ユニット単位) を制限します。cpu および .mcpu ユニットをサポートします。例:

  • .25 vCPU の 250.mcpu または 0.25.cpu

  • .5 vCPU の 500.mcpu または 0.5.cpu

  • 1 vCPU の 1000.mcpu または 1.cpu

  • その他。

Property

memory: Any? はメモリを制限します。MB および GB の mb および gb ユニットをサポートします。例: 1024.mb または 1.gb

例:

job("Example") { container(image = "alpine") { resources { cpu = 1.cpu memory = 2000.mb } } }

job.container.requirements

requirements は、ステップの実行に使用する必要があるホストマシンの要件を指定します。Space クラウドではなく特定のワーカーで container ステップを含むジョブを実行する場合は、requirements を指定します。詳細

requirements(init: ContainerRequirementsBuilder.() -> Unit)

Method

init 関数は、ホストマシンに対する要件を指定します。

Method

workerTags : ユーザー作成のタグによって適切なワーカーを選択します

例:

job("Example") { container(displayName = "Run in a worker", image = "amazoncorretto:17-alpine") { shellScript { location = "./myscript.sh" } requirements { workerTags("Pool1") } } }

job.container.runIf

runIf を使用すると、特定の条件でステップを実行できます。runIf が空の文字列、false、または 0 を返すコードブロックの場合、このステップはスキップされます。詳細

runIf(condition: String)

例:

job("Example") { container(displayName = "Check branch", image = "ubuntu") { kotlinScript { api -> api["isMainBranch"] = (api.gitBranch() == "refs/heads/main").toString() } } container(displayName = "Check branch", image = "ubuntu") { // This step will run only if the branch is "main" runIf("{{ isMainBranch }}") // ... } }

job.container.service

service は、ネットワークからアクセスできるサービスを使用してコンテナーを実行します。詳細

service(image: String, init: Service.() -> Unit = {})

Property

image: String は、Docker Hub(英語)Space パッケージ、または別のリポジトリにあるイメージの名前です。

Method

init 関数はコンテナーを構成し、指定されたコマンドとスクリプトを実行します。init 内では次のメソッドとプロパティを使用できます。

Method

alias(alias: String) はコンテナーにネットワークホスト名を指定します。指定しない場合、ホスト名は image 名に基づいて生成されます。

Property

user: String は、コンテナー内でコマンドとスクリプトを実行するために使用されるユーザーアカウントを指定します。

Method

args は、デフォルトのイメージコマンドまたは entrypoint の引数を提供します

Method

entrypoint は、デフォルトのイメージコマンドを指定されたイメージコマンドでオーバーライドします。

Method

kotlinScript は Kotlin コードを実行します

Property

env はコンテナーに環境変数を設定します

Method

resources はコンテナーのリソース (CPU とメモリ) を制限します。サービスリソースについて詳しく見る

例:

job("ping") { container(image = "alpine") { // ping service 5 times shellScript { content = "ping -c 5 db" } service("mysql:5.7") { alias("db") env["MYSQL_ROOT_PASSWORD"] = "pwd1234" } } }

job.container.shellScript

shellScript は、提供されたシェルスクリプトを実行します。

shellScript(init: ContainerShellScript.() -> Unit)

Method

init 関数は、スクリプトとスクリプトインタープリターを指定します。init 内では次のプロパティを使用できます。

Property

interpreter: String は、スクリプトの実行に使用されるインタープリターを指定します。デフォルトでは、/bin/sh

Property

content: String? はシェルスクリプトの内容を指定します。これは複数行の文字列にすることができます。

Property

location: String? は、シェルスクリプトファイルへのパスを指定します。これは、絶対パスまたは作業ディレクトリからの相対パスの場合があります。

Method

args(vararg args: String)args(args: Collection<String>) は、location で指定されたスクリプトファイルの引数を提供します。

例:

job("Example shell scripts") { container(image = "ubuntu") { shellScript { interpreter = "/bin/bash" content = """ echo 'echo Username: $1 Password: $2' >> /mnt/space/share/myscript.sh chmod +x /mnt/space/share/myscript.sh """ } } container(image = "ubuntu") { shellScript { location = "/mnt/space/share/myscript.sh" args("anna", "1234") } } // In job logs, we'll see 'Username: anna Password: 1234' }

chmod +x を使用してスクリプトファイルを実行可能としてマークする必要はないことに注意してください。オートメーションは、location で指定されたスクリプトファイルに「実行可能」フラグを自動的に設定します。

job.host

host は、指定されたスクリプトをホストマシン上で直接実行します。これは、ホスト型またはクラウドワーカーである可能性があります。

host(displayName: String? = null, init: Host.() -> Unit = {})

Property

displayName: String? は、求人ページでのジョブ実行結果に表示されるステップ名です。

Method

init 関数は、指定されたスクリプトを実行します。init 内では次のメソッドとプロパティを使用できます。

Method

shellScript は指定されたシェルスクリプトを実行します

Method

(まだ利用できません)


kotlinScript は Kotlin コードを実行します

Property

env はホストマシンに環境変数を設定します

Method

requirements は、セルフホスト型ワーカーに対する要件を指定します。要件を満たすワーカーのみが、この host ステップでジョブを実行できます。詳細

例:

job("Example") { host("Run build") { // run msbuild shellScript { content = """ C:\"Program Files (x86)"\MSBuild\14.0\Bin\MsBuild.exe MySolution.sln """ } // on any worker with Windows requirements { type = OSType.Windows } } }

job.host.cache

cache は、プロジェクトの依存関係をファイルリポジトリにキャッシュすることでビルドを高速化します。詳細

cache(init: FileCache.() -> Unit)

Method

init 関数はキャッシュ設定を指定します。

Property

location: CacheLocation は、キャッシュされたファイルをアップロードする必要があるリポジトリを指定します。指定しない場合、オートメーションはデフォルトのファイルリポジトリを使用します。

CacheLocation(val name: String, val remoteBasePath: String) ここで、namePackages 内のリポジトリの名前です。remoteBasePath は基本アップロードパスです (結果のキャッシュパスは remoteBasePath + localPath です)。

Property

localPath: String は、キャッシュされたファイルへのパスを指定します。* ワイルドカードをサポートします。

Property

storeKey: String は、キャッシュされたファイルを含むアーカイブの名前を指定します。storeKey は、参照セットごとに一意である必要があります。詳細

Property

restoreKeys: Iterable<String> は、storeKey で指定されたファイルが見つからない場合のフォールバックキャッシュを指定します。詳細

Property

reuploadWhenFilesChange: Boolean は、変更されたファイルをキャッシュストレージにアップロードするかどうかを指定します。デフォルトでは、true 詳細

例:

job("File caches") { host { cache { storeKey = "npm-{{ hashFiles('package.json') }}" restoreKeys { +"npm-master" } localPath = "node_modules/*" } // here goes the rest of the script } }

job.host.dockerBuildPush

dockerBuildPush は、セルフホストまたは Space Cloud ワーカーで Docker イメージを構築および公開するために使用される特別なヘルパーブロックです。詳細

dockerBuildPush(displayName: String? = null, init: DockerBuildPushAction.() -> Unit)

Property

displayName: String? は、ジョブログに表示されるステップ名を指定します。

Method

init 関数は、docker build および docker push コマンドを実行するラッパーです。init 内では次のプロパティを使用できます。

Property

context: String? はパスを Docker コンテキスト(英語)に設定します。デフォルトでは、これは作業ディレクトリです。

Property

file: String? は、プロジェクトルートを基準にして Dockerfile へのパスを設定します。file が指定されていない場合、Docker は 'context'/Dockerfile でファイルを検索します。

Property

labels: DockerLabels はイメージのラベル(英語)を設定します。文字列のキーと値のストレージとして使用します: labels["key"] = "value"

Property

args: DockerBuildArgsビルド時変数(英語)を設定します。文字列のキーと値のストレージとして使用します: args["key"] = "value"

Property

target: String? はターゲットのビルド段階を設定します。指定すると、docker build は、結果のイメージの最終段階であるかのように、指定された名前のビルド段階で停止します。対象ステージ以降のコマンドはスキップされます。これは、複数のビルドステージを持つ Dockerfile にのみ関係します。

Property

platform: String? を使用すると、別のデフォルトプラットフォーム ( linux/arm64 など) を使用してイメージを構築できます。可能な値のリスト(英語)を参照してください。OCI イメージ仕様の制限により、結果のイメージは CPU バリアントに関するメタデータを提供できません。

重要: ジョブを実行するワーカーは、指定されたプラットフォームをサポートしていない可能性があります。

Property

extraArgsForBuildCommand: List<String> は、docker build コマンドに提供される引数の生のリストです (例: extraArgsForBuildCommand = listOf("--build-arg", "HTTP_PROXY=http://10.20.30.2:1234"))

Property

extraArgsForPushCommands: List<String> は、docker push コマンドに提供される引数の生のリストです。

Property

push: Boolean は、ステップで docker push コマンドを実行する必要があるかどうかを指定します。デフォルトでは、true

Method

tags(configure: DockerTags.() -> Unit) はイメージタグ(英語)を設定します。tags ブロック内で、単項 + 演算子を使用してタグを追加します。

tags { +"registry.myorg.jetbrains.space/p/proj/my-registry/my-image:latest" +"registry.myorg.jetbrains.space/p/proj/my-registry/my-image:{{ run:id }}" +"ghcr.io/my-image:latest" }

例:

job("Build and push Docker") { host("Build and push a Docker image") { dockerBuildPush { push = true context = "docker" // ./docker/Dockerfile file = "docker/Dockerfile" tags { +"mycompany.registry.jetbrains.space/p/prjkey/mydocker/myimage:1.0.${"$"}JB_SPACE_EXECUTION_NUMBER" } } } }

job.host.dockerRegistryConnections

dockerRegistryConnections は、host ステップを実行する前にログインする Docker レジストリを定義します。これにより、host ステップ内で認証を必要とするレジストリを使用できるようになります。例: このようなリポジトリにイメージを公開できます。対応するレジストリ接続を最初にプロジェクト設定で宣言する必要があることに注意してください。詳細

dockerRegistryConnections(init: DockerRegistryConnections.() -> Unit)

dockerRegistryConnections 内で、単項 + 演算子を使用して接続を追加します。

例:

job("Example") { host { dockerRegistryConnections { // some-registry-1 and -2 are the connection keys // the connection contains registry URL and access credentials +"some-registry-1" +"some-registry-2" } dockerBuildPush { tags { +"myimages/myimage:1.0.1" } } } }

job.host.env

env を使用すると、ホストマシン上で環境変数を設定できます。オートメーション環境変数を使用すると、現在の実行コンテキストに関するさまざまな情報を取得できることに注意してください。

env = Environment()

Environment クラスは、環境変数を設定するための単一関数を提供します。

Method

set(name: String, value: String)

例:

job("Example") { container(image = "alpine") { // one way to set env var env.set("SITE_URL", "staging.mysite.com") // another way to set env var env["USERNAME"] = "anna" } }

job.host.fileArtifacts

fileArtifacts は、ステップによって生成されたファイルアーティファクトをファイルリポジトリにアップロードします。詳細

fileArtifacts(init: FileArtifact.() -> Unit)

Method

init 関数は、アーティファクトのアップロード設定を指定します。

Property

repository: FileRepository は、アーティファクトをアップロードする必要があるリポジトリを指定します。指定しない場合、オートメーションはデフォルトのファイルリポジトリを使用します。

FileRepository(val name: String, val remoteBasePath: String = "") ここで、namePackages 内のリポジトリの名前です。remoteBasePath は、基本アップロードパスです (結果のアーティファクトパスは remoteBasePath + FileArtifact.remotePath です)。

Property

localPath: String は、アップロードする必要があるファイルアーティファクトへのソースパスを指定します。

Property

remotePath: String は、repository.remoteBasePath を基準としたファイルリポジトリ内のファイルアーティファクトへのターゲットパスを指定します。

Property

archive: Boolean は、アーティファクトを zip アーカイブにパックするかどうかを指定します。デフォルトでは、false

Property

optional: Boolean または true の場合、キャッシュされたファイルが見つからなくてもジョブは失敗しません。デフォルトでは、false

Property

onStatus: OnStatus は、アーティファクトをアップロードするための条件を指定します。可能な値:

  • OnStatus.SUCCESS – (デフォルト) ジョブが正常に終了した場合にのみファイルをアップロードします。

  • OnStatus.ERROR – ジョブがエラーで終了した場合にのみファイルをアップロードします。

  • OnStatus.ALWAYS – 常にファイルをアップロードしてください。

例:

job("Generate zip file") { host { // Here goes some code... fileArtifacts { localPath = "build/build.zip" remotePath = "{{ run:number }}/build.zip" } } }

job.host.fileInput

fileInput は、指定されたソースの 1 つからファイルを読み込みます。詳細

fileInput(init: FileInput.() -> Unit)

Method

init 関数は、アーティファクトのアップロード設定を指定します。

Property

source: FileSource はファイルソースを指定します。

  • FileArtifact( val repositoryName: String, val path: String, var optional: Boolean = false, var extract: Boolean = false, init: FileArtifact.() -> Unit = {}, ) ここで:

    • name はファイルリポジトリの名前です。

    • path は、ファイルリポジトリのルートを基準としたファイルへの相対パスです。

    • optional は、ファイルが存在しない場合でもビルドを続行できるかどうかを定義します。

    • extract は、アーカイブをローカルパスに抽出するかどうかを定義します。

  • Text( val value: String ) ここで、value はファイルの内容を設定する文字列です。

Property

localPath: String は、ファイルを作成する必要があるターゲットパスを指定します。

例:

job("File artifacts") { host { fileInput { source = FileSource.FileArtifact("repo-name", "artifacts/remote-file.txt") localPath = "local-file.txt" } // here goes the rest of the script } }

job.host.kotlinScript

kotlinScript は任意の Kotlin コードを実行します。

kotlinScript(init: ProcessKotlinScript.(ScriptAPI) -> Unit)

例:

job("Example Kotlin script") { host { kotlinScript { api -> if (api.gitBranch() == "refs/heads/main") { println("Running in main branch") } else { println("Running in custom branch") } } } }
job("Example Kotlin script") { host { kotlinScript { api -> val totalMembers = api.space().teamDirectory.stats.getAllStats().totalMembers val user = ChannelIdentifier.Profile(ProfileIdentifier.Username("Anna")) val msg = ChatMessage.Text("Hi! Employees total is $totalMembers") api.space().chats.messages.sendMessage(channel = user, content = msg) } } }

kotlinScript は、さまざまな API へのアクセスを提供します。API を使用すると、特定の Space モジュールや Gradle などのビルドツールを操作できます。利用可能な API の完全なリストについては、 job.container.kotlinScript を参照してください。

job.host.requirements

requirements は、ステップの実行に使用する必要があるホストマシンの要件を指定します。詳細

requirements(init: HostRequirementsBuilder.() -> Unit)

Method

init 関数は、ホストマシンに対する要件を指定します。

Method

workerTags : ユーザー作成のタグによって適切なワーカーを選択します

Method

os : ホストマシンのオペレーティングシステムに応じて適切なワーカーを選択してください

Method

resources : ホストマシンで利用可能なリソース (CPU コアと RAM) に応じて、適切なワーカーを選択します。

例:

job("Example") { host("Run it on macOS") { shellScript { location = "./myscript.sh" } requirements { os { type = OSType.Mac } } } }

job.host.requirements.os

os は、必要なオペレーティングシステムを指定します。自動化は、指定されたオペレーティングシステムを使用するワーカーにのみジョブをルーティングします。詳細

os(configure: OSRequirementsBuilder.() -> Unit)

Method

configure 関数は、オペレーティングシステムの要件を指定します。

Property

type: OSType? は、必要な OS の種類を指定します。可能な値:

  • OSType.Linux

  • OSType.Mac

  • OSType.Windows

Property

name: String? は必要な OS 名を指定します

Property

version: String? は必要な OS バージョンを指定します

Property

arch: String? は、必要な OS アーキテクチャを指定します。例: x86 または amd64

例:

job("Example") { host("Run it on Ubuntu") { shellScript { location = "./myscript.sh" } requirements { os { type = OSType.Linux version = "ubuntu-20.02" arch = "x86_64" } // run on Linux Mint // os { // name = "Linux Mint" // arch = "x86" // } } } }

job.host.requirements.resources

resources は、ホストマシン上で利用可能なシステムリソース (CPU コアと RAM) に対する要件を指定します。自動化は、十分なリソースを持つワーカーにのみジョブをルーティングします。詳細

resources(configure: ResourceRequirementsBuidler.() -> Unit)

Method

configure 関数は、使用可能なシステムリソースの要件を指定します。

Property

minCpu: MilliCpu? は必要な CPU コア数をミリ CPU で指定します。例: 2 つの CPU コアを必要とする場合は、minCpu = 2000 を設定します。それ以外の場合は、測定単位を明示的に指定できます (ミリ CPU の場合は mcpu、CPU の場合は cpu)。たとえば、minCpu = 2.cpu

Property

minMemory: Capacity? は、必要な RAM の量を MB 単位で指定します。例: 1024MB を必要とする場合は、minMemory = 1024 を設定します。それ以外の場合は、測定単位を明示的に指定できます: kbmb、または gb たとえば、minMemory = 1.gb

例:

job("Example") { host("Run it on Ubuntu") { shellScript { location = "./myscript.sh" } requirements { resources { minCpu = 4000 minMemory = 10.gb } } } }

job.host.requirements.workerTags

workerTags は必要なタグを指定します。自動化は、指定されたタグでマークされたワーカーにのみジョブをルーティングします。詳細

workerTags(vararg tags: String)

例:

job("Example") { host("Run it on machines from pool-1 and pool-2") { shellScript { location = "./myscript.sh" } requirements { workerTags("pool-1", "pool-2") } } }

job.host.runIf

runIf を使用すると、特定の条件でステップを実行できます。runIf が空の文字列、false、または 0 を返すコードブロックの場合、このステップはスキップされます。詳細

runIf(condition: String)

例:

job("Example") { host { kotlinScript { api -> api["isMainBranch"] = (api.gitBranch() == "refs/heads/main").toString() } } host { // This step will run only if the branch is "main" runIf("{{ isMainBranch }}") // ... } }

job.host.shellScript

shellScript は、指定されたシェルスクリプトを実行します。

shellScript(displayName: String? = null, init: HostShellScript.() -> Unit)

Property

displayName: String? は、ジョブログに表示されるステップ名を指定します。

Method

init 関数は、スクリプトとスクリプトインタープリターを指定します。init 内では次のプロパティを使用できます。

Property

interpreter: String? は、スクリプトの実行に使用されるインタープリターを指定します。null の場合、デフォルトのインタープリターが使用されます。

  • Linux 上の /bin/sh および macOS

  • Windows 上の cmd

Property

content: String? はシェルスクリプトの内容を指定します。これは複数行の文字列にすることができます。

Property

location: String? は、シェルスクリプトファイルへのパスを指定します。これは、絶対パスまたは作業ディレクトリに対する相対パスの場合があります。

Method

args(vararg args: String)args(args: Collection<String>) は、location で指定されたスクリプトファイルの引数を提供します。

例:

job("Job with host and container") { host("Prepare myscript.sh") { shellScript { interpreter = "/bin/bash" content = """ echo Username: $1' >> ../../share/myscript.sh echo Password: $2' >> ../../share/myscript.sh chmod +x ../../share/myscript.sh """ } } // it's fine to use both 'host' and 'container' in one job container(image = "ubuntu") { shellScript { location = "/mnt/space/share/myscript.sh" args("anna", "1234") } } // In job logs, we'll see 'Username: anna Password: 1234' }

chmod +x を使用してスクリプトファイルを実行可能としてマークする必要はないことに注意してください。オートメーションは、location で指定されたスクリプトファイルに「実行可能」フラグを自動的に設定します。

job.git

git を使用すると、Git リポジトリのチェックアウトオプションを指定できます。git アイテムには 2 つの主な使用例があります。

git(init: DefaultGitRepository.() -> Unit = {})

git(repositoryName: String, init: ExternalGitRepository.() -> Unit = {})

Property

repository: String は、Git リポジトリの名前です。DefaultGitRepository (現在実行中の .space.kts スクリプトを含むもの) の場合は、repository 引数を省略します。例: git {...}

Method

init 関数は、リポジトリのチェックアウトオプションを指定します。init 内では次のプロパティを使用できます。

Property

cloneDir: String は、/mnt/space/work ディレクトリを基準としたリポジトリのチェックアウトパスを指定します。


(ExternalGitRepository のみ)

Property

depth: Int は、リポジトリのコミット履歴の深さ (フェッチする必要がある最後のコミットの数) を指定します。デフォルトでは、1 履歴からすべてのコミットをフェッチするには、UNLIMITED_DEPTH 値を指定します。

Property

refSpec: String は、正確なリポジトリブランチ名、リビジョン番号、または Git refspec マップ形式(英語)を指定します。

Property

clone: Boolean は、コンテナーにマウントされているディスクにプロジェクトリポジトリのクローンを作成するかどうかを指定します。デフォルトでは、true ジョブがプロジェクトコードで動作しないことが想定されている場合は、clone = false を設定します。これにより、ジョブの実行時間が短縮されます。

Property

env: MutableMap<String, String> = mutableMapOf() は、リポジトリのクローン作成時に Git に提供される環境変数を指定します。これは、オートメーションによって設定されるデフォルトの環境変数 (例: GIT_SSH_COMMAND) に追加されるものです。ここで提供される環境変数は、事前定義された環境変数をオーバーライドします。詳細

例:

job("git checkout") { git { // get all commits for the main repo depth = UNLIMITED_DEPTH } // checkout repo-2 as well git("repo-2") { // put it inside /mnt/space/work/secondRepo cloneDir = "secondRepo" // fetch the new-feature branch (not check out!) refSpec = "new-feature" } container(image = "alpine") { shellScript { content = """ echo Checked-out repos: ls /mnt/space/work echo Working dir: pwd """ // Checked-out repos: // /mnt/space/work/main-project-repo // /mnt/space/work/secondRepo // Working dir: // /mnt/space/work/main-project-repo } } }

job.parallel

デフォルトでは、すべての container ステップは job 内で順番に実行されます。これらを並行して実行するには、parallel ブロック内に置きます。

parallel(init: StepFork.() -> Unit)

Method

init 関数には、並列実行する必要がある run ブロックが含まれています。StepFork クラスの sequential メソッドを使用すると、parallel 内で container ステップを連続して実行できます。

例:

job("Example") { // I run before others container(displayName = "Step 1", image = "alpine") { args("echo", "1") } parallel { // I run after 'Step 1' container(displayName = "Step 2", image = "alpine") { args("echo", "2") } // I run along with 'Step 2' container(displayName = "Step 3", image = "alpine") { args("echo", "3") } } }

job.parallel.sequential

sequential は、 parallel ブロック内の container ステップを順番に実行します。

sequential(init: StepSequence.() -> Unit)

Method

init 関数には、連続して実行する必要がある container ステップが含まれています。

例:

job("Example") { // I run before others container(displayName = "Step 1", image = "alpine") { args("echo", "1") } parallel { // I run after 'Step 1' container(displayName = "Step 2", image = "alpine") { args("echo", "2") } sequential { // I run along with 'Step 2' container(displayName = "Step 3", image = "alpine") { args("echo", "3") } // I run after 'Step 3' and along with 'Step 2' container(displayName = "Step 4", image = "alpine") { args("echo", "4") } } } }

job.parameters

parameters ブロックを使用すると、ジョブパラメーターを定義したり、プロジェクトのシークレットとパラメーターを参照したりできます。詳細

parameters(init: Parameters.() -> Unit)

Method

init 関数は、Parameters クラスのメソッドを使用してシークレットとパラメーターを定義します。

Method

text(...) はプレーンテキストパラメーターを定義します。詳細

この関数は次の引数を受け取ります。

name: String はパラメーター名です。スクリプトでパラメーターを参照するには、波括弧の二重表記を使用して任意の文字列でその名前を指定します: {{ parameter-name }}

value: String? = null はパラメーター値です。

description: String? = null は、カスタム実行ウィンドウに表示される説明です。

multiline: Boolean = false は、パラメーターが複数行の文字列値を受け入れることができるかどうかを指定します。カスタム実行オプションに関連します。

allowCustomRunOverride: Boolean = true は、ユーザーがカスタム実行のパラメーター値を変更できるかどうかを指定します。

Method

secret(...) はプロジェクトシークレットを参照します。詳細。この関数は次の引数を受け取ります。

name: String はパラメーター名です。スクリプトでパラメーターを参照するには、波括弧の二重表記 ( {{ parameter-name }}) を使用して文字列でパラメーターの名前を指定します。

value: String? = null はパラメーター値です。通常、これはプロジェクトシークレット ( {{project:auth-token}} など) への参照である必要があります。

description: String? = null は、カスタム実行ウィンドウに表示される説明です。

allowCustomRunOverride: Boolean = true は、ユーザーがカスタム実行のパラメーター値を変更できるかどうかを指定します。

例:

job("Create configured param") { parameters { text("my-param", value = "here goes value") } container("ubuntu") { shellScript { content = "echo {{ my-param }}" } } // Output: // here goes value }

job.startOn

startOn ブロックには、 job をトリガーするイベントが含まれています。

startOn(init: Triggers.() -> Unit)

Method

init 関数は、Triggers クラスのメソッドを使用して、対応するトリガーを設定します。

Method

gitPush : トリガーはデフォルトで有効になっています

Method

schedule

Method

gitBranchDeleted

Method

codeReviewOpened

Method

codeReviewClosed

例:

job("example") { startOn { codeReviewOpened{} } }

job.startOn.gitPush

gitPush は、コミットがプロジェクトリポジトリにプッシュされた後にジョブを実行します。デフォルトでは、プロジェクトに対して gitPush トリガーが有効になっています。重要: 他のトリガーをジョブに追加すると、gitPush トリガーは無効になります。

gitPush(init: GitPushTrigger.() -> Unit)

Method

init 関数はトリガーを設定します。init 内では次のプロパティを使用できます。

Property

enabled: Boolean はトリガーを有効 / 無効にします。デフォルトでは true

Method

anyBranch() は、トリガーがすべてのブランチに対して有効であることを指定します。詳細

Method

anyBranchMatching(filter: BranchMatcherBuilder.() -> Unit) は、ブランチ名でフィルターを指定します。包含 (+) ルールと除外 (-) ルール、およびアスタリスク (*) ワイルドカードをサポートします。詳細

Method

anyTag() は、トリガーがすべてのタグに対して有効であることを指定します。詳細

Method

anyTagMatching(filter: TagMatcherBuilder.() -> Unit) はタグ名でフィルターを指定します。包含 (+) ルールと除外 (-) ルール、およびアスタリスク (*) ワイルドカードをサポートします。詳細

Method

anyRef() は、トリガーがすべての参照に対して有効であることを指定します。基本的に、ブランチ、コミット、タグ、その他の参照である Git プッシュがジョブをトリガーします。詳細

Method

anyRefMatching(filter: RefMatcherBuilder.() -> Unit) は、完全な参照名でフィルターを指定します。インクルード (+) ルールと除外 (-) ルール、Kotlin 正規表現 (Regex)、およびアスタリスク (*) ワイルドカードをサポートします。完全な参照パスを指定します (例: +"refs/heads/main" 詳細 )。

Method

pathFilter(filter: PathFilter.() -> Unit) は、特定のディレクトリまたはファイル名でフィルターを指定します。サポートには、(+) ルールと除外ルール (-)、アスタリスク (*) および二重アスタリスク (**) ワイルドカードが含まれます。詳細

Property

repository: String は、ジョブが変更を追跡する必要があるプロジェクトリポジトリを指定します。ジョブは、指定されたリポジトリに変更がコミットされた後に開始されます。詳細

例:

job("example") { startOn { // Trigger job on changes in all 'release-*' branches // excluding 'release-main' and release branches // with numbers like 'release-42' // The changes must be only in 'src/mainModule/' and // its subdirectories, but not in the 'myfile.kt' files gitPush { anyBranchMatching { +"release-*" -"release-main" } pathFilter { +"src/mainModule/**" -"**/myfile.kt" } } } }

job.startOn.schedule

schedule でジョブを実行します。例: 1 日 1 回、特定の時間 (UTC タイムゾーン)。

schedule(init: ScheduleTrigger.() -> Unit)

Method

init 関数はトリガーを設定します。init 内では次のメソッドとプロパティを使用できます。

Property

enabled: Boolean はトリガーを有効 / 無効にします。デフォルトでは true

Method

cron(expression: String) は、crontab 形式 (MIN HOUR DAY MONTH DAYOFWEEK) を使用してトリガー時刻 (UTC) を設定します。schedule 内に複数の cron を指定できます。

例:

job("example") { startOn { // every day at 08 AM UTC schedule { cron("0 8 * * *") } } }

job.startOn.gitBranchDeleted

gitBranchDeleted は、git ブランチがプロジェクトリポジトリから削除されるときにジョブを実行します。プロジェクトのデフォルトのブランチ (main) でのみ機能します。

gitBranchDeleted(init: GitBranchDeletedTrigger.() -> Unit = {})

Method

init 関数はトリガーを設定します。init 内では次のプロパティを使用できます。

Property

enabled: Boolean はトリガーを有効 / 無効にします。デフォルトでは true

Method

anyBranch() は、トリガーがすべてのブランチに対して有効であることを指定します。詳細

Method

anyBranchMatching(filter: BranchMatcherBuilder.() -> Unit) は、ブランチ名でフィルターを指定します。包含 (+) ルールと除外 (-) ルール、およびアスタリスク (*) ワイルドカードをサポートします。詳細

Method

anyTag() は、トリガーがすべてのタグに対して有効であることを指定します。詳細

Method

anyTagMatching(filter: TagMatcherBuilder.() -> Unit) はタグ名でフィルターを指定します。包含 (+) ルールと除外 (-) ルール、およびアスタリスク (*) ワイルドカードをサポートします。詳細

Method

anyRef() は、トリガーがすべての参照に対して有効であることを指定します。基本的に、ブランチ、コミット、タグ、その他の参照である Git プッシュがジョブをトリガーします。詳細

Method

anyRefMatching(filter: RefMatcherBuilder.() -> Unit) は、完全な参照名でフィルターを指定します。インクルード (+) ルールと除外 (-) ルール、Kotlin 正規表現 (Regex)、およびアスタリスク (*) ワイルドカードをサポートします。完全な参照パスを指定します (例: +"refs/heads/main" 詳細 )。

例:

job("example") { startOn { gitBranchDeleted { anyRefMatching +"refs/heads/*new-feature*" -"refs/heads/my-new-feature" } } } }

job.startOn.codeReviewOpened

codeReviewOpened は、プロジェクトでコードレビューが開かれるとジョブを実行します。

codeReviewOpened(init: CodeReviewOpenedTrigger.() -> Unit = {})

Method

init 関数はトリガーを設定します。init 内では次のプロパティを使用できます。

Property

enabled: Boolean はトリガーを有効 / 無効にします。デフォルトでは true

Property

branchToCheckout: CodeReviewBranch は、ジョブがチェックアウトするブランチを指定します。可能な値:

  • CodeReviewBranch.MERGE_REQUEST_SOURCE – このコードレビューがマージリクエストの場合はソースブランチをチェックアウトし、一連のコミットのコードレビューの場合はリポジトリのデフォルトのブランチ (通常は main) をチェックアウトします。

  • CodeReviewBranch.MERGE_REQUEST_TARGET – このコードレビューがマージリクエストの場合はターゲットブランチをチェックアウトし、一連のコミットのコードレビューの場合はリポジトリのデフォルトのブランチ (通常は main) をチェックアウトします。

  • CodeReviewBranch.REPOSITORY_DEFAULT – デフォルトのプロジェクトリポジトリ (通常は main) をチェックアウトします。

例:

job("example") { startOn { codeReviewOpened{ branchToCheckout = CodeReviewBranch.MERGE_REQUEST_SOURCE } } }

job.startOn.codeReviewClosed

codeReviewClosed は、プロジェクトでコードレビューが閉じられたときにジョブを実行します。

codeReviewClosed(init: CodeReviewClosedTrigger.() -> Unit = {})

Method

init 関数はトリガーを設定します。init 内では次のプロパティを使用できます。

Property

enabled: Boolean はトリガーを有効 / 無効にします。デフォルトでは true

Property

branchToCheckout: CodeReviewBranch は、ジョブがチェックアウトするブランチを指定します。可能な値:

  • CodeReviewBranch.MERGE_REQUEST_SOURCE – このコードレビューがマージリクエストの場合はソースブランチをチェックアウトし、一連のコミットのコードレビューの場合はリポジトリのデフォルトのブランチ (通常は main) をチェックアウトします。

  • CodeReviewBranch.MERGE_REQUEST_TARGET – このコードレビューがマージリクエストの場合はターゲットブランチをチェックアウトし、一連のコミットのコードレビューの場合はリポジトリのデフォルトのブランチ (通常は main) をチェックアウトします。

  • CodeReviewBranch.REPOSITORY_DEFAULT – デフォルトのプロジェクトリポジトリ (通常は main) をチェックアウトします。

例:

job("example") { startOn { codeReviewClosed{ branchToCheckout = CodeReviewBranch.MERGE_REQUEST_SOURCE } } }

job.failOn

failOn ブロックには、 job が失敗したとみなされる条件が含まれています。デフォルトでは、失敗したテストとゼロ以外の終了コードが失敗条件となります。

failOn(init: FailureConditions.() -> Unit)

Method

init 関数は、FailureConditions クラスのメソッドを使用して、対応する障害条件を設定します。

Method

nonZeroExitCode : デフォルト状態

Method

testFailed : デフォルト状態

Method

outOfMemory : デフォルト状態

Method

timeOut : デフォルト状態

job("example") { failOn { testFailed { enabled = false } } }

job.failOn.nonZeroExitCode

nonZeroExitCode では、ジョブがゼロ以外のステータスコード(英語)を返した場合、ジョブは失敗したと見なされます。これはデフォルトの障害状態です。

nonZeroExitCode(init: NonZeroExitCodeCondition.() -> Unit)

Method

init 関数で条件を設定します。init 内では次のプロパティを使用できます。

Property

enabled: Boolean は条件を有効または無効にします。デフォルトでは true

job("example") { failOn { // disable nonzero code condition nonZeroExitCode { enabled = false } } }

job.failOn.testFailed

testFailed では、ジョブの実行中に少なくとも 1 つのテストが失敗した場合、ジョブは失敗したとみなされます。これはデフォルトの障害状態です。自動化は、ジョブ出力を解析することによって、失敗したテストを検出します。現在、Gradle テスト出力のみがサポートされています。

testFailed(init: TestFailedCondition.() -> Unit)

Method

init 関数で条件を設定します。init 内では次のプロパティを使用できます。

Property

enabled: Boolean は条件を有効または無効にします。デフォルトでは true

例:

job("example") { failOn { // disable testFailed condition testFailed { enabled = false } } }

job.failOn.outOfMemory

outOfMemory では、いずれかのジョブコンテナーでメモリが不足すると、ジョブは失敗したとみなされます (OOMKilled イベントに基づいて)。これはデフォルトの障害状態です。

outOfMemory(init: OutOfMemoryCondition.() -> Unit)

Method

init 関数で条件を設定します。init 内では次のプロパティを使用できます。

Property

enabled: Boolean は条件を有効または無効にします。デフォルトでは true

例:

job("example") { failOn { // disable outOfMemory condition outOfMemory { enabled = false } } }

job.failOn.timeOut

timeOut では、指定された期間内にジョブを開始できない場合、または指定された期間よりも長く実行された場合、ジョブは失敗したとみなされます。タイムアウト期間を指定するには、timeOut 内で timeOutInMinutes キーワードを使用する必要があります。デフォルトおよび最大許容タイムアウトは 120 分です。

timeOut(init: TimeOutFailedCondition.() -> Unit)

Method

init 関数で条件を設定します。init 内では次のプロパティを使用できます。

Property

enabled: Boolean は条件を有効または無効にします。デフォルトでは true

Property

runningTimeOutInMinutes: Int または timeOutInMinutes (非推奨) は、ジョブの実行を許可する時間を分単位で定義します。タイムアウトが経過すると、ジョブは失敗したとみなされます。デフォルトでは 120 120 より大きくすることはできません

Property

waitingToStartTimeOutInMinutes: Int は、ジョブが実際に実行されるまで保留状態で過ごせる時間を分単位で定義します。保留状態になる理由はさまざまです。たとえば、サブスクリプションプランで利用できるすでに実行中のジョブの量が制限に達した、クラウドプールに利用可能なマシンがないなどです。デフォルトでは 60 60 より大きくすることはできません

例:

job("example") { failOn { // fail after 15 minutes timeOut { runningTimeOutInMinutes = 15 } } }

job.volumeSize

volumeSize は、コンテナーにマウントされるディスクのサイズを設定します。ディスクにはプロジェクトリポジトリが含まれています。デフォルトでは 5 GiB。MB および GB の mb および gb ユニットをサポートします。例: 10000.mb または 10.gb

volumeSize: Any?

例:

job("example") { // mount 10GB volume volumeSize = 10.gb }

job.kaniko

kaniko は、Docker イメージを構築して公開するために使用される特別なステップです。このステップは、Kaniko ツールを使用したカスタムイメージに基づいてコンテナー内で実行されます。詳細

kaniko(init: KanikoStep.() -> Unit)

Method

init 関数を使用すると、docker build および docker publish コマンドを実行できます。

Method

beforeBuildScript(init: ContainerShellScript.() -> Unit) は、init で指定されたシェルスクリプトを実行します。スクリプトは build の前に実行されます。/busybox/sh を使用します。

Method

build(init: KanikoBuild.() -> Unit) は、init で指定されたプロパティを使用して docker build を実行します。

Property

context: String? はパスを Docker コンテキスト(英語)に設定します。デフォルトでは、これは作業ディレクトリです。

Property

dockerfile: String? は、context を基準にして Dockerfile へのパスを設定します。このオプションは、Kaniko の --dockerfile 引数に相当します。

Property

labels: DockerLabels はイメージのラベル(英語)を設定します。文字列のキーと値のストレージとして使用します: labels["key"] = "value"

Property

args: DockerBuildArgsビルド時変数(英語)を設定します。文字列のキーと値のストレージとして使用します: args["key"] = "value"

Property

target: String? はターゲットのビルド段階を設定します。指定すると、docker build は、結果のイメージの最終段階であるかのように、指定された名前のビルド段階で停止します。対象ステージ以降のコマンドはスキップされます。これは、複数のビルドステージを持つ Dockerfile にのみ関係します。

Property

customPlatform: String? を使用すると、別のデフォルトプラットフォーム ( linux/arm64 など) を使用してイメージを構築できます。可能な値のリスト(英語)を参照してください。このオプションは、customPlatform Kaniko オプションに相当します。"linux/arm/v5" など、3 番目のパラメーターとして追加して CPU バリアントを指定することもできます。現在、CPU バリアントは、ここにリストされている ARM アーキテクチャでのみ使用されることが知られています。OCI イメージ仕様の制限により、結果のイメージは CPU バリアントに関するメタデータを提供できません。

重要: ジョブを実行するワーカーは、指定されたプラットフォームをサポートしていない可能性があります。

Method

registryMirrors(vararg mirrors: String)registryMirrors(mirrors: Collection<String>)registryMirrors(configure: DockerRegistryMirrors.() -> Unit) は、デフォルトの index.docker.io の上にレジストリミラーを追加します。最初のミラーでイメージが見つからない場合、Kaniko は次のミラーを試し、最終的にはデフォルトのレジストリに戻ります。例:

registryMirrors { +"mirror.gcr.io" if (runningOnAws) { +"public.ecr.aws" } }

Method

push(name: String, init: (DockerPush.() -> Unit)? = null)docker push を実行します。

Property

name: String はイメージ名を設定します。レジストリ URL を含める必要があります。例: mycompany.registry.jetbrains.space/mydocker/myimage

Method

init 関数を使用すると、追加の docker push 設定を指定できます。

Method

tags(vararg tagNames: String)tags(tagNames: Collection<String>)tags(configure: DockerTags.() -> Unit) はイメージタグ(英語)を設定します。タグを追加するには、単項 + 演算子を使用します。

tags { +"my-tag" if (isProductionBuild) { +"latest" } }

Method

resources(init: ExplicitResources.() -> Unit) を使用すると、 job.container.resources と同じ方法でコンテナーリソースを指定できます

例:

job("Build and push Docker") { container(displayName = "Build sources", image = "amazoncorretto:17-alpine") { shellScript { content = """ ./gradlew build cp output mnt/space/share """ } } kaniko { beforeBuildScript { content = "cp mnt/space/share docker" } build { context = "docker" // ./docker/config/Dockerfile dockerfile = "config/Dockerfile" labels["vendor"] = "mycompany" args["HTTP_PROXY"] = "http://10.20.30.2:1234" } push("mycompany.registry.jetbrains.space/mydocker/myimage") { tags{ +"version1.0" +"stable" } } } }

job.gradlew

gradlew は、プロジェクトディレクトリの Gradle ラッパーを使用して Gradle コマンドを実行する特別なヘルパーアイテムです。gradlew を使用してビルドスクリプトを簡素化します。詳細

gradlew(image: String? = null, vararg args: String, init: Project.Container.() -> Unit = {})

Property

image: String? は、Docker Hub(英語)Space パッケージ、または別のリポジトリにあるイメージの名前です。イメージには JRE/JDK 11 以降が含まれている必要があります。指定しない場合は、openjdk:latest が使用されます。

Property

args: String は 'gradlew' の引数を指定します

Method

init は、「gradlew」コマンドの実行後に、指定されたコマンドとスクリプトを実行します。

例:

job("Example") { // run 'gradlew build' gradlew(null, "build") }

job.warmup (非推奨)

warmup を使用すると開発環境用のウォームアップデータを準備するが可能になります。

warmup(ide: Ide, profileId: String? = null, init: Warmup.() -> Unit = {})

Property

ide: Ide は、リモート開発用の IDE を指定します。ウォームアップ中に、Space は指定された IDE と互換性のある形式でプロジェクトインデックスを構築します。可能性があるのは: Ide.FleetIde.IdeaIde.CLionIde.GoLandIde.PhpStormIde.PyCharmIde.RubyMineIde.WebStormIde.Rider です。

Property

profileId: String? (オプション) はウォームアップデータ識別子です。これを使用して、Space UI でさまざまなウォームアップデータを区別できます。現在ご利用いただけません。

Method

init 機能を使用すると、特定のオートメーションワーカーでウォームアップスクリプトを実行できます。

Property

devfile: String? は、プロジェクトの devfile へのパスを指定します。ウォームアップデータを準備するために、devfile で指定されたイメージに基づいてジョブがコンテナーで実行されます。詳細

Property

ideVersion: IdeVersion? (オプション) は、Space がインデックスを構築する必要がある IDE のバージョンを指定します。ideVersionデフォルトの IDE バージョンをオーバーライドします。考えられる使用箇所:

  • ideVersion = IdeVersion.Specific("2022.1", "Stable") : 特定のバージョンの場合。

  • ideVersion = IdeVersion.LatestOfQuality("EAP1") : 特定のリリース状態の場合。

Method

requirements(init: HostRequirementsBuilder.() -> Unit) は、ウォームアップスクリプトの実行に使用する必要があるホストマシンの要件を指定します。詳細

Property

scriptLocation: String? は、ウォームアップスクリプトへのパスを指定します。スクリプトは .sh ファイルである必要があります。

例:

job("Prepare data and build indexes for IDEA") { warmup(ide = Ide.Idea) { scriptLocation = "./dev-env-warmup.sh" devfile = "./devfile.yaml" } }

job.warmup.env

env を使用すると、開発環境コンテナーに環境変数を設定できます。オートメーション環境変数を使用すると、現在の実行コンテキストに関するさまざまな情報を取得できることに注意してください。

env = Environment()

Environment クラスは、環境変数を設定するための単一関数を提供します。

Method

set(name: String, value: String)

例:

job("My project warmup data") { warmup(ide = Ide.Fleet, profileId = "fleet") { // some env var that might be needed for the script env["USERNAME"] = "SpaceUser" requirements { workerTags("fleet") } scriptLocation = "./dev-env-warmup.sh" } }

関連ページ:

実行環境

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("Build and publish") { container(displayName = "Build and notify", image = "gradle:7.1-jre11") { kotlinScript { api -> try { api.gradle("build") } catch (ex:...