Skip to content

Commit 0d6cb3b

Browse files
authored
Allow prereleases from prepare-release workflow (#8628)
Fix #7551
1 parent d7b0e17 commit 0d6cb3b

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). Leave empty if not a pre-release.'
16+
required: true
17+
default: ''
1418

1519
# Set permissions at the job level.
1620
permissions: {}
@@ -41,9 +45,9 @@ jobs:
4145
- name: Prepare release PR (minor/patch release)
4246
if: github.event.inputs.major == 'no'
4347
run: |
44-
tox -e prepare-release-pr -- ${{ github.event.inputs.branch }} ${{ github.token }}
48+
tox -e prepare-release-pr -- ${{ github.event.inputs.branch }} ${{ github.token }} --prerelease '${{ github.event.inputs.prerelease }}'
4549
4650
- name: Prepare release PR (major release)
4751
if: github.event.inputs.major == 'yes'
4852
run: |
49-
tox -e prepare-release-pr -- ${{ github.event.inputs.branch }} ${{ github.token }} --major
53+
tox -e prepare-release-pr -- ${{ github.event.inputs.branch }} ${{ github.token }} --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
@@ -46,14 +46,16 @@ def login(token: str) -> Repository:
4646
return github.repository(owner, repo)
4747

4848

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

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

5557
try:
56-
version = find_next_version(base_branch, is_major)
58+
version = find_next_version(base_branch, is_major, prerelease)
5759
except InvalidFeatureRelease as e:
5860
print(f"{Fore.RED}{e}")
5961
raise SystemExit(1)
@@ -115,7 +117,7 @@ def prepare_release_pr(base_branch: str, is_major: bool, token: str) -> None:
115117
print(f"Pull request {Fore.CYAN}{pr.url}{Fore.RESET} created.")
116118

117119

118-
def find_next_version(base_branch: str, is_major: bool) -> str:
120+
def find_next_version(base_branch: str, is_major: bool, prerelease: str) -> str:
119121
output = check_output(["git", "tag"], encoding="UTF-8")
120122
valid_versions = []
121123
for v in output.splitlines():
@@ -133,11 +135,11 @@ def find_next_version(base_branch: str, is_major: bool) -> str:
133135
is_feature_release = features or breaking
134136

135137
if is_major:
136-
return f"{last_version[0]+1}.0.0"
138+
return f"{last_version[0]+1}.0.0{prerelease}"
137139
elif is_feature_release:
138-
return f"{last_version[0]}.{last_version[1] + 1}.0"
140+
return f"{last_version[0]}.{last_version[1] + 1}.0{prerelease}"
139141
else:
140-
return f"{last_version[0]}.{last_version[1]}.{last_version[2] + 1}"
142+
return f"{last_version[0]}.{last_version[1]}.{last_version[2] + 1}{prerelease}"
141143

142144

143145
def main() -> None:
@@ -146,9 +148,13 @@ def main() -> None:
146148
parser.add_argument("base_branch")
147149
parser.add_argument("token")
148150
parser.add_argument("--major", action="store_true", default=False)
151+
parser.add_argument("--prerelease", default="")
149152
options = parser.parse_args()
150153
prepare_release_pr(
151-
base_branch=options.base_branch, is_major=options.major, token=options.token
154+
base_branch=options.base_branch,
155+
is_major=options.major,
156+
token=options.token,
157+
prerelease=options.prerelease,
152158
)
153159

154160

0 commit comments

Comments
 (0)