n8n과 코딩 에이전트 API로 버그 백로그를 자동화한 방법

발행: (2026년 2월 16일 오전 01:38 GMT+9)
6 분 소요
원문: Dev.to

Source: Dev.to

해결책

저는 OpenCode 위에 워크플로우를 구축하여 티켓을 자동으로 처리하도록 만들었습니다:

  1. 트리거 – 특정 라벨이 붙은 Linear(또는 Jira)에서 새로운 티켓이 생성되면 웹훅이 발동됩니다.
  2. 오케스트레이터 – n8n이 웹훅을 받아 CodeCloud API를 호출합니다.
  3. 실행 레이어 – 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 자격 증명

NameValue
AuthorizationBearer YOUR_CODECLOUD_API_KEY

n8n 워크플로우 만들기

노드

NodeConfiguration
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_IDyour-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입니다. 질문이 있거나 만든 것을 공유하고 싶다면, 자유롭게 댓글을 달거나 공식 문서를 확인하세요.

0 조회
Back to Blog

관련 글

더 보기 »