pre-release-branch
Prepare release notes and open a pre-release PR for ignition-config-rs
معلومات المصدر
- المستودع
- coreos/ignition-config-rs
- آخر نشاط في المصدر
- ٨ أبريل ٢٠٢٦ في ١٨:٢٦
- لغة SKILL.md المكتشفة
- الإنجليزية
- النجوم
- ٥
- التفرعات
- ٧
خيارات التثبيت
يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.
مراجعة ملفات المصدر
اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.
عرض SKILL.md
SKILL.md
تعليمات المصدر · معاينة للقراءة فقط- name
- pre-release-branch
- description
- Prepare release notes and open a pre-release PR for ignition-config-rs
# Pre-Release Branch
## What it does
Prepares `docs/release-notes.md` for a new release and opens a PR:
1. Creates a `pre-release-X.Y.Z` branch
2. Converts the "Upcoming" header to a dated release header
3. Adds a new "Upcoming" header for the next development cycle
4. Commits with the standard message format
5. Pushes the branch and opens a PR
## Prerequisites
- `git` and `gh` CLI installed
- Push access to the repository
- Clean git working tree on `main`
## Usage
```bash
# Prepare release 0.7.0
/pre-release-branch 0.7.0
# Specify the next upcoming version explicitly
/pre-release-branch 0.7.0 --next 0.8.0
```
## Workflow
### Step 1: Parse input and determine versions
The release version argument is required (e.g., `0.7.0`).
```
RELEASE_VER = argument (e.g., "0.7.0")
RELEASE_MAJOR = 0
RELEASE_MINOR = 7
RELEASE_PATCH = 0
```
Determine the next upcoming version. If `--next` was provided, use that. Otherwise:
- If patch is 0: next minor version (e.g., `0.7.0` -> `0.8.0`)
- If patch > 0: next minor version (e.g., `0.6.1` -> `0.7.0`)
```
NEXT_VER = next version (e.g., "0.8.0")
TODAY = today's date in YYYY-MM-DD format
```
### Step 2: Pre-flight checks
Verify:
- Working tree is clean: `git status --porcelain` produces no output
- On `main` branch: `git branch --show-current` returns `main`
- `docs/release-notes.md` exists
- The file contains an "Upcoming" header matching the release version. Read `docs/release-notes.md` and look for a heading like:
```
## Upcoming ignition-config {RELEASE_VER} (unreleased)
```
If this heading does not exist, warn the user -- they may need to add it first, or the version may be wrong.
If any check fails, stop and report the issue.
### Step 3: Create branch
```bash
git checkout -b pre-release-{RELEASE_VER}
```
### Step 4: Update `docs/release-notes.md`
The file follows this structure. Find the "Upcoming" heading and make two changes:
**4a. Replace the "Upcoming" heading with a dated release heading:**
Find:
```markdown
## Upcoming ignition-config {RELEASE_VER} (unreleased)
```
Replace with:
```markdown
## Upcoming ignition-config {NEXT_VER} (unreleased)
## ignition-config {RELEASE_VER} ({TODAY})
```
This inserts the new "Upcoming" header above, with two blank lines separating it from the now-dated release header.
**4b. Keep all existing bullet points under the release header.** Do not move or modify them -- they stay under the now-dated heading where they were.
### Step 5: Commit
```bash
git add docs/release-notes.md
git commit -m "docs/release-notes: update for release {RELEASE_VER}"
```
### Step 6: Push and open PR
```bash
git push {UPSTREAM_REMOTE} pre-release-{RELEASE_VER}
```
Where `{UPSTREAM_REMOTE}` is typically `origin`. Verify with `git remote -v` if unsure.
Open a PR:
```bash
gh pr create \
--title "docs/release-notes: update for release {RELEASE_VER}" \
--body "$(cat <<'EOF'
## Summary
- Update release notes for {RELEASE_VER} release
- Add new "Upcoming {NEXT_VER}" section for next development cycle
Part of the release process for {RELEASE_VER}. See the [release checklist](https://github.com/coreos/ignition-config-rs/issues/new?labels=release&template=release-checklist.md).
EOF
)"
```
### Step 7: Report results
Summarize what was done:
- The commit created
- The PR URL
- Remind the user of the next release checklist steps:
- Get the PR reviewed and merged
- Then proceed with `cargo release` on a `release-{RELEASE_VER}` branch
## Checklist Coverage
From the [release checklist](.github/ISSUE_TEMPLATE/release-checklist.md), this skill covers:
- [x] `git checkout -b pre-release-${RELEASE_VER}`
- [x] Write release notes in `docs/release-notes.md`
- [x] `git add docs/release-notes.md && git commit -m "docs/release-notes: update for release ${RELEASE_VER}"`
- [x] PR the changes
## What's NOT covered
- Writing the actual release note bullet points (those should already exist under the "Upcoming" heading)
- Checking `Cargo.toml` for unintended dependency bound changes
- The `cargo release` step (separate branch, requires GPG)
- Publishing to crates.io
- GitHub release creation
- Fedora packaging
## References
- Release checklist: `.github/ISSUE_TEMPLATE/release-checklist.md`
- CI enforcement: `.github/workflows/require-release-note.yml` (PRs must modify `docs/release-notes.md`)
- Example commits: `f1244a5` (0.6.1), `40aea00` (0.6.0), `f7ec268` (0.5.0), `fdfff99` (0.4.1), `0693d30` (0.4.0)
عرض على GitHub