GitLab
在 GitLab 問題和合併請求中使用 opencode。
opencode 透過 GitLab CI/CD 管線或與 GitLab Duo 與您的 GitLab 工作流程整合。
在這兩種情況下,opencode 都將在您的 GitLab Runner 上執行。
GitLab
opencode 在常規 GitLab 管線中工作。您可以將其構建為管線作為 CI 組件
在這裡,我們使用社群建立的 opencode CI/CD 組件 — nagyv/gitlab-opencode。
功能
- 每個作業使用自定義設定:使用自定義設定目錄設定 opencode,例如
./config/#custom-directory以啟用或禁用每個 opencode 呼叫的功能。 - 無狀態:opencode 的狀態(訊息歷史記錄等)儲存在合併請求評論線程中,使其完全無狀態。
- 靈活:CI 組件支援多種輸入來自定義其行為
設定
-
將 opencode 身分驗證 JSON 作為檔案類型 CI 環境變數儲存在 Settings > CI/CD > Variables 下。確保將它們標記為「Masked and hidden」。
-
將以下內容新增到您的
.gitlab-ci.yml檔案中。.gitlab-ci.yml include:- component: $CI_SERVER_FQDN/nagyv/gitlab-opencode/opencode@2inputs:config_dir: ${CI_PROJECT_DIR}/opencode-configauth_json: $OPENCODE_AUTH_JSON # The variable name for your OpenCode authentication JSONcommand: optional-custom-commandmessage: "Your prompt here"
有關此組件的更多輸入和使用案例查看文件。
GitLab Duo
opencode 與您的 GitLab 工作流程整合。
在評論中提及 @opencode,opencode 將在您的 GitLab CI 管線中執行任務。
功能
- 分類問題:要求 opencode 調查問題並向您解釋。
- 修復和實作:要求 opencode 修復問題或實作功能。 它將建立一個新分支並提出包含變更的合併請求。
- 安全:opencode 在您的 GitLab Runner 上執行。
設定
opencode 在您的 GitLab CI/CD 管線中執行,您需要進行以下設定:
-
設定您的 GitLab 環境
-
設定 CI/CD
-
取得 AI 模型供應商 API 金鑰
-
建立服務帳號
-
設定 CI/CD 變數
-
建立一個流程設定檔,這是一個範例:
Flow configuration
image: node:22-slimcommands:- 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 "opencode@gitlab.com"- 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_CONTEXTTask: $AI_FLOW_INPUTEvent: $AI_FLOW_EVENTPlease 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)" ]; thenecho "Git changes detected, adding and pushing..."git add .if git diff --cached --quiet; thenecho "No staged changes to commit"elseecho "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_REFecho "Changes successfully pushed"fielseecho "No git changes detected, skipping push"fivariables:- ANTHROPIC_API_KEY- GITLAB_TOKEN_OPENCODE- GITLAB_HOST
詳細說明可以參考 GitLab CLI 代理文件。
範例
以下是如何在 GitLab 中使用 opencode 的一些範例。
-
解釋一個問題
在 GitLab 問題中添加此評論。
@opencode explain this issueopencode 將閱讀該問題並回覆並提供清晰的解釋。
-
解決問題
在 GitLab 問題中,說:
@opencode fix thisopencode 將建立一個新分支,實作變更,並打開包含變更的合併請求。
-
審閱合併請求
對 GitLab 合併請求留下以下評論。
@opencode review this merge requestopencode 將審閱合併請求並提供回饋。