Yocto/Bitbake 기반 CCU2 임베디드 리눅스 개발 파이프라인. JIRA 연동, 레시피 작성, Docker 빌드, 이미지 검증 자동화. "yocto", "bitbake", "recipe", "임베디드" 키워드시 활성화
JIRA 티켓부터 이미지 빌드까지 CCU2 Yocto 개발 파이프라인을 자동화하는 스킬.
Repository State:
cat info/repo_info.json 2>/dev/null | head -5 || echo "Not initialized"git branch --show-current 2>/dev/null || echo "Unknown"git status --short 2>/dev/null | head -10 || echo "Not a git repo"Last Build Status:
!ls -t claudedocs/build-logs/*.status 2>/dev/null | head -1 | xargs cat 2>/dev/null | grep -E "^(STATUS|TYPE|TIER)" | tr '\n' ' ' || echo "No recent build"
Docker Container:
!docker ps --filter "name=.*CCU_GEN2.0_SONATUS" --format "✅ {{.Names}} (up {{.RunningFor}})" 2>/dev/null | head -1 || echo "❌ No container running"
Disk Space:
!df -h . 2>/dev/null | tail -1 | awk '{print $4 " available (" $5 " used)"}' || echo "Unknown"
이 스킬은 다음 요청에서 활성화됩니다:
*.bb, *.bbappend, *.bbclass)*.config, defconfig)/snt-ccu2-yocto 명령어 호출이 스킬은 다음 경로 패턴에서 자동 활성화:
*CCU_GEN2.0_SONATUS* - Yocto manifest 저장소mobis/, lge/ 디렉토리 존재 시JIRA 인증: .env 파일에 API Token 설정
JIRA_BASE_URL=https://sonatus.atlassian.net/
JIRA_EMAIL=your.email@sonatus.com
JIRA_API_TOKEN=your_api_token
Docker 환경: run-dev-container.sh 실행 가능
빌드 초기화: init.py 완료 상태
CCU_GEN2.0_SONATUS.manifest/
├── mobis/ # MOBIS Tier-1
│ ├── layers/
│ │ └── meta-sonatus/ # Sonatus 레이어
│ ├── build.py # 빌드 스크립트
│ └── deploy/ # 빌드 결과물
├── lge/ # LGE Tier-1
├── info/
│ ├── repo_info.json # 버전 정보
│ └── build_info.json # 빌드 정보
├── init.py # 초기화 스크립트
└── run-dev-container.sh # Docker 진입
사용자 요청에서 다음 정보를 파악:
CCU2-*, SEB-*, CRM-* 형식필요시 질문:
요구사항을 구조화된 명세로 변환.
실행 단계:
출력 예시:
spec:
name: "cgroupv2-support"
tier: mobis
recipe_changes:
- layer: meta-sonatus
recipe: linux-s32_5.10.bbappend
action: modify
kernel_configs:
- file: cgroupv2.config
options:
- CONFIG_CGROUP_V2=y
code_changes:
- file: systemd_%.bbappend
action: create
Reference: references/spec-workflow.md
명세에 따라 Yocto 파일 생성/수정.
실행 단계:
Yocto 파일 패턴:
# bbappend 위치
meta-sonatus/recipes-*/*/
meta-sonatus/recipes-kernel/linux/
# Config fragment 위치
meta-sonatus/recipes-kernel/linux/files/
meta-sonatus/recipes-kernel/linux-ccu2/
Reference: references/implement-workflow.md
Docker 컨테이너에서 bitbake 빌드 실행.
Slash Command: /snt-ccu2-yocto:build
빌드 범위 결정:
-m linux-s32)-ncpb)--branch <name>)실행 예시:
# Docker 컨테이너 진입
./run-dev-container.sh
# 컨테이너 내부에서
cd mobis/
./build.py -m linux-s32 -c cleansstate # 클린
./build.py -ncpb -j 16 -p 16 # 전체 빌드
특정 Git 브랜치에서 Sonatus 컴포넌트를 빌드.
사용법:
/snt-ccu2-yocto:build --module container-manager --branch CCU2-16964-feature
/snt-ccu2-yocto:build -m vam -b feature-branch --keep-branch
워크플로우:
.bb.bak)SNT_BRANCH ?= "master" → SNT_BRANCH = "branch-name" 수정cleansstate 실행 (캐시 무효화)--keep-branch)지원 컴포넌트:
Reference: references/build-workflow.md
빌드 결과 검증.
테스트 단계:
Reference: references/test-workflow.md
JIRA 티켓부터 테스트까지 전체 자동화.
JIRA → SPEC → IMPLEMENT → BUILD → TEST
Slash Command: /snt-ccu2-yocto:pipeline
bitbake 파싱 에러:
빌드 실패:
이미지 실패:
Reference: references/error-recovery.md
source <(grep -E '^JIRA_' .env | sed 's/^/export /')
curl -s -u "${JIRA_EMAIL}:${JIRA_API_TOKEN}" \
"${JIRA_BASE_URL}/rest/api/3/issue/${TICKET_ID}"
# 모듈 빌드
./build.py -m <recipe> [options]
# 전체 이미지 빌드
./build.py -ncpb -j 16 -p 16
# 클린 빌드
./build.py -m <recipe> -c cleansstate
주요 옵션:
-m, --module - 대상 레시피-c, --clean - cleansstate 실행-j, --jobs - 병렬 태스크 수-p, --parallel - 병렬 레시피 수-ncpb - 전체 이미지 빌드--dry-run - 명령만 출력# 특정 브랜치에서 빌드
.claude/commands/snt-ccu2-yocto/scripts/yocto-build.sh --module container-manager --branch CCU2-16964-feature
# 빌드 후 레시피 유지
.claude/commands/snt-ccu2-yocto/scripts/yocto-build.sh -m vam -b feature-branch --keep-branch
# LGE Tier 빌드
.claude/commands/snt-ccu2-yocto/scripts/yocto-build.sh --module dpm --branch hotfix --tier lge
브랜치 빌드 옵션:
--branch, -b - Git 브랜치 이름--keep-branch, -k - 빌드 후 레시피 복원 안함--tier, -t - 대상 Tier (mobis/lge)# 컨테이너 진입
./run-dev-container.sh
# 컨테이너 내 명령 실행
./run-dev-container.sh -x "cd mobis && ./build.py -ncpb"
## Spec Generated: cgroupv2-support
### Recipe Changes
| Layer | Recipe | Action |
|-------|--------|--------|
| meta-sonatus | linux-s32_5.10.bbappend | modify |
| meta-sonatus | systemd_%.bbappend | create |
### Kernel Configs
- cgroupv2.config: CONFIG_CGROUP_V2=y
### Implementation Ready
다음 명령으로 구현을 시작하세요:
/snt-ccu2-yocto:implement
## Build Progress
Tier: MOBIS
Scope: MODULE (linux-s32)
[1/3] ✅ cleansstate 완료
[2/3] 🔄 do_compile 진행 중...
[3/3] ⏳ do_deploy 대기
예상 완료: 45분
## Test Results
Stage 1: ✅ Build Verification
- Errors: 0
- Warnings: 3 (non-critical)
Stage 2: ✅ Image Validation
- Size: 512MB (limit: 1GB)
- Required packages: All present
Stage 3: ✅ Static Analysis
- Recipe syntax: OK
- License compliance: OK
Overall: PASSED ✅
태스크 완료 전 다음 확인:
init.py 실행으로 저장소 동기화 완료| Command | Description |
|---|---|
/snt-ccu2-yocto:pipeline |
전체 파이프라인 (JIRA→빌드→테스트) |
/snt-ccu2-yocto:spec |
명세 생성 |
/snt-ccu2-yocto:implement |
레시피/설정 구현 |
/snt-ccu2-yocto:build |
Docker 빌드 실행 |
/snt-ccu2-yocto:test |
테스트 파이프라인 |
/snt:jira |
JIRA 이슈 조회/생성 |