기여하기
기여하기 (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.가 관리해요.