From 9c7dbde856b15e474f329930abbfc58141bf8448 Mon Sep 17 00:00:00 2001 From: Jiri Date: Fri, 5 Dec 2025 12:12:02 +0100 Subject: [PATCH 1/5] feat: prerelease flag for do-release.py --- .github/workflows/release.yml | 7 +++++-- scripts/do-release.py | 15 +++++++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8467f765..d527c684 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,8 +5,10 @@ name: Check and realese cosmpy # secrets PYPI_USERNAME and PYPI_PASSWORD are required! on: pull_request: - branches: [main] - types: [closed] + branches: + - main + - develop + types: [closed] jobs: build: @@ -23,6 +25,7 @@ jobs: PYPI_PASSWORD: ${{secrets.FETCHBOT_PYPI_TOKEN}} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # required to make a release page GH_TOKEN: ${{ github.token }} + IS_PRERELEASE: ${{ github.base_ref == 'develop' }} run: | pip install tomli packaging poetry git config --global user.email "ci-bot@fetch.ai" diff --git a/scripts/do-release.py b/scripts/do-release.py index 02eb897f..b697aa18 100755 --- a/scripts/do-release.py +++ b/scripts/do-release.py @@ -29,7 +29,6 @@ import tomli from packaging.version import Version - ROOT = Path(__file__).parent.parent @@ -46,6 +45,12 @@ def pypi_password(self) -> str: """Get PYPI password.""" return os.environ.get("PYPI_PASSWORD") or "" + @property + def is_prerelease(self) -> bool: + """Whether this release should be marked as prerelease.""" + raw = os.environ.get("IS_PRERELEASE", "").lower() + return raw in ("1", "true", "yes", "on") + class ReleaseTool: """Release helper tool.""" @@ -100,10 +105,11 @@ def push_tag(self, current_version) -> None: """Push tag to github.""" subprocess.check_call(f"git push origin v{current_version}", shell=True) - def make_release(self, current_version: Version, release_history: str) -> None: + def make_release(self, current_version: Version, release_history: str, prerelease: bool = False) -> None: """Make release on Github.""" + prerelease_flag = "--prerelease" if prerelease else "" subprocess.check_call( - f"""gh release create v{current_version} --title "v{current_version}" --notes "{release_history}" """, + f"""gh release create v{current_version} --title "v{current_version}" --notes "{release_history}" {prerelease_flag}""", shell=True, ) @@ -164,7 +170,8 @@ def main(self): print("Tag pushed") print("\nMake release") - self.make_release(current_version, release_history=histories[current_version]) + self.make_release(current_version, release_history=histories[current_version], + prerelease=self._credentials.is_prerelease) print("Release made." "") print("\nDONE") From 34797bacd16050aef8d086851fcd39477097d2f8 Mon Sep 17 00:00:00 2001 From: Jiri Date: Fri, 5 Dec 2025 12:16:44 +0100 Subject: [PATCH 2/5] Lint --- scripts/do-release.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/scripts/do-release.py b/scripts/do-release.py index b697aa18..6ed784fd 100755 --- a/scripts/do-release.py +++ b/scripts/do-release.py @@ -29,6 +29,7 @@ import tomli from packaging.version import Version + ROOT = Path(__file__).parent.parent @@ -105,7 +106,9 @@ def push_tag(self, current_version) -> None: """Push tag to github.""" subprocess.check_call(f"git push origin v{current_version}", shell=True) - def make_release(self, current_version: Version, release_history: str, prerelease: bool = False) -> None: + def make_release( + self, current_version: Version, release_history: str, prerelease: bool = False + ) -> None: """Make release on Github.""" prerelease_flag = "--prerelease" if prerelease else "" subprocess.check_call( @@ -170,8 +173,11 @@ def main(self): print("Tag pushed") print("\nMake release") - self.make_release(current_version, release_history=histories[current_version], - prerelease=self._credentials.is_prerelease) + self.make_release( + current_version, + release_history=histories[current_version], + prerelease=self._credentials.is_prerelease, + ) print("Release made." "") print("\nDONE") From 86b0c0ac61a6666431937b18a029ac952bfa69ec Mon Sep 17 00:00:00 2001 From: Jiri Date: Fri, 5 Dec 2025 12:17:58 +0100 Subject: [PATCH 3/5] fix --- .github/workflows/release.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d527c684..7ebe80cd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,10 +5,10 @@ name: Check and realese cosmpy # secrets PYPI_USERNAME and PYPI_PASSWORD are required! on: pull_request: - branches: - - main - - develop - types: [closed] + branches: + - main + - develop + types: [closed] jobs: build: From ddd88e70938603d654647f7bc6cdb212603c1447 Mon Sep 17 00:00:00 2001 From: Jiri Date: Mon, 8 Dec 2025 16:58:05 +0100 Subject: [PATCH 4/5] Any branch pre-release rule --- .github/workflows/release.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7ebe80cd..751402c7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -6,8 +6,7 @@ name: Check and realese cosmpy on: pull_request: branches: - - main - - develop + - '**' types: [closed] jobs: @@ -25,7 +24,7 @@ jobs: PYPI_PASSWORD: ${{secrets.FETCHBOT_PYPI_TOKEN}} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # required to make a release page GH_TOKEN: ${{ github.token }} - IS_PRERELEASE: ${{ github.base_ref == 'develop' }} + IS_PRERELEASE: ${{ github.base_ref != 'main' }} run: | pip install tomli packaging poetry git config --global user.email "ci-bot@fetch.ai" From a05230da26e1991ec190e2ec3f28f1ef0f06667a Mon Sep 17 00:00:00 2001 From: Jiri Date: Mon, 8 Dec 2025 17:11:18 +0100 Subject: [PATCH 5/5] pre-release logic in Python --- .github/workflows/release.yml | 1 - scripts/do-release.py | 12 ++---------- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 751402c7..4b009938 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -24,7 +24,6 @@ jobs: PYPI_PASSWORD: ${{secrets.FETCHBOT_PYPI_TOKEN}} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # required to make a release page GH_TOKEN: ${{ github.token }} - IS_PRERELEASE: ${{ github.base_ref != 'main' }} run: | pip install tomli packaging poetry git config --global user.email "ci-bot@fetch.ai" diff --git a/scripts/do-release.py b/scripts/do-release.py index 6ed784fd..7523112e 100755 --- a/scripts/do-release.py +++ b/scripts/do-release.py @@ -46,12 +46,6 @@ def pypi_password(self) -> str: """Get PYPI password.""" return os.environ.get("PYPI_PASSWORD") or "" - @property - def is_prerelease(self) -> bool: - """Whether this release should be marked as prerelease.""" - raw = os.environ.get("IS_PRERELEASE", "").lower() - return raw in ("1", "true", "yes", "on") - class ReleaseTool: """Release helper tool.""" @@ -106,10 +100,9 @@ def push_tag(self, current_version) -> None: """Push tag to github.""" subprocess.check_call(f"git push origin v{current_version}", shell=True) - def make_release( - self, current_version: Version, release_history: str, prerelease: bool = False - ) -> None: + def make_release(self, current_version: Version, release_history: str) -> None: """Make release on Github.""" + prerelease = current_version.is_prerelease or current_version.is_devrelease prerelease_flag = "--prerelease" if prerelease else "" subprocess.check_call( f"""gh release create v{current_version} --title "v{current_version}" --notes "{release_history}" {prerelease_flag}""", @@ -176,7 +169,6 @@ def main(self): self.make_release( current_version, release_history=histories[current_version], - prerelease=self._credentials.is_prerelease, ) print("Release made." "")