기여하기

기여하기 (Contributing)

Docker Agent는 오픈소스예요. 여기서 개발 환경을 설정하고 기여하는 방법을 알려드릴게요.

출처: 문서

본문

개발 환경 설정 (Development Setup)

사전 요구 사항 (Prerequisites)

  • Go 1.26 이상
  • 선택한 AI 제공자의 API 키
  • Task
  • golangci-lint

Note 플랫폼 지원 (Platform Support) macOS와 Linux는 개발이 완전히 지원돼요. Windows에서는 task build-local 을 사용해서 Docker를 통해 빌드해야 해요.

소스에서 빌드하기 (Build from Source)

# Clone and build
git clone https://github.com/docker/docker-agent.git
cd docker-agent
task build

# Set API keys
export OPENAI_API_KEY=your_key_here
export ANTHROPIC_API_KEY=your_key_here

# Run an example
./bin/docker-agent run examples/code.yaml

개발 명령어 (Development Commands)

Command Description
task build ./bin/docker-agent 로 바이너리 빌드
task test 모든 테스트 실행 (결정성을 위해 API 키를 지움)
task lint golangci-lint 실행
task format 코드 포맷팅
task dev lint, test, build를 순서대로 실행
task build-local Docker를 통해 로컬 플랫폼용 빌드
task cross 크로스 플랫폼 빌드 (모든 아키텍처)

도그푸딩 (Dogfooding)

Docker Agent를 Docker Agent 개발에 사용해보세요! 프로젝트에는 특화된 개발자 에이전트가 포함되어 있어요:

cd docker-agent
docker agent run ./golang_developer.yaml

이 에이전트는 Docker Agent 코드베이스를 잘 이해하는 전문 Go 개발자예요. 질문을 하거나, 수정을 요청하거나, 기능을 구현하게 할 수 있어요.

핵심 개념 (Core Concepts)

  • Root Agent — 시스템을 조율하는 메인 진입점
  • Sub-Agents — 특정 도메인을 위한 특화 에이전트
  • Tools — MCP를 통한 외부 기능
  • Models — AI 제공자 구성

코드 스타일 (Code Style)

프로젝트는 엄격한 규칙의 golangci-lint를 사용해요. task lint 가 통과하기만 하면 코드는 스타일상 수용 가능한 것으로 봐요.

주요 규칙:

  • 에러 래핑은 fmt.Errorf("context: %w", err) 사용
  • 항상 context.Context 를 첫 번째 파라미터로 전달
  • 구조적 로깅에는 slog 사용
  • 생성자는 functional options 패턴 사용
  • 테스트에서는 t.Context() , t.TempDir() , t.Setenv() , t.Parallel() 사용

이슈 열기 (Opening Issues)

GitHub issue tracker에 이슈를 등록해주세요. 다음 사항을 지켜주세요:

Note 참고 (See also) Troubleshooting — 일반적인 문제와 디버그 모드. Telemetry — 어떤 데이터가 수집되고 어떻게 거부(opt out)하는지.

  • 포함된 이슈 템플릿 사용
  • 새 이슈를 만들기 전에 기존 이슈를 검색
  • 이슈는 버그와 기능 요청에만 사용 (지원 문의 금지)

풀 리퀘스트 제출 (Submitting Pull Requests)

  • 저장소를 포크하고 변경 사항을 위한 브랜치를 만들어요
  • 위 스타일과 테스트 가이드라인에 따라 코드를 작성해요
  • 변경 사항을 테스트해요: task lint 와 task test 실행
  • git commit -s 로 커밋에 서명해요 (DCO 필수)
  • main 브랜치를 대상으로 풀 리퀘스트를 열어요

Tip 제출 전에 도그푸딩 에이전트(docker agent run ./golang_developer.yaml)를 사용해서 변경 사항을 작성하고 검토하는 데 도움을 받아보세요.

서명하기 (Sign Your Work)

모든 기여는 Developer Certificate of Origin (DCO) 서명이 필요해요:

# Sign commits automatically
git config user.name "Your Name"
git config user.email "[email protected]"
git commit -s -m "Your commit message"

커뮤니티 (Community)

Slack에서 질문과 토론을 나눌 수 있어요.

행동 강령 (Code of Conduct)

Docker Agent 커뮤니티를 환영하고 포용적이며 협력적으로 유지하고 싶어요. 핵심 가이드라인:

  • 친절하게 — 예의 바르고 존중하며 정중하게. 어떤 형태의 학대도 용납되지 않아요.
  • 다양성 장려 — 배경과 무관하게 모두가 환영받는 느낌을 갖게 해요.
  • 법적 준수 — 소유한 콘텐츠만 공유하고 법을 어기지 않아요.
  • 주제 유지 — 올바른 채널에 게시하고 주제에서 벗어난 토론을 피해요.

이 저장소의 거버넌스는 Docker Inc.가 관리해요.

더 알아보기 (Learn more)