JetBrains Space ヘルプ

サービスコンテナー

サービスコンテナーは、ステップで定義されたメインコンテナーとともに実行される追加のコンテナーです。サービスコンテナーの主な目的は、ネットワークでアクセスできるサービスを提供することです。例: メインコンテナーは、別のサービスコンテナーで実行される MySQL データベースと Redis インスタンスを必要とするテストを実行します。

サービスコンテナーを定義する

たとえば、次の例では、メインコンテナーがサービスコンテナーに 5 回 ping を送信します。

job("Use service") { container(displayName = "Ping service", image = "alpine") { shellScript { content = "ping -c 5 db" } service("mysql:5.7") { alias("db") env["MYSQL_ROOT_PASSWORD"] = "pwd1234" } } }
  • サービスコンテナーを定義するには、service 関数を使用する必要があります。

  • servicecontainer (メインコンテナー) 内にのみ配置できます。

  • サービスコンテナーでは、shellScript および kotlinScript を使用してシェルスクリプトと Kotlin コードを実行できないことに注意してください。

サービスコンテナーにアクセスする

メインコンテナーからサービスコンテナーにアクセスするには、ネットワーク接続を使用する必要があります。サービスコンテナーにアクセスするには、そのホスト名を使用する必要があります。デフォルトでは、ホスト名はコンテナーのイメージ名から作成されます。

  • コロン : 以降の文字はすべて破棄されます。

  • 文字、数字、ダッシュ -、アンダースコア記号 _ を除くすべての文字は、ダッシュ - に置き換えられます。

例: service("myimages/mysql:5.7") として定義されたサービスコンテナーは、ホスト名 myimages-mysql を取得します。

あるいは、alias キーワードを使用してコンテナーのホスト名を設定することもできます。例: ここではホスト名として db を指定します。

service("mysql:5.7") { alias("db") }

また、次の点にも注意してください。

  • サービスコンテナーからメインコンテナーにアクセスしたり、あるサービスコンテナーから別のサービスコンテナーにアクセスしたりすることはできません。

  • 同じホスト名を持つコンテナーが 2 つ以上ある場合、オートメーションでは処理されません。このホスト名でどのサービスが利用可能になるかは未定義です。

サービスコンテナーはいつ実行されますか

サービスコンテナーは常にメインコンテナーより前に開始されます。

サービスコンテナーリソースを定義する

  • container 内に定義できる service コンテナーは 7 つまでです。

  • メインの container と同様に、service コンテナーにも resources によって設定された独自のリソース制約があります。

    service("mysql:5.7") { alias("db") resources { cpu = 1024 memory = 768 } }

    デフォルトの制約は、2 vCPU (2048 CPU ユニット)、7800 MiB です。

  • メインコンテナーとそのすべてのサービスコンテナーに割り当てられる全体的なリソースは、4 vCPU (4096 CPU ユニット) と 16 GB メモリに制限されます。

サービスコンテナーログの表示

  1. プロジェクトの求人ページを開きます。

  2. ステップタブを開きます。

  3. 左側のペインで、目的のステップとサービスを選択します。ログが右側のペインに表示されます。

使用例

サービスコンテナーの最も一般的な目的の 1 つは、単体テストで必要なネットワークサービスを実行することです。以下の例では、ジョブは MySQL データベース、Redis インスタンス、および Elastic Search インスタンスを必要とするテストを実行します。

job("Run tests") { gradlew("gradle:6.1.1-jdk11", ":tests:test") { env["DB_HOST"] = "db" env["DB_PORT"] = "3306" env["ELASTIC_HOST"] = "elasticsearch" env["ELASTIC_PORT"] = "9200" env["REDIS_HOST"] = "redis:6379" service("mysql:5.7") { alias("db") args("--log_bin_trust_function_creators=ON", "--max-connections=700") env["MYSQL_ROOT_PASSWORD"] = "pwd1234" env["MYSQL_DATABASE"] = "mydb" } service("docker.elastic.co/elasticsearch/elasticsearch:6.5.4") { alias("elasticsearch") } service("redis:4.0.2-alpine") { alias("redis") } } }

関連ページ:

ジョブとステップ

ジョブ:ジョブは、ステップで構成される定義されたタスクです。最も単純な自動化スクリプトは 1 つのジョブで構成され、最も単純なジョブは 1 つのステップで構成されます。ステップ:最も基本的なオートメーション単位はステップです。ステップは自動化スクリプトの可能な最小の構成要素であり、次の 2 つの質問に答えます: 何を実行するか (シェルスクリプトや Kotlin コードなど)、どこで実行するか ? ステップを単独で使用することはできません。ジョブの一部としてのみ使用できます。ステップタイプ:ス...

ジョブの表示、実行、停止、サブスクライブ

プロジェクトのジョブページでは、ジョブの実行と停止、現在のジョブの実行進行状況と実行結果の表示、およびジョブ通知のサブスクライブを行うことができます。ジョブの実行結果を表示する:プロジェクトに移動します。サイドバーメニューで、ジョブを選択します。必要なリポジトリとブランチが選択されていることを確認してください。このページには、プロジェクト内のすべてのジョブのリストとその実行結果が表示されます。ここでは、たとえば次のような場合にジョブフィルターを適用することもできます。実物のみジョブを残す: 自...

セルフホスト型ワーカー

セルフホスト型ワーカーは、Windows、Linux、macOS 上の独自のマシンで実行できる軽量エージェントです。セルフホスト型ワーカーは Space Automation に接続し、ジョブとプロジェクトのソースコードを取得してジョブを実行し、結果を Space にレポートします。セルフホスト型ワーカーを使用すると、コンテナーでは不可能な CI/CD ワークフローを実行できます。例:Windows 上で完全な .NET フレームワークアプリケーションを構築します。特定のハードウェアを使用する...