Skip to content

Commit 116ab3d

Browse files
committed
Allow prereleases from prepare-release workflow
Fix #7551
1 parent 2637ec3 commit 116ab3d

File tree

2 files changed

+19
-9
lines changed

2 files changed

+19
-9
lines changed

.github/workflows/prepare-release-pr.yml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ on:
1111
description: 'Major release? (yes/no)'
1212
required: true
1313
default: 'no'
14+
prerelease:
15+
description: 'Prerelease (ex: "rc1", including the quotes)'
16+
required: true
17+
default: '""'
1418

1519
jobs:
1620
build:
@@ -34,9 +38,9 @@ jobs:
3438
- name: Prepare release PR (minor/patch release)
3539
if: github.event.inputs.major == 'no'
3640
run: |
37-
tox -e prepare-release-pr -- ${{ github.event.inputs.branch }} ${{ secrets.chatops }}
41+
tox -e prepare-release-pr -- ${{ github.event.inputs.branch }} ${{ secrets.chatops }} --prerelease ${{ github.event.inputs.prerelease }}
3842
3943
- name: Prepare release PR (major release)
4044
if: github.event.inputs.major == 'yes'
4145
run: |
42-
tox -e prepare-release-pr -- ${{ github.event.inputs.branch }} ${{ secrets.chatops }} --major
46+
tox -e prepare-release-pr -- ${{ github.event.inputs.branch }} ${{ secrets.chatops }} --major --prerelease ${{ github.event.inputs.prerelease }}

scripts/prepare-release-pr.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,16 @@ def login(token: str) -> Repository:
4747
return github.repository(owner, repo)
4848

4949

50-
def prepare_release_pr(base_branch: str, is_major: bool, token: str) -> None:
50+
def prepare_release_pr(
51+
base_branch: str, is_major: bool, token: str, prerelease: str
52+
) -> None:
5153
print()
5254
print(f"Processing release for branch {Fore.CYAN}{base_branch}")
5355

5456
check_call(["git", "checkout", f"origin/{base_branch}"])
5557

5658
try:
57-
version = find_next_version(base_branch, is_major)
59+
version = find_next_version(base_branch, is_major, prerelease)
5860
except InvalidFeatureRelease as e:
5961
print(f"{Fore.RED}{e}")
6062
raise SystemExit(1)
@@ -116,7 +118,7 @@ def prepare_release_pr(base_branch: str, is_major: bool, token: str) -> None:
116118
print(f"Pull request {Fore.CYAN}{pr.url}{Fore.RESET} created.")
117119

118120

119-
def find_next_version(base_branch: str, is_major: bool) -> str:
121+
def find_next_version(base_branch: str, is_major: bool, prerelease: str) -> str:
120122
output = check_output(["git", "tag"], encoding="UTF-8")
121123
valid_versions = []
122124
for v in output.splitlines():
@@ -134,11 +136,11 @@ def find_next_version(base_branch: str, is_major: bool) -> str:
134136
is_feature_release = features or breaking
135137

136138
if is_major:
137-
return f"{last_version[0]+1}.0.0"
139+
return f"{last_version[0]+1}.0.0{prerelease}"
138140
elif is_feature_release:
139-
return f"{last_version[0]}.{last_version[1] + 1}.0"
141+
return f"{last_version[0]}.{last_version[1] + 1}.0{prerelease}"
140142
else:
141-
return f"{last_version[0]}.{last_version[1]}.{last_version[2] + 1}"
143+
return f"{last_version[0]}.{last_version[1]}.{last_version[2] + 1}{prerelease}"
142144

143145

144146
def main() -> None:
@@ -147,9 +149,13 @@ def main() -> None:
147149
parser.add_argument("base_branch")
148150
parser.add_argument("token")
149151
parser.add_argument("--major", action="store_true", default=False)
152+
parser.add_argument("--prerelease", default="")
150153
options = parser.parse_args()
151154
prepare_release_pr(
152-
base_branch=options.base_branch, is_major=options.major, token=options.token
155+
base_branch=options.base_branch,
156+
is_major=options.major,
157+
token=options.token,
158+
prerelease=options.prerelease,
153159
)
154160

155161

0 commit comments

Comments
 (0)