parent
d7b0e17205
commit
0d6cb3b281
|
@ -11,6 +11,10 @@ on:
|
||||||
description: 'Major release? (yes/no)'
|
description: 'Major release? (yes/no)'
|
||||||
required: true
|
required: true
|
||||||
default: 'no'
|
default: 'no'
|
||||||
|
prerelease:
|
||||||
|
description: 'Prerelease (ex: rc1). Leave empty if not a pre-release.'
|
||||||
|
required: true
|
||||||
|
default: ''
|
||||||
|
|
||||||
# Set permissions at the job level.
|
# Set permissions at the job level.
|
||||||
permissions: {}
|
permissions: {}
|
||||||
|
@ -41,9 +45,9 @@ jobs:
|
||||||
- name: Prepare release PR (minor/patch release)
|
- name: Prepare release PR (minor/patch release)
|
||||||
if: github.event.inputs.major == 'no'
|
if: github.event.inputs.major == 'no'
|
||||||
run: |
|
run: |
|
||||||
tox -e prepare-release-pr -- ${{ github.event.inputs.branch }} ${{ github.token }}
|
tox -e prepare-release-pr -- ${{ github.event.inputs.branch }} ${{ github.token }} --prerelease '${{ github.event.inputs.prerelease }}'
|
||||||
|
|
||||||
- name: Prepare release PR (major release)
|
- name: Prepare release PR (major release)
|
||||||
if: github.event.inputs.major == 'yes'
|
if: github.event.inputs.major == 'yes'
|
||||||
run: |
|
run: |
|
||||||
tox -e prepare-release-pr -- ${{ github.event.inputs.branch }} ${{ github.token }} --major
|
tox -e prepare-release-pr -- ${{ github.event.inputs.branch }} ${{ github.token }} --major --prerelease '${{ github.event.inputs.prerelease }}'
|
||||||
|
|
|
@ -46,14 +46,16 @@ def login(token: str) -> Repository:
|
||||||
return github.repository(owner, repo)
|
return github.repository(owner, repo)
|
||||||
|
|
||||||
|
|
||||||
def prepare_release_pr(base_branch: str, is_major: bool, token: str) -> None:
|
def prepare_release_pr(
|
||||||
|
base_branch: str, is_major: bool, token: str, prerelease: str
|
||||||
|
) -> None:
|
||||||
print()
|
print()
|
||||||
print(f"Processing release for branch {Fore.CYAN}{base_branch}")
|
print(f"Processing release for branch {Fore.CYAN}{base_branch}")
|
||||||
|
|
||||||
check_call(["git", "checkout", f"origin/{base_branch}"])
|
check_call(["git", "checkout", f"origin/{base_branch}"])
|
||||||
|
|
||||||
try:
|
try:
|
||||||
version = find_next_version(base_branch, is_major)
|
version = find_next_version(base_branch, is_major, prerelease)
|
||||||
except InvalidFeatureRelease as e:
|
except InvalidFeatureRelease as e:
|
||||||
print(f"{Fore.RED}{e}")
|
print(f"{Fore.RED}{e}")
|
||||||
raise SystemExit(1)
|
raise SystemExit(1)
|
||||||
|
@ -115,7 +117,7 @@ def prepare_release_pr(base_branch: str, is_major: bool, token: str) -> None:
|
||||||
print(f"Pull request {Fore.CYAN}{pr.url}{Fore.RESET} created.")
|
print(f"Pull request {Fore.CYAN}{pr.url}{Fore.RESET} created.")
|
||||||
|
|
||||||
|
|
||||||
def find_next_version(base_branch: str, is_major: bool) -> str:
|
def find_next_version(base_branch: str, is_major: bool, prerelease: str) -> str:
|
||||||
output = check_output(["git", "tag"], encoding="UTF-8")
|
output = check_output(["git", "tag"], encoding="UTF-8")
|
||||||
valid_versions = []
|
valid_versions = []
|
||||||
for v in output.splitlines():
|
for v in output.splitlines():
|
||||||
|
@ -133,11 +135,11 @@ def find_next_version(base_branch: str, is_major: bool) -> str:
|
||||||
is_feature_release = features or breaking
|
is_feature_release = features or breaking
|
||||||
|
|
||||||
if is_major:
|
if is_major:
|
||||||
return f"{last_version[0]+1}.0.0"
|
return f"{last_version[0]+1}.0.0{prerelease}"
|
||||||
elif is_feature_release:
|
elif is_feature_release:
|
||||||
return f"{last_version[0]}.{last_version[1] + 1}.0"
|
return f"{last_version[0]}.{last_version[1] + 1}.0{prerelease}"
|
||||||
else:
|
else:
|
||||||
return f"{last_version[0]}.{last_version[1]}.{last_version[2] + 1}"
|
return f"{last_version[0]}.{last_version[1]}.{last_version[2] + 1}{prerelease}"
|
||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
|
@ -146,9 +148,13 @@ def main() -> None:
|
||||||
parser.add_argument("base_branch")
|
parser.add_argument("base_branch")
|
||||||
parser.add_argument("token")
|
parser.add_argument("token")
|
||||||
parser.add_argument("--major", action="store_true", default=False)
|
parser.add_argument("--major", action="store_true", default=False)
|
||||||
|
parser.add_argument("--prerelease", default="")
|
||||||
options = parser.parse_args()
|
options = parser.parse_args()
|
||||||
prepare_release_pr(
|
prepare_release_pr(
|
||||||
base_branch=options.base_branch, is_major=options.major, token=options.token
|
base_branch=options.base_branch,
|
||||||
|
is_major=options.major,
|
||||||
|
token=options.token,
|
||||||
|
prerelease=options.prerelease,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue