Skip to content

feat: Plugin 버전 태그와 GitHub Release 자동 발행 - #5

Merged
jeonsworld merged 1 commit into
mainfrom
feat/automatic-version-release
Sep 16, 2026
Merged

jeonsworld merged 1 commit into
mainfrom
feat/automatic-version-release

Conversation

@jeonsworld

@jeonsworld jeonsworld commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

현재 manifest 버전의 태그와 Release를 수동으로 만들어야 하는 흐름을 자동화합니다. main의 Validate plugin 검증이 성공하면 plugins/ennoia/plugin.json을 읽어 v<version> 태그와 릴리스 노트를 포함한 GitHub Release를 발행합니다. 현재 버전은 1.1.0이며, 이 PR 병합 후 첫 성공 실행에서 v1.1.0이 생성됩니다.

같은 버전은 재발행하지 않고, 태그만 남은 실패는 같은 commit의 Release 생성으로 복구합니다. 기존 태그의 main 이력·manifest version을 확인하고 태그를 강제로 이동하지 않습니다. 사전 버전은 prerelease로 표시하며, PR·다른 branch·tag push에서는 발행하지 않습니다. contents: write는 발행 job에만 부여하고 기본 GITHUB_TOKEN을 사용합니다. Orchestrator·MCP와 앱의 Git repo 설치 방식은 변경하지 않습니다.

검증: 전체 회귀 42개 통과(Release 15개 포함), manifest sync·package validator·actionlint·diff 검사 통과. 최종 HTTP error 자원 정리 수정 후 Release 15개 재검증 통과. 실제 GitHub API의 main/tag/release 읽기도 확인했습니다. 태그·Release 쓰기는 테스트에서 mock했으며 실제 발행은 main 병합 후 확인합니다.

Summary by CodeRabbit

  • 새 기능

    • 검증이 완료된 main 변경 사항에서 버전 태그와 GitHub Release가 자동으로 생성됩니다.
    • 사전 버전은 prerelease로 표시되며, 이미 발행된 버전은 중복 발행되지 않습니다.
    • 태그 생성 후 Release 발행에 실패한 경우 수동 workflow 실행으로 복구할 수 있습니다.
    • Pull request, 다른 브랜치, 태그 push에서는 Release가 생성되지 않습니다.
  • 문서

    • 자동 릴리스 조건과 실패 복구 절차를 README 및 기여 안내서에 추가했습니다.

@coderabbitai

coderabbitai Bot commented Sep 16, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Essentials

Run ID: ff9208c8-19d9-4d74-8a05-fd7b9ad06c06

📥 Commits

Reviewing files that changed from the base of the PR and between 29a2c2c and 209fbab.

📒 Files selected for processing (5)
  • .github/workflows/validate.yml
  • CONTRIBUTING.md
  • README.md
  • scripts/release.py
  • tests/test_release.py

Included review availability: 3 reviews are currently available. Your included PR review attempts over the past 7 days set your current allowance at 4 reviews per hour.


Walkthrough

검증 완료 후 main의 push 또는 수동 실행에서 release job이 동작합니다. scripts/release.py는 manifest 버전과 commit SHA를 검증한 뒤 GitHub tag와 Release를 생성하거나 기존 상태를 확인합니다. 관련 운영 문서와 테스트도 추가했습니다.

Changes

릴리스 자동화

Layer / File(s) Summary
릴리스 workflow와 운영 절차
.github/workflows/validate.yml, CONTRIBUTING.md, README.md
validate 성공 후 main의 push 또는 workflow_dispatch에서만 release job을 실행합니다. contents: write, 5분 제한, 동시성 그룹을 설정하고 릴리스 확인 및 복구 절차를 문서화했습니다.
태그와 Release 게시 로직
scripts/release.py
SemVer와 40자리 commit SHA를 검증합니다. 기존 tag와 Release 상태를 확인하고, 필요한 경우 tag와 prerelease 설정을 포함한 GitHub Release를 생성합니다.
게시 상태 검증 테스트
tests/test_release.py
태그 및 Release 생성, 재시도, 이력 검증, draft 차단, 실행 ref 검증, prerelease와 API 오류 처리를 테스트합니다.

Priority: ⬇️ Low

Estimated code review effort: 4 (Complex) | ~45 minutes

Change: Feature

Sequence Diagram(s)

sequenceDiagram
  participant GitHubActions
  participant release.py
  participant GitHubAPI
  participant GitRepository
  GitHubActions->>release.py: 검증 성공 후 GITHUB_TOKEN과 SHA 전달
  release.py->>GitRepository: manifest 버전 읽기
  release.py->>GitHubAPI: main의 대상 SHA와 기존 tag 조회
  GitHubAPI-->>release.py: tag 및 Release 상태 반환
  release.py->>GitHubAPI: 필요한 경우 tag 생성
  release.py->>GitHubAPI: 필요한 경우 GitHub Release 생성
  GitHubAPI-->>GitHubActions: 게시 결과 반환
Loading

Merge Risk: ⚪ Minimal · up to 209fb

The automated release flow preserves the validated commit boundary and supports documented tag-only recovery, with no identified issue blocking merge.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 23 functions across 2 files. (3 skipped: 3… Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 플러그인 버전 태그와 GitHub Release를 자동 발행하는 이번 변경의 주요 목적을 정확하고 간결하게 설명합니다.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 23 functions across 2 files. (3 skipped: 3 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch

Warning

Errors were encountered while retrieving linked issues.

Errors (1)
  • JIRA integration encountered authorization issues. Please disconnect and reconnect the integration in the CodeRabbit UI.

Comment @coderabbitai help to get the list of available commands.

@jeonsworld jeonsworld self-assigned this Sep 16, 2026
@jeonsworld
jeonsworld merged commit 4314ef5 into main Sep 16, 2026
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant