-
Notifications
You must be signed in to change notification settings - Fork 504
.agents/skills: add mz-dbt-release runbook #36637
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,145 @@ | ||
| --- | ||
| name: mz-dbt-release | ||
| description: > | ||
| Cut a dbt-materialize PyPI release: bump the version in `__version__.py` | ||
| and `setup.py`, date the `Unreleased` CHANGELOG entry, and open the | ||
| release PR with a `Ship: <url>` body. Trigger: "cut a dbt release", | ||
| "release dbt-materialize", "release the dbt adapter", "ship | ||
| dbt-materialize vX.Y.Z", "publish dbt-materialize to PyPI", "bump | ||
| dbt-materialize version", "new dbt adapter version". Use this skill | ||
| even if the user just says "ship the dbt adapter" or pastes a feature | ||
| PR and asks for "the next dbt release" without naming version mechanics. | ||
| --- | ||
|
|
||
| # Cutting a dbt-materialize release | ||
|
|
||
| A release PR bumps the published version of the `dbt-materialize` PyPI | ||
| package. It is mechanical: three files change, one commit, one PR. | ||
|
|
||
| The adapter lives in `misc/dbt-materialize/`. PyPI publication is handled by | ||
| CI after the PR merges. | ||
|
|
||
| ## Files to touch | ||
|
|
||
| Exactly three files: | ||
|
|
||
| | File | Change | | ||
| |---|---| | ||
| | `misc/dbt-materialize/dbt/adapters/materialize/__version__.py` | Bump `version = "X.Y.Z"` | | ||
| | `misc/dbt-materialize/setup.py` | Bump `version="X.Y.Z"` (kwarg in `setup(...)`) | | ||
| | `misc/dbt-materialize/CHANGELOG.md` | Insert `## X.Y.Z - YYYY-MM-DD` between `## Unreleased` and the existing bullets | | ||
|
|
||
| Both version strings must stay in sync — the comments in each file say so. | ||
|
|
||
| ## Picking the next version | ||
|
|
||
| * Default: bump the **patch** component (`1.9.9 → 1.9.10`). | ||
| * The **minor** component tracks the required `dbt-postgres` minor. Only bump | ||
| minor when upgrading to a new `dbt-postgres` minor (e.g. `1.9.x → 1.10.0`). | ||
| * Read the current version from `__version__.py`. | ||
|
|
||
| ## Confirming what's being released | ||
|
|
||
| The `## Unreleased` section of `CHANGELOG.md` is the source of truth for what | ||
| ships. If it's empty, there is nothing to release. Cross-check with: | ||
|
|
||
| ``` | ||
| git log <prev-release-sha>..HEAD -- misc/dbt-materialize/ | ||
| ``` | ||
|
|
||
| If a commit since the previous release touched `misc/dbt-materialize/` but is | ||
| not represented under `## Unreleased`, stop and ask whether it should be | ||
| included — don't silently invent a changelog entry. | ||
|
|
||
| ## CHANGELOG edit | ||
|
|
||
| The release does **not** rewrite the unreleased bullets; it just dates them. | ||
| Insert a new dated heading immediately after `## Unreleased`, leaving | ||
| `## Unreleased` itself empty: | ||
|
|
||
| ``` | ||
| ## Unreleased | ||
|
|
||
| ## 1.9.10 - 2026-05-20 | ||
|
|
||
| * Support unmanaged clusters in `deploy_init`. ... | ||
| ``` | ||
|
|
||
| Use today's date in `YYYY-MM-DD`. | ||
|
|
||
| ## Branch, commit, PR | ||
|
|
||
| * Branch name: `dbt-release-X.Y.Z`, branched from current `main`. | ||
| * Commit subject: `dbt-materialize: release vX.Y.Z` | ||
| * Commit body / PR body: a single `Ship: <url>` line pointing at the PR that | ||
| triggered this release (the feature/fix PR being shipped). If multiple PRs | ||
| are being shipped, pick the headline one — the changelog already enumerates | ||
| them. | ||
| * PR title: same as the commit subject. | ||
| * PR targets `MaterializeInc/materialize:main`. | ||
|
|
||
| Example: | ||
|
|
||
| ``` | ||
| gh pr create --repo MaterializeInc/materialize --base main \ | ||
| --head <your-fork>:dbt-release-1.9.10 \ | ||
| --title "dbt-materialize: release v1.9.10" \ | ||
| --body "Ship: https://github.com/MaterializeInc/materialize/pull/36625" | ||
| ``` | ||
|
|
||
| ## What you do NOT run | ||
|
|
||
| This PR touches only Python version strings and Markdown. Skip: | ||
|
|
||
| * `cargo check`, `cargo clippy`, Cargo.lock work — no Rust changes. | ||
| * Test suites — there are no tests to add for a version bump. | ||
|
|
||
| `bin/fmt` and `bin/lint` cover `misc/dbt-materialize/*.py`, but a | ||
| one-character version bump almost never triggers them. Run them if | ||
| you've made an accidental wider change; otherwise they're optional. | ||
|
|
||
| ## Verifying before pushing | ||
|
|
||
| ``` | ||
| git diff --stat | ||
| ``` | ||
|
|
||
| Should show exactly three files, predominantly a `+4 / -2` shape (one | ||
| line each in the two version files, two added lines in `CHANGELOG.md`). | ||
| A few extra lines in `CHANGELOG.md` are fine if a bullet was reformatted | ||
| while finalising it; an unexpected fourth file means you've gone | ||
| off-script. | ||
|
|
||
| ## Quick reference | ||
|
|
||
| ``` | ||
| # 1. Branch | ||
| git checkout -b dbt-release-X.Y.Z | ||
|
|
||
| # 2. Edit the three files (see table above) | ||
|
|
||
| # 3. Verify | ||
| git diff --stat # expect 3 files, +4/-2 | ||
|
|
||
| # 4. Commit | ||
| git commit -am "dbt-materialize: release vX.Y.Z | ||
|
|
||
| Ship: <feature-pr-url>" | ||
|
|
||
| # 5. Push and open PR | ||
| git push -u origin dbt-release-X.Y.Z | ||
| gh pr create --repo MaterializeInc/materialize --base main \ | ||
| --head <your-fork>:dbt-release-X.Y.Z \ | ||
| --title "dbt-materialize: release vX.Y.Z" \ | ||
| --body "Ship: <feature-pr-url>" | ||
| ``` | ||
|
|
||
| ## Historical reference | ||
|
|
||
| Recent release commits (find via `git log --oneline -- misc/dbt-materialize/dbt/adapters/materialize/__version__.py`): | ||
|
|
||
| * v1.9.10 — PR #36636 | ||
| * v1.9.9 — PR #36609 | ||
| * v1.9.8 — PR #36529 | ||
|
|
||
| Inspect any of them with `git show <sha>` to see the exact diff shape. | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.