release
Guides through the full gem release process — bump version, update CHANGELOG, tag, push to RubyGems, and create GitHub Release. Use when user asks to release a new version, cut a release, or similar.
소스 정보
- 저장소
- bibendi/schked
- 최근 소스 활동
- 2026년 7월 5일 12:41
- 감지된 SKILL.md 언어
- 영어
- 스타
- 138
- 포크
- 1
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
SKILL.md 표시 중
SKILL.md
소스 지침 · 읽기 전용 미리보기- name
- release
- description
- Guides through the full gem release process — bump version, update CHANGELOG, tag, push to RubyGems, and create GitHub Release. Use when user asks to release a new version, cut a release, or similar.
- allowed-tools
- Bash
# Gem Release Process
## Overview
The release process for the `schked` gem involves:
1. Bump version in `lib/schked/version.rb`
2. Add new section in `CHANGELOG.md`
3. Commit and push changes to `master`
4. Create and push a git tag `vX.Y.Z`
5. CI handles the rest (push to RubyGems via Trusted Publishing + GitHub Release)
## Prerequisites
- Trusted Publisher must be configured on RubyGems.org:
- Go to `https://rubygems.org/gems/schked/settings`
- Add a Trusted Publisher for:
- Repository: `bibendi/schked`
- Workflow: `release.yml`
- Environment: *(leave empty)*
- You must have push access to the repository
- The CI must be green on `master` before releasing (recommended)
## Step-by-step
### 1. Determine new version
Look at current version in `lib/schked/version.rb`. Follow [SemVer](https://semver.org/).
### 2. Update version file
Edit `lib/schked/version.rb` and update the `VERSION` constant:
```ruby
module Schked
VERSION = "X.Y.Z"
end
```
### 3. Update CHANGELOG
Edit `CHANGELOG.md` and add a new section at the top (after `# Changelog`):
```markdown
## [X.Y.Z] - YYYY-MM-DD
- Description of change [#123]
```
Use the format `## [X.Y.Z] - YYYY-MM-DD` with no `v` prefix.
Prefix breaking changes with `**BREAKING**`.
### 4. Commit
```bash
git add lib/schked/version.rb CHANGELOG.md
git commit -m "chore: bump version to X.Y.Z"
```
### 5. Push to master
```bash
git push origin master
```
### 6. Tag and push the tag
```bash
git tag vX.Y.Z
git push origin vX.Y.Z
```
### 7. CI does the rest
Pushing the `vX.Y.Z` tag triggers `.github/workflows/release.yml` which:
1. Builds the gem and pushes to RubyGems via `rubygems/release-gem` action (Trusted Publishing — no API keys needed)
2. `bundle exec rake release` runs under the hood — skips tag creation since it already exists (`already_tagged?` guard)
3. Extracts changelog section via `scripts/release_notes.sh`
4. Creates a GitHub Release with the changelog as notes and `.gem` as asset
## Troubleshooting
- **`rake release` fails with "not clean"**: Ensure all changes are committed before pushing the tag
- **Trusted Publishing fails**: Verify the publisher is correctly configured on rubygems.org and the workflow name matches exactly `release.yml`
- **Tag already exists**: If you need to re-release, delete the tag locally and remotely first (`git tag -d vX.Y.Z && git push origin :refs/tags/vX.Y.Z`)
GitHub에서 보기