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
- آخر نشاط في المصدر
- ٥ يوليو ٢٠٢٦ في ١٢:٤١
- لغة SKILL.md المكتشفة
- الإنجليزية
- النجوم
- ١٣٨
- التفرعات
- ١
خيارات التثبيت
يُحدَّد 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