n8n과 코딩 에이전트 API로 버그 백로그를 자동화한 방법
Source: Dev.to
해결책
저는 OpenCode 위에 워크플로우를 구축하여 티켓을 자동으로 처리하도록 만들었습니다:
- 트리거 – 특정 라벨이 붙은 Linear(또는 Jira)에서 새로운 티켓이 생성되면 웹훅이 발동됩니다.
- 오케스트레이터 – n8n이 웹훅을 받아 CodeCloud API를 호출합니다.
- 실행 레이어 – CodeCloud가 AI 코딩 에이전트를 띄우고, 레포를 복제한 뒤 수정을 구현하고 풀 리퀘스트를 엽니다.
n8n 워크플로우는 실제로 두 개의 노드만 있습니다: 트리거와 HTTP 요청.
잘 작동하는 점
| 변경 유형 | 예시 티켓 | 결과 |
|---|---|---|
| 잘 설명된 버그 | “Safari에서 FormData를 폴리필 없이 사용하고 있기 때문에 회원가입 버튼이 제출되지 않습니다.” | 에이전트가 폴리필을 추가하고 PR을 엽니다. |
| 번거로운 대량 변경 | “모든 오류 메시지를 새로운 i18n 형식으로 업데이트합니다.” | 에이전트가 grep으로 찾아 수정하고 PR을 엽니다. |
| 문서화 | “/lib에 있는 모든 내보낸 함수에 JSDoc 주석을 추가합니다.” | 기계적인 작업이 자동으로 처리됩니다. |
핵심 통찰: 티켓 품질이 결과물 품질을 결정합니다. 이 워크플로우는 팀이 더 나은 티켓을 작성하도록 강제하며, 에이전트가 놓치더라도 부수적인 이점이 됩니다.
Source: …
사전 요구 사항
- n8n 인스턴스(클라우드 또는 자체 호스팅).
- GitHub와 연결된 CodeCloud 계정.
- Linear(또는 Jira) 워크스페이스.
Linear API 키
Settings → API → Personal API keys에서 API 키를 생성합니다.
CodeCloud Header Auth 자격 증명
| Name | Value |
|---|---|
| Authorization | Bearer YOUR_CODECLOUD_API_KEY |
n8n 워크플로우 만들기
노드
| Node | Configuration |
|---|---|
| Linear Trigger | 리소스: Issue 팀: 팀을 선택하세요 |
| HTTP Request | 메서드: POST URL: https://codecloud.dev/api/v1/agents 인증: Header Auth (위의 자격 증명) 본문 (JSON): 아래 참조 |
요청 본문 (JSON)
{
"repo": "your-org/your-repo",
"prompt": "Please fix the bug or issue described in this ticket:\n{{ $json.data.title }}\n\n{{ $json.data.description }}",
"model": "claude-sonnet-4-5",
"provider": "anthropic",
"auto_create_pr": true
}
{{ $json.data.title }} 및 {{ $json.data.description }} 표현식은 Linear의 웹훅 페이로드에서 티켓 내용을 가져옵니다.
티켓 필터링
트리거와 HTTP 요청 사이에 IF 노드를 추가합니다:
조건: {{ $json.data.labelIds }} contains YOUR_AUTO_PR_LABEL_ID
자동화를 위해 명시적으로 태그된 티켓만 처리됩니다.
가져올 수 있는 워크플로우 JSON
다음 JSON을 Workflows → Import from File을 통해 n8n에 직접 가져올 수 있습니다:
{
"name": "Linear to CodeCloud PR",
"nodes": [
{
"parameters": {
"resource": "issue",
"teamId": "{{ YOUR_TEAM_ID }}"
},
"id": "linear-trigger",
"name": "Linear Trigger",
"type": "n8n-nodes-base.linearTrigger",
"typeVersion": 1,
"position": [240, 300]
},
{
"parameters": {
"method": "POST",
"url": "https://codecloud.dev/api/v1/agents",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"repo\": \"your-org/your-repo\",\n \"prompt\": \"Please fix the bug or issue described in this ticket: \\n {{ $json.data.title }}\\n\\n{{ $json.data.description }}\",\n \"model\": \"claude-sonnet-4-5\",\n \"provider\": \"anthropic\",\n \"auto_create_pr\": true\n}"
},
"id": "http-request",
"name": "Create CodeCloud Run",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [480, 300]
}
],
"connections": {
"Linear Trigger": {
"main": [[{ "node": "Create CodeCloud Run", "type": "main", "index": 0 }]]
}
}
}
YOUR_TEAM_ID와 your-org/your-repo를 교체한 뒤, 이전에 만든 Header Auth 자격 증명을 연결하세요.
Linear 대신 Jira 사용
Linear 트리거를 Jira 트리거(이벤트: issue_created)로 교체합니다. Jira의 페이로드에 맞게 요청 본문을 조정하세요:
{
"repo": "your-org/your-repo",
"prompt": "{{ $json.issue.fields.summary }}\n\n{{ $json.issue.fields.description }}",
"model": "claude-sonnet-4-5",
"auto_create_pr": true
}
유용한 API 매개변수
| 매개변수 | 설명 |
|---|---|
mode: "plan" | 변경 없이 구현 계획을 반환합니다—실행 전 검토에 유용합니다. |
webhook_url | 실행이 완료될 때 알림을 받을 URL; PR 링크를 Slack에 게시하거나 티켓 상태를 업데이트하는 데 사용할 수 있습니다. |
팁 및 고려 사항
- 워크플로우는 완벽하지 않은 PR을 생성할 수 있습니다; 이를 개발자가 빠르게 다듬을 수 있는 초안으로 간주하세요.
- 실패한 시도는 종종 모호한 티켓 세부 사항이나 엣지 케이스를 드러내어 더 나은 문서를 작성하도록 유도합니다.
- Linear에서 auto‑PR label을 만들고, 몇 개의 잘 설명된 버그에 태그를 붙인 뒤, 워크플로우를 활성화하고 결과를 관찰하세요.
다음 단계
CodeCloud는 AI 코딩 에이전트를 실행하기 위한 API입니다. 질문이 있거나 만든 것을 공유하고 싶다면, 자유롭게 댓글을 달거나 공식 문서를 확인하세요.