GitLab
OpenCode を GitLab の Issue やマージリクエストで使用します。
OpenCode は GitLab CI/CD パイプラインまたは GitLab Duo を通じて GitLab ワークフローと統合します。
どちらの場合も、OpenCode は GitLab Runner 上で実行されます。
GitLab CI
OpenCode は通常の GitLab パイプラインで動作します。CI コンポーネントとしてパイプラインに組み込むことができます。
ここでは、コミュニティが作成した OpenCode 用の CI/CD コンポーネント — nagyv/gitlab-opencode (opens in a new tab) を使用しています。
機能
- ジョブごとのカスタム設定:カスタム設定ディレクトリ(例:
./config/#custom-directory)で OpenCode を設定し、呼び出しごとに機能を有効または無効にできます。 - 最小限のセットアップ:CI コンポーネントがバックグラウンドで OpenCode をセットアップするため、OpenCode の設定と初期プロンプトを作成するだけで済みます。
- 柔軟性:CI コンポーネントは動作をカスタマイズするための複数の入力をサポートしています。
セットアップ
- OpenCode 認証 JSON を File タイプの CI 環境変数として Settings > CI/CD > Variables に保存します。「Masked and hidden」にマークしてください。
.gitlab-ci.ymlファイルに以下を追加します。
include:
- component: $CI_SERVER_FQDN/nagyv/gitlab-opencode/opencode@2
inputs:
config_dir: ${CI_PROJECT_DIR}/opencode-config
auth_json: $OPENCODE_AUTH_JSON # The variable name for your OpenCode authentication JSON
command: optional-custom-command
message: "Your prompt here"その他の入力やユースケースについては、このコンポーネントのドキュメント (opens in a new tab)をご確認ください。
GitLab Duo
OpenCode は GitLab ワークフローと統合します。
コメントで @opencode をメンションすると、OpenCode が GitLab CI パイプライン内でタスクを実行します。
機能
- Issue のトリアージ:OpenCode に Issue を調査して説明してもらいます。
- 修正と実装:OpenCode に Issue の修正や機能の実装を依頼します。 新しいブランチを作成し、変更を含むマージリクエストを作成します。
- セキュア:OpenCode は GitLab Runner 上で実行されます。
セットアップ
OpenCode は GitLab CI/CD パイプラインで実行されます。セットアップに必要なものは以下の通りです:
ヒント:最新の手順については GitLab ドキュメント (opens in a new tab)をご確認ください。
- GitLab 環境を設定
- CI/CD をセットアップ
- AI モデルプロバイダーの API キーを取得
- サービスアカウントを作成
- CI/CD 変数を設定
- フロー設定ファイルを作成します。以下は例です:
image: node:22-slim
commands:
- echo "Installing opencode"
- npm install --global opencode-ai
- echo "Installing glab"
- export GITLAB_TOKEN=$GITLAB_TOKEN_OPENCODE
- apt-get update --quiet && apt-get install --yes curl wget gpg git && rm --recursive --force /var/lib/apt/lists/*
- curl --silent --show-error --location "https://raw.githubusercontent.com/upciti/wakemeops/main/assets/install_repository" | bash
- apt-get install --yes glab
- echo "Configuring glab"
- echo $GITLAB_HOST
- echo "Creating OpenCode auth configuration"
- mkdir --parents ~/.local/share/opencode
- |
cat > ~/.local/share/opencode/auth.json << EOF
{
"anthropic": {
"type": "api",
"key": "$ANTHROPIC_API_KEY"
}
}
EOF
- echo "Configuring git"
- git config --global user.email "[email protected]"
- git config --global user.name "OpenCode"
- echo "Testing glab"
- glab issue list
- echo "Running OpenCode"
- |
opencode run "
You are an AI assistant helping with GitLab operations.
Context: $AI_FLOW_CONTEXT
Task: $AI_FLOW_INPUT
Event: $AI_FLOW_EVENT
Please execute the requested task using the available GitLab tools.
Be thorough in your analysis and provide clear explanations.
<important>
Please use the glab CLI to access data from GitLab. The glab CLI has already been authenticated. You can run the corresponding commands.
If you are asked to summarize an MR or issue or asked to provide more information then please post back a note to the MR/Issue so that the user can see it.
You don't need to commit or push up changes, those will be done automatically based on the file changes you make.
</important>
"
- git checkout --branch $CI_WORKLOAD_REF origin/$CI_WORKLOAD_REF
- echo "Checking for git changes and pushing if any exist"
- |
if ! git diff --quiet || ! git diff --cached --quiet || [ --not --zero "$(git ls-files --others --exclude-standard)" ]; then
echo "Git changes detected, adding and pushing..."
git add .
if git diff --cached --quiet; then
echo "No staged changes to commit"
else
echo "Committing changes to branch: $CI_WORKLOAD_REF"
git commit --message "Codex changes"
echo "Pushing changes up to $CI_WORKLOAD_REF"
git push https://gitlab-ci-token:$GITLAB_TOKEN@$GITLAB_HOST/gl-demo-ultimate-dev-ai-epic-17570/test-java-project.git $CI_WORKLOAD_REF
echo "Changes successfully pushed"
fi
else
echo "No git changes detected, skipping push"
fi
variables:
- ANTHROPIC_API_KEY
- GITLAB_TOKEN_OPENCODE
- GITLAB_HOST詳細な手順については GitLab CLI エージェントのドキュメント (opens in a new tab)を参照してください。
使用例
GitLab で OpenCode を使用する例をいくつか紹介します。
ヒント:
@opencode以外のトリガーフレーズを使用するように設定することもできます。
-
Issue の説明
GitLab の Issue にこのコメントを追加します。 OpenCode が Issue を読み取り、わかりやすい説明を返信します。
@opencode explain this issue -
Issue の修正
GitLab の Issue で以下のように入力します: OpenCode が新しいブランチを作成し、変更を実装し、変更を含むマージリクエストを作成します。
@opencode fix this -
マージリクエストのレビュー
GitLab のマージリクエストに以下のコメントを残します。 OpenCode がマージリクエストをレビューし、フィードバックを提供します。
@opencode review this merge request