正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

フロー実行を設定する

エージェントは、タスクを実行するためにフローを使用します。

  • GitLab UIから実行されるフローは、CI/CDを使用します。
  • IDEで実行されるフローはローカルで実行されます。

CI/CD実行の設定

プロジェクトでエージェントの設定ファイルを作成することにより、CI/CDでフローがどのように実行されるかをカスタマイズできます。

設定ファイルを作成

  1. プロジェクトのリポジトリに、.gitlab/duo/フォルダーが存在しない場合は作成します。
  2. フォルダーに、agent-config.ymlという名前の設定ファイルを作成します。
  3. 目的の設定オプションを追加します(下記のセクションを参照)。
  4. ファイルをコミットしてプッシュし、デフォルトブランチにプッシュします。

フローがプロジェクトのCI/CDで実行されると、設定が適用されます。

デフォルトDockerイメージの変更

デフォルトでは、CI/CDで実行されるすべてのフローは、GitLabが提供する標準のDockerイメージを使用します。ただし、Dockerイメージを変更して、独自のDockerイメージを指定することもできます。独自のDockerイメージは、特定の依存関係またはツールを必要とする複雑なプロジェクトに役立ちます。

デフォルトのDockerイメージを変更するには、agent-config.ymlファイルに以下を追加します:

image: YOUR_DOCKER_IMAGE

例:

image: python:3.11-slim

または、Node.jsプロジェクトの場合:

image: node:20-alpine

カスタムイメージの要件

カスタムDockerイメージを使用する場合は、エージェントが正しく機能するために、次のコマンドを使用できることを確認してください:

  • git
  • wget
  • tar
  • chmod

ほとんどのベースイメージには、これらのコマンドがデフォルトで含まれています。ただし、最小限のイメージ(alpineバリアントなど)では、明示的にインストールする必要がある場合があります。必要に応じて、セットアップスクリプトの構成で不足しているコマンドをインストールできます。

さらに、フローの実行中にエージェントが行うツール呼び出しによっては、他の一般的なユーティリティが必要になる場合があります。

たとえば、Alpineベースのイメージを使用する場合:

image: python:3.11-alpine
setup_script:
  - apk add --no-cache git wget tar bash

セットアップスクリプトの構成

フローの実行前に実行されるセットアップスクリプトを定義できます。これは、依存関係のインストール、環境の設定、または必要な初期化を実行する場合に役立ちます。

セットアップスクリプトを追加するには、agent-config.ymlファイルに以下を追加します:

setup_script:
  - apt-get update && apt-get install -y curl
  - pip install -r requirements.txt
  - echo "Setup complete"

これらのコマンドは:

  • メインのワークフローコマンドの前に実行します。
  • 指定された順序で実行します。
  • 単一のコマンドまたはコマンドの配列にすることができます。

キャッシュの設定

キャッシュを設定して、実行間でファイルとディレクトリを保持することにより、後続のフロー実行を高速化できます。キャッシュは、node_modulesやPython仮想環境などの依存関係フォルダーに役立ちます。

基本的なキャッシュの設定

特定のパスをキャッシュするには、agent-config.ymlファイルに以下を追加します:

cache:
  paths:
    - node_modules/
    - .npm/

キーを使用したキャッシュ

キーを使用して、さまざまなシナリオに対応するさまざまなキャッシュを作成できます。キーは、キャッシュがプロジェクトの状態に基づいていることを保証するのに役立ちます。

文字列キーの使用
cache:
  key: my-project-cache
  paths:
    - vendor/
    - .bundle/
ファイルベースのキャッシュキーの使用

ファイルの内容(ロックファイルなど)に基づいて動的なキャッシュキーを作成します。これらのファイルが変更されると、新しいキャッシュが作成されます。これにより、指定されたファイルのSHAチェックサムが生成されます:

cache:
  key:
    files:
      - package-lock.json
      - yarn.lock
  paths:
    - node_modules/
ファイルベースのキーでプレフィックスを使用する

プレフィックスと、キャッシュキーファイル用に計算されたSHAを組み合わせます:

cache:
  key:
    files:
      - package-lock.json
    prefix: $CI_JOB_NAME
  paths:
    - node_modules/
    - .npm/

この例では、ジョブ名がtestで、SHAチェックサムがabc123の場合、キャッシュキーはtest-abc123になります。

キャッシュの制限事項

  • キャッシュキーの生成には、最大2つのファイルを指定できます。3つ以上のファイルが指定されている場合は、最初の2つのみが使用されます。
  • キャッシュのpathsフィールドは必須です。パスのないキャッシュの設定は効果がありません。
  • キーは、prefixフィールドのCI/CD変数をサポートします。

完全な設定の例

これは、使用可能なすべてのオプションを使用するagent-config.ymlファイルの例です:

# Custom Docker image
image: python:3.11

# Setup script to run before the flow
setup_script:
  - apt-get update && apt-get install -y build-essential
  - pip install --upgrade pip
  - pip install -r requirements.txt

# Cache configuration
cache:
  key:
    files:
      - requirements.txt
      - Pipfile.lock
    prefix: python-deps
  paths:
    - .cache/pip
    - venv/

この設定では:

  • ベースイメージとしてPython 3.11を使用します。
  • フローを実行する前に、ビルドツールとPythonの依存関係をインストールします。
  • pipと仮想環境ディレクトリをキャッシュします。
  • requirements.txtまたはPipfile.lockが変更されると、プレフィックスがpython-depsの新しいキャッシュが作成されます。