セルフホスト型ワーカー
セルフホスト型ワーカーは、Windows、Linux、macOS 上の独自のマシンで実行できる軽量エージェントです。セルフホスト型ワーカーは Space Automation に接続し、ジョブとプロジェクトのソースコードを取得してジョブを実行し、結果を Space にレポートします。
セルフホスト型ワーカーを使用すると、コンテナーでは不可能な CI/CD ワークフローを実行できます。例:
Windows 上で完全な .NET フレームワークアプリケーションを構築します。
特定のハードウェアを使用します。例: Apple ハードウェア上で iOS および macOS アプリケーションを構築する、GPU 上で ML タスクを実行するなど。
Space Cloud が提供するハードウェア構成よりも強力なハードウェア構成を使用します。
どのように機能するのか
セルフホスト型ワーカーエージェントは、
.zip
アーカイブとして、または特別に準備された Docker イメージの一部として配布される Java アプリケーションです。詳細Space にセルフホスト型ワーカーを登録するを実行した後、ホストマシン上でエージェントを実行する必要があります。実行中のエージェントは定期的にステータスを Space に送信します。
エージェントは Space とのプル通信を使用します。エージェントが通信を開始し、Space は受信リクエストにのみ応答します。これは、エージェント側で特定のネットワーク構成が必要ないことを意味します。唯一の要件は、Space インスタンスへのアクセスです。
セルフホスト型ワーカーでジョブを実行するには、ジョブステップに
host
ブロックを使用する必要があります。job("Hello from self-hosted worker") { host("Run echo") { shellScript { content = """ echo "Hello World!" """ } } }重要: Space がこのジョブをセルフホスト型ワーカーにルーティングできるようにするには、このジョブをセルフホスト型ワーカーワーカープールに割り当てる必要があります。これは、デフォルトのワーカープールパラメーターを使用するか、ジョブの
requirements
ブロックを使用して明示的に行うことができます。例:job("Hello from self-hosted worker") { requirements { workerPool = WorkerPools.SELF_HOSTED } host("Run echo") { // ... } }少なくとも 1 つの
host
ステップを持つジョブがトリガーされると、オートメーションはそのジョブに適したワーカーをランダムに選択します。適切なワーカーが見つかると、自動化によってジョブの実行が開始されます。ワーカーエージェント:
ホストマシン上に一時ディレクトリを作成します。
オートメーションスクリプトを含むプロジェクトのソースコードをダウンロードします。
そしてジョブを実行します。
ジョブが完了すると、エージェントは結果をオートメーションに報告し、一時ディレクトリを削除します。
セルフホスト型ワーカーは、Space サブスクリプションプランに基づいて作業時間ごとに請求されます。詳細
ホストマシンの要件
セルフホストワーカーとして使用するホストマシンは、次の要件を満たしている必要があります。
インストール済みのソフトウェア:
Git: どのバージョンでも。
Docker、Docker Compose 1.27.0 以降 :
container
ステップを実行する場合のみ。JRE11 以降 :
kotlinScript
ブロックを使用して Kotlin コードを実行する場合のみ。
重要: Git、Docker、Java へのパスは、システム
PATH
で指定する必要があります。*.jetbrains.space
およびdownload.jetbrains.com
へのアウトバウンド接続は、ホストマシンに対して許可されている必要があります。
ディレクトリ構造と作業ディレクトリ
オートメーションは、プロジェクトデータをこのワーカー上の一時ディレクトリ内に保存します。
さらに詳細に:
{system-temp-dir}/jetbrains/space/automation/worker/data
は、ステップデータのデフォルトの親ディレクトリです。デフォルトのパスを変更するには、
--dataDir
エージェント引数を使用します。shellScript
またはkotlinScript
でこのパスを取得するには、JB_SPACE_STEP_DATA_PATH
環境変数を使用します。.../work/{git-repo-name}
は、プロジェクトソースのデフォルトの場所です。ここで、{git-repo-name}
はプロジェクトの Git リポジトリ名を表します。追加のプロジェクトリポジトリをチェックアウトする方法の詳細については、「ソースコードをチェックアウトする」を参照してください。shellScript
またはkotlinScript
でこのパスを取得するには、JB_SPACE_WORK_DIR_PATH
環境変数を使用します。.../share
は、ファイル共有に使用される外部ストレージです。shellScript
またはkotlinScript
でこのパスを取得するには、JB_SPACE_FILE_SHARE_PATH
環境変数を使用します。ジョブ終了後、ステップデータディレクトリは削除されます。
セルフホスト型ワーカーでは何を実行できますか
コンテナーと同様に、セルフホスト型ワーカーを使用すると、シェルスクリプト (shellScript
) および任意の Kotlin コード (kotlinScript
) を実行できます。
container
とは異なり、host
では shellScript
と kotlinScript
の両方を 1 つのブロックで実行できることに注意してください。例:
セルフホスト型ワーカーを追加する
管理で、自動化ページを開きます。
ワーカーを追加をクリックします。
ワーカー名前およびその他のオプションを指定します。
タグ : ジョブを特定のワーカーにルーティングします。自動化は、特定のタグでマークされたジョブを、同じタグを持つワーカー上でのみ実行します。詳細
プロジェクト :
すべてのプロジェクト : ワーカーは組織内のすべてのプロジェクトで利用できるようになります。このオプションを選択するには、組織の自動化ワーカーの作成権限が必要です。
特定プロジェクト : ワーカーは、選択したプロジェクトでのみ使用できます。プロジェクト管理者ロールを持つプロジェクトのみを選択できます。
ワーカーを追加をクリックすると、ワーカー設定ページに移動します。設定には、割り当てられたタグ、OS、利用可能なリソース、認証トークンに関する情報が含まれます。トークンを安全な場所にコピーします (トークンは、ワーカーの作成直後に 1 回だけ表示されます)。
次のタスクは、ホストマシン上でワーカーエージェントを実行することです。それが起こる前に、ワーカーは初期化されていない状態になります。その方法については、ワーカー設定ページのワーカーのインストール手順に記載されています。ワーカータイプを選択し、指示に従います。
Docker Windows/Linux/macOS 用 : ワーカーは、ホストマシン上で実行されている Docker コンテナー内で実行されます。
例: Linux ホストマシン上のコンテナーでワーカーを実行するには:
docker run \ --log-opt max-size=10m \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /tmp/jetbrains/space/automation/worker:/tmp/jetbrains/space/automation/worker \ -e SPACE_WORKER_SERVERURL=https://mycompany.jetbrains.space \ -e SPACE_WORKER_TOKEN=abc1234 \ public.registry.jetbrains.space/p/space/containers/space-automation-worker:139318- コンテナー内の作業ディレクトリを変更する
コンテナー内で実行する場合、ワーカーの作業ディレクトリは、このコンテナー内にマウントされたホストマシン上のディレクトリになります (2 番目の
-v
引数を参照)。docker run \ --log-opt max-size=10m \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /tmp/jetbrains/space/automation/worker:/tmp/jetbrains/space/automation/worker \ -e SPACE_WORKER_SERVERURL=https://mycompany.jetbrains.space \ -e SPACE_WORKER_TOKEN=abc1234 \ public.registry.jetbrains.space/p/space/containers/space-automation-worker:139318コンテナー内の作業ディレクトリへのパスを変更する場合は、ホストマシン上のマウントされたディレクトリにも同じパスを使用する必要があります。
SPACE_WORKER_DATADIR
環境変数を使用して新しいパスについてワーカーに通知することも必要です。例:docker run \ --log-opt max-size=10m \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /tmp/newdir/worker:/tmp/newdir/worker \ -e SPACE_WORKER_DATADIR=/tmp/newdir/worker \ -e SPACE_WORKER_SERVERURL=https://mycompany.jetbrains.space \ -e SPACE_WORKER_TOKEN=abc1234 \ public.registry.jetbrains.space/p/space/containers/space-automation-worker:139318
Windows/Linux/macOS 用バイナリ : ワーカーは仮想マシンまたはハードウェアマシン上で実行されます。
例: Linux ホストマシンでワーカーを実行するには:
unzip ./space-automation-worker.zip && \ chmod +x ./worker.sh && \ ./worker.sh start \ --serverUrl https://mycompany.jetbrains.space \ --token abc1234- ワーカーバイナリを検証する
ファイルのチェックサムとチェックサム署名をチェックすることで、ダウンロードしたバイナリの信頼性を検証できます。
前提条件
gpg
(バージョン 2.x) がマシンにインストールされています。ツールは https://gnupg.org/download/(英語) からダウンロードできますgpg
へのパスはシステムPATH
内に存在する必要があります。
命令
ワーカーのページのリンクを使用して、チェックサムファイルと署名ファイルをダウンロードします。ファイルをワーカー
.zip
ファイルと同じディレクトリに保存します。ディレクトリには次のファイルが含まれている必要があります。space-automation-worker-windows.zip
: ワーカーでアーカイブします。space-automation-worker-windows.zip.sha256
: アーカイブファイルの SHA256 チェックサム。space-automation-worker-windows.zip.sha256.asc
: チェックサムファイルの署名。
https://download.jetbrains.com/KEYS(英語) から
KEYS
公開キーファイルをダウンロードし、次を実行します。gpg --import KEYSこれをこれまでに行ったことがない場合、出力は次のようになります。
gpg: key 1F7A8F87B9D8F501: 1 signature not checked due to a missing key gpg: /Users/you/.gnupg/trustdb.gpg: trustdb created gpg: key 1F7A8F87B9D8F501: public key "Download <download@jetbrains.com>" imported gpg: Total number processed: 1 gpg: imported: 1 gpg: no ultimately trusted keys found出力内のキー ID が
1F7A8F87B9D8F501
であることを確認してください。以下を実行して署名を検証します。
gpg --verify space-automation-worker-windows.zip.sha256.asc space-automation-worker-windows.zip.sha256出力に
Good signature from "Download <download@jetbrains.com>"
が含まれていることを確認してください次のコマンドを実行して、公開キーの ID が
33FD4BFD33554634053D73C0C2148900BCD3C2AF
であることを確認します。gpg --keyid-format long --list-keys --with-fingerprint 0x33FD4BFD33554634053D73C0C2148900BCD3C2AF出力内のキー ID が
1F7A8F87B9D8F501
であることを確認してください。これにより、ダウンロードされたsha256
ファイルが有効であることが保証されます。sha256
ファイルを使用して、.zip
アーカイブのチェックサムを確認します。certUtil -hashfile space-automation-worker-windows.zip SHA256出力は次のようになります。
SHA256 hash of space-automation-worker-windows.zip: cd5b12d9a8c74accade22f808e5ea18b2a018706d4112d649e1adfdd26187c7d CertUtil: -hashfile command completed successfully.出力内のハッシュ値が
space-automation-worker-windows.zip.sha256
ファイル内の値と等しいことを確認してください。
前提条件
sha256sum
およびgpg
(バージョン 2.x) がマシンにインストールされています。ツールをインストールするには、次のコマンドを実行します。Debian ベースのディストリビューション:
apt install coreutils gpg
RedHat ベースのディストリビューション:
yum install coreutils gpg
またはdnf install coreutils gpg
命令
ワーカーのページのリンクを使用して、チェックサムファイルと署名ファイルをダウンロードします。ファイルをワーカー
.zip
ファイルと同じディレクトリに保存します。ディレクトリには次のファイルが含まれている必要があります。space-automation-worker-linux.zip
: ワーカーでアーカイブします。space-automation-worker-linux.zip.sha256
: アーカイブファイルの SHA256 チェックサム。space-automation-worker-linux.zip.sha256.asc
: チェックサムファイルの署名。
https://download.jetbrains.com/KEYS(英語) から
KEYS
公開キーファイルをダウンロードし、次を実行します。LANG=C gpg --import KEYSこれをこれまでに行ったことがない場合、出力は次のようになります。
gpg: key 1F7A8F87B9D8F501: 1 signature not checked due to a missing key gpg: /Users/you/.gnupg/trustdb.gpg: trustdb created gpg: key 1F7A8F87B9D8F501: public key "Download <download@jetbrains.com>" imported gpg: Total number processed: 1 gpg: imported: 1 gpg: no ultimately trusted keys found出力内のキー ID が
1F7A8F87B9D8F501
であることを確認してください。以下を実行して署名を検証します。
LANG=C gpg --verify space-automation-worker-linux.zip.sha256.asc space-automation-worker-linux.zip.sha256出力に
Good signature from "Download <download@jetbrains.com>"
が含まれていることを確認してください次のコマンドを実行して、公開キーの ID が
33FD4BFD33554634053D73C0C2148900BCD3C2AF
であることを確認します。gpg --keyid-format long --list-keys --with-fingerprint 0x33FD4BFD33554634053D73C0C2148900BCD3C2AF出力内のキー ID が
1F7A8F87B9D8F501
であることを確認してください。これにより、ダウンロードされたsha256
ファイルが有効であることが保証されます。sha256
ファイルを使用して、.zip
アーカイブのチェックサムを確認します。sha256sum -c space-automation-worker-linux.zip.sha256出力は次のようになります。
space-automation-worker-linux.zip: OK
前提条件
sha256sum
およびgpg
(バージョン 2.x) がマシンにインストールされています。たとえば、Homebrew(英語) :brew install coreutils gpg
を使用してツールをインストールできます。命令
ワーカーのページのリンクを使用して、チェックサムファイルと署名ファイルをダウンロードします。ファイルをワーカー
.zip
ファイルと同じディレクトリに保存します。ディレクトリには次のファイルが含まれている必要があります。space-automation-worker-mac.zip
: ワーカーでアーカイブします。space-automation-worker-mac.zip.sha256
: アーカイブファイルの SHA256 チェックサム。space-automation-worker-mac.zip.sha256.asc
: チェックサムファイルの署名。
https://download.jetbrains.com/KEYS(英語) から
KEYS
公開キーファイルをダウンロードし、次を実行します。LANG=C gpg --import KEYSこれをこれまでに行ったことがない場合、出力は次のようになります。
gpg: key 1F7A8F87B9D8F501: 1 signature not checked due to a missing key gpg: /Users/you/.gnupg/trustdb.gpg: trustdb created gpg: key 1F7A8F87B9D8F501: public key "Download <download@jetbrains.com>" imported gpg: Total number processed: 1 gpg: imported: 1 gpg: no ultimately trusted keys found出力内のキー ID が
1F7A8F87B9D8F501
であることを確認してください。以下を実行して署名を検証します。
LANG=C gpg --verify space-automation-worker-mac.zip.sha256.asc space-automation-worker-mac.zip.sha256出力に
Good signature from "Download <download@jetbrains.com>"
が含まれていることを確認してください次のコマンドを実行して、公開キーの ID が
33FD4BFD33554634053D73C0C2148900BCD3C2AF
であることを確認します。gpg --keyid-format long --list-keys --with-fingerprint 0x33FD4BFD33554634053D73C0C2148900BCD3C2AF出力内のキー ID が
1F7A8F87B9D8F501
であることを確認してください。これにより、ダウンロードされたsha256
ファイルが有効であることが保証されます。sha256
ファイルを使用して、.zip
アーカイブのチェックサムを確認します。sha256sum -c space-automation-worker-mac.zip.sha256出力は次のようになります。
space-automation-worker-mac.zip: OK
利用可能なワーカースクリプト引数 (環境変数としても設定 / 取得できることに注意してください):
引数
ENV 変数
説明
--serverUrl
SPACE_WORKER_SERVERURL
Space インスタンスの URL。
--token
SPACE_WORKER_TOKEN
ワーカーに対して発行される認証トークン。トークンは、ワーカー登録中に 1 回だけ表示されます。紛失した場合は、新しいものを生成する必要があります。
--dataDir
SPACE_WORKER_DATADIR
スクリプトがすべての必要なデータ (プロジェクトソース、ファイル共有、オートメーション固有のデータ) をダウンロードするディレクトリへのパスを設定します。
--hostname
SPACE_WORKER_HOSTNAME
セルフホスト型ワーカーのホスト名を指定します。これは主にトラブルシューティングの目的で使用され、ホスト名でワーカーを区別しやすくなります。
--cpu
,--mem
SPACE_WORKER_CPU
,SPACE_WORKER_MEM
ホストマシンで利用可能な CPU と RAM の量を指定します。これらのパラメーターは、エージェントが消費できるリソースの数を制限しません。これらは、オートメーションが利用可能なリソースの量に基づいてジョブに適切なワーカーを選択するのを支援するためにのみ使用されます。詳細
ワーカーを開始すると、ステータスが Healthy に変わる必要があります。
セルフホスト型ワーカーを使用してステップを実行する
オートメーションがワーカーでジョブを実行するには、ジョブに少なくとも 1 つの host
ステップが含まれている必要があります。
host
ステップ内では、container
ステップ内とほぼ同じ DSL 要素を使用できます。主な違いは、host
内で次のこともできることです。
requirements
ブロックを使用すると、ジョブを実行する必要があるワーカーの要件を指定できます。詳細多数の
shellScript
要素を使用します。各スクリプトはジョブログに個別に表示されます。shellScript
とkotlinScript
の両方を 1 つのhost
ブロックで使用します。ワーカー固有の環境変数の番号にアクセスします。
ジョブに特定のワーカーを選択する
特定のジョブを特定のワーカーにルーティングするには、タグ、オペレーティングシステム、および利用可能なシステムリソースなど、さまざまな方法があります。ルーティング条件を指定するには、host
内の requirements
ブロックを使用します。requirements
内で 3 つの条件をすべて指定できます。
オートメーションがジョブに適したワーカーを見つけられない場合、ジョブはブロック状態に切り替わります。
![セルフホスト型ワーカーなし No self-hosted workers](https://resources.jetbrains.com/help/img/space/externalWorkerNoWorkers.png)
タグによるジョブのルーティング
タグ付けは、ジョブを特定のワーカーにルーティングする方法の 1 つです。ワーカーとジョブの両方に同じタグを付ける必要があります。詳細は以下を参照してください。
管理 | 自動化で、必要なワーカーを選択します。
編集をクリックします。
タグには、一意のタグ名を指定します。
必要な
.space.kts
ファイルを開き、特定のhost
のrequirements
ブロックに同じタグを指定します。例:job("Hello from host") { host("Run echo") { shellScript { content = """ echo Hello World! """ } requirements { workerTags("Pool1") } } }
オペレーティングシステムごとにジョブをルーティングする
ワーカーエージェントは、ホストマシンのオペレーティングシステムを Space に自動的に報告します。オペレーティングシステムに基づいて適切なワーカーを選択するには、スクリプトで必要な OS を指定します。
利用可能なリソースに応じてジョブをルーティングする
ワーカーエージェントは、ホストマシンのシステムリソース (CPU コアと RAM) を Space に自動的に報告します。ホストマシンのリソースに基づいて適切なワーカーを選択するには、スクリプトで必要なリソースを指定します。
ワーカーエージェントは、これらすべてのリソースがジョブで使用できることを保証しないことに注意してください。ホストマシン上で実行されている他のプロセスによってリソースがどのように消費されるかについては何も知りません。
特定のワーカーに使用可能なシステムリソースを手動で設定できます。これは、たとえば、特定のワーカーで「重い」ジョブを実行したくない場合に役立ちます。使用可能なリソースを設定するには、--cpu
(mCPU で設定) および --mem
(MB で設定) 引数を指定してワーカーエージェントを実行します。例:
上の例では、実際のシステムリソースに関係なく、ワーカーはシステムに 2 つの CPU コアと 8GB RAM が利用可能であることを Space に報告します。ジョブ内の host
がより多くのリソースを必要とする場合、ワーカーはこのジョブには適していないとみなされます。これらの値は、ワーカーエージェントがマシン上でより多くのリソースを消費することを妨げるものではないことに注意してください。これらの値は、Space がジョブに最適なワーカーを選択するのに役立つだけです。
セルフホスト型ワーカーでコンテナーステップを実行する
セルフホスト型ワーカーを使用すると、host
ステップだけでなく container
ステップも実行できます。container
ステップを実行できるようにするには、ワーカーに Docker および Docker Compose がインストールされている必要があります。
オートメーションは、次のいずれかの場合に、セルフホスト型ワーカーで container
ステップを含むジョブの実行を試行します。
ジョブには
container
ステップとhost
ステップの両方があります。container
ステップにはrequirements
セクションがあります。container
ステップを特定のワーカーにルーティングできるのは、workerTags
を使用する場合のみであることに注意してください。job
にはcontainer
ステップのみがあり (requirements
はありません)、デフォルトのワーカープールパラメーターはセルフホスト型ワーカーに設定されます。
例:
ワーカーを一時停止する
ワーカーを一時的に中断できます。ワーカーエージェントはホストマシン上で実行を続けますが、オートメーションは中断されたワーカーにジョブをルーティングしません。ワーカーに実行中のジョブがまだある場合は、まずジョブを終了してから一時停止状態に切り替えます。
ワーカーを一時停止するには
管理 | 自動化で必要なワーカーを見つけます。
ワーカー設定で、中断をクリックします。
ワーカーをアクティブにするには
管理 | 自動化で必要なワーカーを見つけます。
ワーカー設定で、アクティブにするをクリックします。
ワーカーを削除する
管理 | 自動化で必要なワーカーを見つけます。
ワーカー設定で、削除をクリックします。
ワーカーの削除は即時操作であることに注意してください。ワーカーにまだ実行中のジョブがある場合、ジョブは終了されます。
実行されたステップの履歴を表示する
特定の自己ホスト型ワーカーによって実行されたすべてのステップは、ワーカー履歴に保存されます。
管理 | 自動化で必要なワーカーを見つけます。
ワーカー設定で、アクティビティタブを開きます。
ワーカー状態
状態 | 説明 |
---|---|
初期化されていません | ワーカーはこれまで Space に接続したことがありません。これは、Space に登録した後のワーカーの初期状態です。 |
ヘルス | ワーカーは稼働中です |
不ヘルス | ワーカーのディスク容量が不足しています: 自動化はジョブをこのワーカーにルーティングしません |
中断した | ワーカーは手動で一時停止されました |
正常なシャットダウン | ワーカーが現在実行中のジョブを終了すると、ワーカーエージェントプロセスが終了します。これは、SIGTERM を使用してエージェントプロセスを終了すると発生します。(たとえば、プロセスを |
切断されました | 自動化はワーカーとは関係ありません。これは、たとえば、ワーカーエージェントがホストマシン上で実行されていない場合、マシンの電源がオフになっているか、インターネット接続がない場合に発生する可能性があります。 |
関連ページ:
![](https://pleiades.io/icons/jetbrains_logo.png)
DSL リファレンス
オートメーション DSL は、Space オートメーションスクリプトの作成を支援することを目的としたドメイン固有の言語です。DSL は Kotlin プログラミング言語に基づいています。これは、スクリプト内で Kotlin データ型と言語構造を使用できることを意味します。作業:は、ステップで構成される定義済みタスクです。はジョブの名前ですは作業内容です例:job("Hello World!") { container(image = "hello-world") }job.requirement...
![](https://resources.jetbrains.com/help/img/space/automationJobRunStop.png)
ジョブの表示、実行、停止、サブスクライブ
プロジェクトのジョブページでは、ジョブの実行と停止、現在のジョブの実行進行状況と実行結果の表示、およびジョブ通知のサブスクライブを行うことができます。ジョブの実行結果を表示する:プロジェクトに移動します。サイドバーメニューで、ジョブを選択します。必要なリポジトリとブランチが選択されていることを確認してください。このページには、プロジェクト内のすべてのジョブのリストとその実行結果が表示されます。ここでは、たとえば次のような場合にジョブフィルターを適用することもできます。実物のみジョブを残す: 自...