mirror of
https://github.com/anomalyco/opencode.git
synced 2026-05-17 21:30:08 +00:00
195 lines
8.4 KiB
Text
195 lines
8.4 KiB
Text
---
|
||
title: GitLab
|
||
description: Используйте opencode в задачах GitLab и мерж-реквестах.
|
||
---
|
||
|
||
opencode интегрируется с вашим рабочим процессом GitLab через конвейер GitLab CI/CD или с GitLab Duo.
|
||
|
||
В обоих случаях opencode будет работать на ваших программах GitLab.
|
||
|
||
---
|
||
|
||
## GitLab
|
||
|
||
opencode работает в обычном конвейере GitLab. Вы можете встроить его в конвейер как [CI-компонент](https://docs.gitlab.com/ee/ci/components/)
|
||
|
||
Здесь мы используем созданный сообществом компонент CI/CD для opencode — [nagyv/gitlab-opencode](https://gitlab.com/nagyv/gitlab-opencode).
|
||
|
||
---
|
||
|
||
### Функции
|
||
|
||
- **Использовать пользовательскую конфигурацию для каждого задания**. Настройте opencode с помощью пользовательского каталога конфигурации, например `./config/#custom-directory`, чтобы включать или отключать функциональность для каждого вызова opencode.
|
||
- **Минимальная настройка**: компонент CI настраивает opencode в фоновом режиме, вам нужно только создать конфигурацию opencode и начальное приглашение.
|
||
- **Гибкость**: компонент CI поддерживает несколько входных данных для настройки его поведения.
|
||
|
||
---
|
||
|
||
### Настройка
|
||
|
||
1. Сохраните JSON аутентификации opencode как переменные среды CI типа файла в разделе **Настройки** > **CI/CD** > **Переменные**. Обязательно пометьте их как «Замаскированные и скрытые».
|
||
2. Добавьте следующее в файл `.gitlab-ci.yml`.
|
||
|
||
```yaml title=".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"
|
||
```
|
||
|
||
Дополнительные сведения и варианты использования см. в документации ](https://gitlab.com/explore/catalog/nagyv/gitlab-opencode) для этого компонента.
|
||
|
||
---
|
||
|
||
## GitLab Duo
|
||
|
||
opencode интегрируется с вашим рабочим процессом GitLab.
|
||
Упомяните `@opencode` в комментарии, и opencode выполнит задачи в вашем конвейере GitLab CI.
|
||
|
||
---
|
||
|
||
### Функции
|
||
|
||
- **Триаж задач (Issue Triage)**. Попросите opencode разобраться в проблеме и объяснить ее вам.
|
||
- **Исправление и реализация**. Попросите opencode исправить проблему или реализовать функцию.
|
||
Он создаст новую ветку и создаст мерж-реквест с изменениями.
|
||
- **Безопасность**: opencode работает на ваших программах GitLab.
|
||
|
||
---
|
||
|
||
### Настройка
|
||
|
||
opencode работает в вашем конвейере GitLab CI/CD. Вот что вам понадобится для его настройки:
|
||
|
||
:::tip
|
||
Ознакомьтесь с [**документацией GitLab**](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/) для получения актуальных инструкций.
|
||
:::
|
||
|
||
1. Настройте свою среду GitLab
|
||
2. Настройка CI/CD
|
||
3. Получите ключ API поставщика моделей ИИ
|
||
4. Создать учетную запись службы
|
||
5. Настройка переменных CI/CD
|
||
6. Создайте файл конфигурации потока, вот пример:
|
||
|
||
<details>
|
||
|
||
<summary>Конфигурация потока</summary>
|
||
|
||
```yaml
|
||
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 "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_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
|
||
```
|
||
|
||
</details>
|
||
|
||
Подробные инструкции можно найти в [GitLab CLI agents docs](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/).
|
||
|
||
---
|
||
|
||
### Примеры
|
||
|
||
Вот несколько примеров того, как вы можете использовать opencode в GitLab.
|
||
|
||
:::tip
|
||
Вы можете настроить использование триггерной фразы, отличной от `@opencode`.
|
||
:::
|
||
|
||
- **Объяснение проблемы**
|
||
|
||
Добавьте этот комментарий в issue GitLab.
|
||
|
||
```
|
||
@opencode explain this issue
|
||
```
|
||
|
||
opencode прочитает проблему и ответит с четким объяснением.
|
||
|
||
- **Исправление проблемы**
|
||
|
||
В issue GitLab напишите:
|
||
|
||
```
|
||
@opencode fix this
|
||
```
|
||
|
||
opencode создаст новую ветку, внедрит изменения и откроет мерж-реквест с изменениями.
|
||
|
||
- **Проверка Merge Request**
|
||
|
||
Оставьте следующий комментарий к мерж-реквесту GitLab.
|
||
|
||
```
|
||
@opencode review this merge request
|
||
```
|
||
|
||
opencode рассмотрит мерж-реквест и предоставит отзыв.
|