Skip to content

Commit 6570a9e

Browse files
authored
chore(release): pass missing --remote argument to release workflows (#3883)
Workflows using `process-backports` and `promote-rc` subcommands were failing due to missing or hardcoded remote arguments. - Added `--remote` parameter to `promote-rc` subcommand. - Updated `release_process_backports.yaml` and `release_promote_rc.yaml` to pass `--remote origin`. - Updated tests in `release_test.py` to support and verify the new argument.
1 parent 839deaf commit 6570a9e

4 files changed

Lines changed: 32 additions & 22 deletions

File tree

.github/workflows/release_process_backports.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,6 @@ jobs:
3535
- name: Process Pending Backports
3636
run: |
3737
bazel run //tools/private/release -- \
38-
process-backports --issue ${{ inputs.issue }}
38+
process-backports --issue ${{ inputs.issue }} --remote origin
3939
env:
4040
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.github/workflows/release_promote_rc.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,6 @@ jobs:
3434
- name: Run Promote RC
3535
run: |
3636
bazel run //tools/private/release -- \
37-
promote-rc ${{ inputs.version }}
37+
promote-rc ${{ inputs.version }} --remote origin
3838
env:
3939
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

tests/tools/private/release/release_test.py

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -514,7 +514,9 @@ def test_replace_version_next_excludes_bazel_dirs(self):
514514
def test_valid_version(self):
515515
# These should not raise an exception
516516
releaser.create_parser().parse_args(["prepare", "0.28.0"])
517-
releaser.create_parser().parse_args(["promote-rc", "1.0.0"])
517+
releaser.create_parser().parse_args(
518+
["promote-rc", "1.0.0", "--remote", "origin"]
519+
)
518520
releaser.create_parser().parse_args(
519521
["create-release-issue", "--version", "1.2.3rc4"]
520522
)
@@ -1112,7 +1114,7 @@ def setUp(self):
11121114

11131115
def test_promote_rc_success(self):
11141116
# Arrange
1115-
args = MagicMock(version="2.0.0", issue=123, dry_run=False)
1117+
args = MagicMock(version="2.0.0", issue=123, dry_run=False, remote="my-remote")
11161118
self.mock_git.get_remote_tags.return_value = ["2.0.0-rc0", "2.0.0-rc1"]
11171119
self.mock_git.get_commit_sha.return_value = "abcdef123456"
11181120
self.mock_git.tag_exists.return_value = False
@@ -1124,12 +1126,12 @@ def test_promote_rc_success(self):
11241126

11251127
# Assert
11261128
self.assertEqual(result, 0)
1127-
self.mock_git.fetch.assert_called_once_with("upstream", tags=True, force=True)
1129+
self.mock_git.fetch.assert_called_once_with("my-remote", tags=True, force=True)
11281130
self.mock_git.get_commit_sha.assert_called_once_with("2.0.0-rc1")
11291131
self.mock_git.checkout.assert_not_called()
11301132
self.mock_git.tag_exists.assert_called_once_with("2.0.0")
11311133
self.mock_git.tag.assert_called_once_with("2.0.0", "abcdef123456")
1132-
self.mock_git.push.assert_called_once_with("upstream", "2.0.0")
1134+
self.mock_git.push.assert_called_once_with("my-remote", "2.0.0")
11331135

11341136
# Verify issue update
11351137
self.mock_gh.get_issue_body.assert_called_once_with(123)
@@ -1148,7 +1150,7 @@ def test_promote_rc_success(self):
11481150

11491151
def test_promote_rc_resolve_issue_success(self):
11501152
# Arrange
1151-
args = MagicMock(version="2.0.0", issue=None, dry_run=False)
1153+
args = MagicMock(version="2.0.0", issue=None, dry_run=False, remote="my-remote")
11521154
self.mock_git.get_remote_tags.return_value = ["2.0.0-rc1"]
11531155
self.mock_git.tag_exists.return_value = False
11541156
self.mock_gh.get_release_tracking_issue.side_effect = None
@@ -1162,11 +1164,12 @@ def test_promote_rc_resolve_issue_success(self):
11621164

11631165
# Assert
11641166
self.assertEqual(result, 0)
1167+
self.mock_git.fetch.assert_called_once_with("my-remote", tags=True, force=True)
11651168
self.mock_gh.get_release_tracking_issue.assert_called_once_with("2.0.0")
11661169
self.mock_git.get_commit_sha.assert_called_once_with("2.0.0-rc1")
11671170
self.mock_git.checkout.assert_not_called()
11681171
self.mock_git.tag.assert_called_once_with("2.0.0", "abcdef123456")
1169-
self.mock_git.push.assert_called_once_with("upstream", "2.0.0")
1172+
self.mock_git.push.assert_called_once_with("my-remote", "2.0.0")
11701173
self.mock_gh.get_issue_body.assert_called_once_with(123)
11711174
expected_updated_body = (
11721175
"- [x] Tag Final | status=done tag=2.0.0 commit=abcdef12"
@@ -1183,7 +1186,7 @@ def test_promote_rc_resolve_issue_success(self):
11831186

11841187
def test_promote_rc_defaults_to_determine_next_version(self):
11851188
# Arrange
1186-
args = MagicMock(version=None, issue=123, dry_run=False)
1189+
args = MagicMock(version=None, issue=123, dry_run=False, remote="my-remote")
11871190
self.mock_git.get_current_branch.return_value = "release/2.0"
11881191
self.mock_git.get_tags.return_value = ["2.0.0"]
11891192
self.mock_git.get_remote_tags.return_value = ["2.0.1-rc0"]
@@ -1197,14 +1200,15 @@ def test_promote_rc_defaults_to_determine_next_version(self):
11971200

11981201
# Assert
11991202
self.assertEqual(result, 0)
1203+
self.mock_git.fetch.assert_called_once_with("my-remote", tags=True, force=True)
12001204
self.mock_git.get_current_branch.assert_called_once()
12011205
self.mock_git.get_tags.assert_called_once()
1202-
self.mock_git.get_remote_tags.assert_called_once_with("upstream")
1206+
self.mock_git.get_remote_tags.assert_called_once_with("my-remote")
12031207

12041208
self.mock_git.checkout.assert_not_called()
12051209
self.mock_git.get_commit_sha.assert_called_once_with("2.0.1-rc0")
12061210
self.mock_git.tag.assert_called_once_with("2.0.1", "12345678")
1207-
self.mock_git.push.assert_called_once_with("upstream", "2.0.1")
1211+
self.mock_git.push.assert_called_once_with("my-remote", "2.0.1")
12081212

12091213
expected_updated_body = (
12101214
"- [x] Tag Final | status=done tag=2.0.1 commit=12345678"
@@ -1221,7 +1225,7 @@ def test_promote_rc_defaults_to_determine_next_version(self):
12211225

12221226
def test_promote_rc_dry_run_success(self):
12231227
# Arrange
1224-
args = MagicMock(version="2.0.0", issue=123, dry_run=True)
1228+
args = MagicMock(version="2.0.0", issue=123, dry_run=True, remote="my-remote")
12251229
self.mock_git.get_remote_tags.return_value = ["2.0.0-rc0", "2.0.0-rc1"]
12261230
self.mock_git.get_commit_sha.return_value = "abcdef123456"
12271231
self.mock_git.tag_exists.return_value = False
@@ -1233,7 +1237,7 @@ def test_promote_rc_dry_run_success(self):
12331237

12341238
# Assert
12351239
self.assertEqual(result, 0)
1236-
self.mock_git.fetch.assert_called_once_with("upstream", tags=True, force=True)
1240+
self.mock_git.fetch.assert_called_once_with("my-remote", tags=True, force=True)
12371241
self.mock_git.get_commit_sha.assert_called_once_with("2.0.0-rc1")
12381242
self.mock_git.tag_exists.assert_called_once_with("2.0.0")
12391243

@@ -1245,7 +1249,7 @@ def test_promote_rc_dry_run_success(self):
12451249

12461250
def test_promote_rc_tag_already_exists(self):
12471251
# Arrange
1248-
args = MagicMock(version="2.0.0", issue=123)
1252+
args = MagicMock(version="2.0.0", issue=123, remote="my-remote")
12491253
self.mock_git.get_remote_tags.return_value = ["2.0.0-rc1"]
12501254
self.mock_git.tag_exists.return_value = True
12511255

@@ -1262,7 +1266,7 @@ def test_promote_rc_tag_already_exists(self):
12621266

12631267
def test_promote_rc_issue_not_found(self):
12641268
# Arrange
1265-
args = MagicMock(version="2.0.0", issue=None)
1269+
args = MagicMock(version="2.0.0", issue=None, remote="my-remote")
12661270
self.mock_git.get_remote_tags.return_value = ["2.0.0-rc1"]
12671271
self.mock_git.tag_exists.return_value = False
12681272
self.mock_gh.get_release_tracking_issue.side_effect = NoTrackingIssueError(
@@ -1282,7 +1286,7 @@ def test_promote_rc_issue_not_found(self):
12821286

12831287
def test_promote_rc_issue_malformed(self):
12841288
# Arrange
1285-
args = MagicMock(version="2.0.0", issue=123)
1289+
args = MagicMock(version="2.0.0", issue=123, remote="my-remote")
12861290
self.mock_git.get_remote_tags.return_value = ["2.0.0-rc1"]
12871291
self.mock_git.tag_exists.return_value = False
12881292
self.mock_git.get_commit_sha.return_value = "abcdef123456"
@@ -1302,7 +1306,7 @@ def test_promote_rc_issue_malformed(self):
13021306

13031307
def test_promote_rc_no_rc_found(self):
13041308
# Arrange
1305-
args = MagicMock(version="2.0.0", issue=123)
1309+
args = MagicMock(version="2.0.0", issue=123, remote="my-remote")
13061310
self.mock_git.get_remote_tags.return_value = []
13071311

13081312
# Act

tools/private/release/promote_rc.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,14 @@ def __init__(self, args, git: Git, gh: GitHub):
2525
def run(self) -> int:
2626
"""Executes the promote-rc subcommand (Phase 3)."""
2727
args = self.args
28-
# Fetch from upstream to ensure we have the latest tags
29-
self.git.fetch("upstream", tags=True, force=True)
28+
# Fetch from remote to ensure we have the latest tags
29+
self.git.fetch(args.remote, tags=True, force=True)
3030

3131
version = args.version
3232
if version is None:
3333
version = determine_next_version()
3434

35-
latest_rc = get_latest_rc_tag(version, remote="upstream")
35+
latest_rc = get_latest_rc_tag(version, remote=args.remote)
3636
if not latest_rc:
3737
print(f"Error: No release candidate tags found matching {version}-rc*")
3838
return 1
@@ -86,9 +86,9 @@ def run(self) -> int:
8686
f" {commit_sha[:8]}) using tracking issue #{issue_num}..."
8787
)
8888

89-
# Tag the specific commit without checkout, and push to upstream
89+
# Tag the specific commit without checkout, and push to remote
9090
self.git.tag(version, commit_sha)
91-
self.git.push("upstream", version)
91+
self.git.push(args.remote, version)
9292

9393
print(f"Updating tracking issue #{issue_num} checklist...")
9494
self.gh.update_issue_body(issue_num, updated_body)
@@ -127,6 +127,12 @@ def add_parser(cls, subparsers):
127127
type=int,
128128
help="The tracking issue number (optional).",
129129
)
130+
parser.add_argument(
131+
"--remote",
132+
type=str,
133+
required=True,
134+
help="The git remote to push the final tag to (required).",
135+
)
130136
parser.add_argument(
131137
"--dry-run",
132138
action=argparse.BooleanOptionalAction,

0 commit comments

Comments
 (0)