You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@magpie.apache.org by po...@apache.org on 2026/07/08 17:55:51 UTC

(magpie) 01/01: feat(release): make the RC-tag push remote configurable via git_upstream_remote

This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch feat-release-configurable-remote
in repository https://gitbox.apache.org/repos/asf/magpie.git

commit f40066367343993fca176561735629f72c479937
Author: Jarek Potiuk <ja...@potiuk.com>
AuthorDate: Wed Jul 8 19:55:05 2026 +0200

    feat(release): make the RC-tag push remote configurable via git_upstream_remote
    
    release-rc-cut hardcoded the tag push to a substitute-it-yourself
    `<upstream-remote>` placeholder defaulting to `origin`, so an RM whose
    upstream remote is named `upstream` or `apache` had to hand-edit every
    emitted recipe. Add a `git_upstream_remote` config key that release-rc-cut
    resolves to emit the concrete remote name, plus a `--remote` per-invocation
    override. Set to `upstream` in Magpie's own config; default `origin` in the
    adopter template.
---
 projects/_template/release-management-config.md |  8 ++++++++
 projects/magpie/release-management-config.md    |  1 +
 skills/release-rc-cut/SKILL.md                  | 15 ++++++++++-----
 3 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/projects/_template/release-management-config.md b/projects/_template/release-management-config.md
index 591102fe..10c27489 100644
--- a/projects/_template/release-management-config.md
+++ b/projects/_template/release-management-config.md
@@ -54,10 +54,18 @@ ship in the same adopter directory and are referenced from here:
 | Key | Value |
 |---|---|
 | `project_dist_name` | `airflow` |
+| `git_upstream_remote` | `origin` |
 | `release_planning_issue_template` | `<project-config>/release-planning-issue.md` |
 | `release_branch_base` | `main` |
 | `version_manifest_files` | `setup.cfg`, `airflow/__init__.py` |
 
+> `git_upstream_remote` is the **git remote name** in the RM's local
+> checkout that points at the upstream release repo (`<upstream>`), used
+> by `release-rc-cut` for the RC tag push. Typical values: `origin` (when
+> the RM's checkout is a direct clone of the upstream), `upstream`, or
+> `apache`. Defaults to `origin` if unset; override per-invocation with
+> `release-rc-cut`'s `--remote` flag.
+
 ## Backends
 
 Three switches select the backend each skill in the family emits
diff --git a/projects/magpie/release-management-config.md b/projects/magpie/release-management-config.md
index 22476c1c..627d6d5e 100644
--- a/projects/magpie/release-management-config.md
+++ b/projects/magpie/release-management-config.md
@@ -54,6 +54,7 @@ mandatory ASF approval + announce mechanisms (`dev-list-vote`,
 | `project_dist_name` | `magpie` |
 | `product_name` | `Apache Magpie` |
 | `upstream` | `apache/magpie` |
+| `git_upstream_remote` | `upstream` |
 | `release_planning_issue_template` | *(none — uses the `release-prepare` default template)* |
 | `release_branch_base` | `main` |
 | `version_manifest_files` | `pyproject.toml` |
diff --git a/skills/release-rc-cut/SKILL.md b/skills/release-rc-cut/SKILL.md
index 1e880cf9..f29bcc83 100644
--- a/skills/release-rc-cut/SKILL.md
+++ b/skills/release-rc-cut/SKILL.md
@@ -166,6 +166,7 @@ non-blocking.
 | `rc<N>` (positional, required) | RC suffix (e.g. `rc1`) |
 | `--planning-issue <url>` | Explicit planning issue URL (auto-detected if omitted) |
 | `--release-branch <branch>` | Override release branch (default from `release_branch_base` in config) |
+| `--remote <name>` | Override the git remote name pointing at the upstream repo (default from `git_upstream_remote` in config, else `origin`) |
 
 ---
 
@@ -223,6 +224,7 @@ Read the following from `<project-config>/release-build.md` and
 | `staging_url` | `release-management-config.md` | `release_dist_url_template` rendered with `<version>-<rcN>` at `dist/dev/<project>/` (for `release_dist_backend = svnpubsub`) |
 | `signing_key_fingerprint` | user.md or `release-management-config.md` | `rm_key_fingerprint` |
 | `release_branch` | `release-management-config.md` | `release_branch_base` (or `--release-branch` override) |
+| `git_upstream_remote` | `release-management-config.md` | `git_upstream_remote` — git remote name pointing at the upstream repo (default `origin`, or `--remote` override) |
 
 Surface the loaded configuration to the RM for confirmation before
 proceeding to Step 2.
@@ -239,7 +241,8 @@ Return ONLY valid JSON with this structure:
   "backend": "svnpubsub" | "github-releases" | "s3" | "self-hosted",
   "staging_url": "<URL>",
   "signing_key_fingerprint": "<fingerprint or empty string>",
-  "release_branch": "<branch>"
+  "release_branch": "<branch>",
+  "git_upstream_remote": "<remote>"
 }
 ```
 
@@ -256,11 +259,13 @@ configuration.
 git tag -s <version>-<rcN> \
   -m "Release <version> RC<N>" \
   HEAD
-git push <upstream-remote> <version>-<rcN>
+git push <git-upstream-remote> <version>-<rcN>
 ```
 
-`<upstream-remote>` is the name the RM's checkout uses for the upstream
-remote (default `origin`; mention it explicitly so the RM can substitute).
+`<git-upstream-remote>` resolves from `git_upstream_remote` in
+`release-management-config.md` — the git remote name pointing at the
+upstream repo (typical: `origin`, `upstream`, `apache`; default `origin`;
+`--remote` overrides). Emit the concrete resolved name, not the placeholder.
 
 **Section 2 — Build command.**
 
@@ -478,7 +483,7 @@ The AI-driven part ends with a hand-back artefact containing:
 - [`<project-config>/release-management-config.md`](../../projects/_template/release-management-config.md) —
   adopter keys this skill reads (`release_dist_backend`,
   `release_dist_url_template`, `release_publish_command_template`,
-  `rm_key_fingerprint`, `release_branch_base`).
+  `rm_key_fingerprint`, `release_branch_base`, `git_upstream_remote`).
 - `release-keys-sync` — upstream step; the RM's public key must be in
   `KEYS` before the RC is tagged.
 - `release-prepare` — upstream step; the prep PR it creates must be merged.