Community코딩 & 개발github.com

prepare-core-kit-release

bottlerocket-core-kit 릴리스를 위해 버전을 올리고 체인지로그를 업데이트합니다.

prepare-core-kit-release란 무엇인가요?

이 스킬은 bottlerocket-core-kit 저장소의 새 릴리스를 준비하는 프로세스를 자동화합니다. 사용자는 Twoliter.toml에서 릴리스 버전을 업데이트하고, Git 기록에서 체인지로그 항목을 생성하며, 서명된 커밋을 생성하는 방법을 배웁니다. 이 스킬은 핵심 시스템 및 서드파티 패키지 업데이트를 올바르게 분류하고, 커밋 메시지만으로 추측하지 않고 각 PR의 실제 변경 사항을 `git show`로 확인하는 중요성을 강조합니다. 릴리스 준비는 항상 버전 범프 커밋이 먼저, 체인지로그 업데이트 커밋이 나중에 오는 순서로 두 개의 커밋이 필요합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/cbgbt/bottlerocket-forest/tree/main/skills/prepare-core-kit-release

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Core Kit 릴리스 준비

Twoliter.toml에서 버전을 올리고 CHANGELOG.md를 업데이트하여 bottlerocket-core-kit 저장소의 새 릴리스를 준비합니다.

목적

bottlerocket-core-kit의 릴리스 준비 워크플로우를 자동화합니다:

  • Twoliter.toml에서 릴리스 버전 업데이트
  • Git 기록에서 체인지로그 항목 생성
  • 릴리스를 위한 올바른 형식의 커밋 생성

사용 시기

  • bottlerocket-core-kit의 새 릴리스 준비
  • 최근 변경 사항으로 체인지로그 업데이트 필요
  • 적절한 형식의 릴리스 커밋 생성

전제 조건

  • bottlerocket-core-kit이 체크아웃된 grove에서 작업 중
  • 병합 커밋 및 PR 참조가 있는 Git 기록 사용 가능
  • 대상 릴리스 버전에 대한 지식

절차

릴리스 워크플로우

중요: 릴리스 프로세스는 엄격한 순서로 두 개의 커밋이 필요합니다:

커밋 1: 버전 범프 (반드시 먼저)

Twoliter.toml을 업데이트하여 새 릴리스 버전을 설정합니다:

# Twoliter.toml에서 업데이트:
release-version = "X.Y.Z"

커밋 명령어:

git add Twoliter.toml && git commit -s -S -m "twoliter: bump kit version to vX.Y.Z"

커밋 2: 체인지로그 업데이트 (반드시 두 번째)

새 버전의 변경 사항으로 CHANGELOG.md를 업데이트합니다.

커밋 명령어:

git add CHANGELOG.md && git commit -s -S -m "changelog: update for vX.Y.Z"

1. 새 커밋 식별

  • 마지막 체인지로그 항목 이후의 커밋을 찾으려면: git log --oneline <last_version_tag>..HEAD
  • 태그가 없으면 다음을 사용: git log --oneline --since="<last_release_date>"

2. PR 참조 찾기

  • 병합 커밋을 분석하여 PR 번호를 찾습니다: git log --merges --oneline <last_version_tag>..HEAD
  • 커밋 메시지에서 "Merge pull request #XXX" 패턴을 찾습니다.
  • 커밋 해시를 PR 병합 커밋과 교차 참조합니다.

3. 중요: PR 내용 확인

항상 각 PR에 포함된 패키지/변경 사항을 실제 수정된 파일을 확인하여 검증하세요:

git show <merge_commit_hash> --stat

다음에 의존하지 마세요:

  • 커밋 메시지 요약만
  • PR 브랜치 이름
  • PR 내용에 대한 가정

혼합 PR 주의: 단일 PR에 자사 변경 사항과 서드파티 패키지 업데이트가 모두 포함될 수 있습니다. 동일한 PR에서 변경 유형별로 별도의 체인지로그 항목을 생성해야 합니다.

혼합 PR 예시 (PR #760):

git show 70609d6a --stat
# 다음에 대한 변경 사항 표시:
#   sources/host-ctr/...          <- 자사 변경 (host-ctr 리졸버)
#   packages/amazon-vpc-cni-plugins/...  <- 서드파티 업데이트
#   packages/ecs-agent/...        <- 서드파티 업데이트

이 PR에는 두 개의 체인지로그 항목이 필요합니다:

  1. OS 변경: "Replace amazon-ecr-containerd-resolver with Docker resolver in host-ctr ([#760])"
  2. 서드파티 패키지 업데이트: "Update amazon-vpc-cni-plugins, ecs-agent ([#760])"

올바른 확인 예시:

# 병합 커밋 9656d841 (PR #795)의 경우:
git show 9656d841 --stat
# 표시: libcap, liburcu, libxcrypt, readline 변경
# 브랜치 이름이나 요약이 제안하는 내용이 아님

4. 체인지로그 스타일 가이드라인

버전 헤더 형식

# v<버전> (<YYYY-MM-DD>)

섹션 계층 구조

  1. OS 변경 - 핵심 시스템 및 자사 패키지 업데이트
    • 자사 패키지 업데이트 (상세 하위 항목 포함)
    • 외부 패키지를 위한 서드파티 패키지 업데이트 하위 섹션
  2. 빌드 변경 - 빌드 시스템, 도구 및 인프라 변경
  3. 오케스트레이터 변경 - 컨테이너 오케스트레이션 관련 변경
    • 해당 시 Kubernetes 하위 섹션

항목 형식

  • PR 참조와 함께 글머리 기호 사용: - 설명 ([#XXX])
  • 자사 패키지의 경우 적절할 때 상세한 하위 항목 포함
  • 서드파티 패키지 업데이트: 버전 번호를 포함하지 마세요
    • 올바름: - Update \docker-cli-29`, `docker-engine-29` ([#785])`
    • 틀림: - Update \docker-cli-29` to v29.0.4, `docker-engine-29` to v29.0.4 ([#785])`
  • 패치/수정의 경우 "Update" 대신 "Patch" 사용:
    • 올바름: - Patch \containerd-2.1` to update GRPC ([#801])`

분류 규칙

  • 자사 패키지: Bottlerocket 전용 코드 및 내부 종속성
  • 서드파티 패키지: 외부 라이브러리 및 도구 (glibc, docker-engine 등)
  • 빌드 변경: 빌드 시스템, CI/CD 또는 개발 도구에 영향을 미치는 모든 것
  • 오케스트레이터 변경: Kubernetes, ECS 또는 기타 컨테이너 오케스트레이션 기능

5. 품질 검사

  • 모든 항목에 ([#XXX]) 형식의 PR 참조가 있는지 확인
  • 일관된 형식과 들여쓰기 확인
  • 관련 변경 사항을 그룹화하여 반복 항목 방지
  • 섹션 내에서 시간 순서 유지
  • 하위 섹션 헤더가 기존 패턴과 일치하는지 확인
  • 항목을 작성하기 전에 각 PR의 실제 내용을 확인

검증

검증 명령어

  • Git 로그 범위 확인: git log --oneline <range>
  • 병합 커밋 확인: git log --merges --grep="pull request" <range>
  • PR 내용 확인: git show <merge_hash> --stat
  • PR 번호가 저장소에 존재하는지 확인

성공적인 릴리스 준비에는 다음이 포함됩니다:

  • 올바른 순서의 두 커밋 (버전 범프 먼저, 체인지로그 다음)
  • Twoliter.toml에 업데이트된 release-version
  • CHANGELOG.md에 올바른 날짜의 새 버전 섹션
  • 모든 항목에 ([#XXX]) 형식의 PR 참조
  • 서드파티 패키지 업데이트에 버전 번호가 포함되지 않음
  • 커밋이 서명됨 (-s -S 플래그)

일반적인 문제

PR 참조 누락

병합 커밋에 PR 번호가 표시되지 않으면 다음을 확인:

git log --merges --oneline | head -20

"Merge pull request #XXX" 패턴을 찾습니다.

잘못된 패키지 분류

자사 패키지와 서드파티 패키지를 분류하기 전에 항상 git show <hash> --stat로 실제 변경된 파일을 확인합니다.

서드파티 업데이트의 버전 번호

기억하세요: 서드파티 패키지 업데이트 항목에는 버전 번호가 아닌 패키지 이름만 포함되어야 합니다.

예시 출력 구조

# v12.3.0 (2026-01-20)

## OS 변경
- Replace `amazon-ecr-containerd-resolver` with Docker resolver in `host-ctr` ([#760])
- Add MPS control daemon support to `nvidia-k8s-device-plugin` ([#789])

### 서드파티 패키지 업데이트
- Update `docker-cli-29`, `docker-engine-29` ([#785])
- Patch `containerd-2.1` to update GRPC ([#801])
- Update `libnvme`, `xfsprogs`, `nvme-cli`, `makedumpfile`, `keyutils`, `e2fsprogs` ([#794])
- Update `readline`, `libxcrypt`, `liburcu`, `libcap` ([#795])

[#760]: https://github.com/bottlerocket-os/bottlerocket-core-kit/pull/760
[#785]: https://github.com/bottlerocket-os/bottlerocket-core-kit/pull/785
[#789]: https://github.com/bottlerocket-os/bottlerocket-core-kit/pull/789
[#794]: https://github.com/bottlerocket-os/bottlerocket-core-kit/pull/794
[#795]: https://github.com/bottlerocket-os/bottlerocket-core-kit/pull/795
[#801]: https://github.com/bottlerocket-os/bottlerocket-core-kit/pull/801

Individual skills in this repo

This repo contains 19 individual skills — each has its own dedicated page.

ad-hoc-implementation-plan

Transform a rough plan into implement-commit ready artifacts. Allows rigorous review while implementing.

build-kit-locally

Build a kit and publish it to a locally hosted registry for development testing

build-variant-from-local-kits

Build a variant using locally published kits for development validation

deep-research

Create educational documents that build understanding progressively with citations

edit-spec-file

Edit Bottlerocket RPM spec files following project style conventions

fact-find

Quick lookup of specific facts about Bottlerocket with citations

idea-honing

Clarify feature ideas through iterative Q&A, recording insights to guide concept development

implement-commit

Implement commits from an implementation plan using a TDD pipeline

local-registry

Start and manage a local OCI registry for Bottlerocket kit development

propose-feature-concept

Create a new feature concept document to pitch the idea and explain the problem/solution

propose-feature-design

Create or update feature technical design document with architecture and implementation guidance

propose-feature-requirements

Create or update feature requirements specification using EARS notation with examples and appendices

propose-feature-test-plan

Create a test plan mapping EARS requirements and Critical Constraints to specific tests

propose-implementation-plan

Create an implementation plan with atomic commits that build toward a complete feature

review-code

Deep code review generating PR comments via principled question-driven analysis

review-scope

Verify code changes match intended scope and requirements without exceeding boundaries

review-style

Verify code follows project style guides without providing improvement suggestions

test-local-twoliter

Build and test local changes to twoliter before releasing

update-twoliter

Update all Bottlerocket repositories to a new Twoliter version

관련 스킬