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/dip
- 最近来源活动
- 2026年5月9日 21:13
- 检测到的 SKILL.md 语言
- 英语
- 星标
- 1,350
- 分支
- 50
安装方式
默认使用会先检查来源的 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 `dip` gem involves:
1. Bump version in `lib/dip/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/dip/settings`
- Add a Trusted Publisher for:
- Repository: `bibendi/dip`
- 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/dip/version.rb`. Follow [SemVer](https://semver.org/).
### 2. Update version file
Edit `lib/dip/version.rb` and update the `VERSION` constant:
```ruby
module Dip
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/dip/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 查看