Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions src/semantic_release/hvcs/bitbucket.py
Original file line number Diff line number Diff line change
Expand Up @@ -240,9 +240,9 @@ def upload_dists(self, tag: str, dist_glob: str) -> int:
return super().upload_dists(tag, dist_glob)

def create_or_update_release(
self, tag: str, release_notes: str, prerelease: bool = False
self, tag: str, release_notes: str, prerelease: bool = False, draft: bool = False
) -> int | str:
return super().create_or_update_release(tag, release_notes, prerelease)
return super().create_or_update_release(tag, release_notes, prerelease, draft)

def create_release(
self,
Expand All @@ -251,8 +251,9 @@ def create_release(
prerelease: bool = False,
assets: list[str] | None = None,
noop: bool = False,
draft: bool = False,
) -> int | str:
return super().create_release(tag, release_notes, prerelease, assets, noop)
return super().create_release(tag, release_notes, prerelease, assets, noop, draft)


RemoteHvcsBase.register(Bitbucket)
5 changes: 3 additions & 2 deletions src/semantic_release/hvcs/gitea.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ def create_release(
prerelease: bool = False,
assets: list[str] | None = None,
noop: bool = False,
draft: bool = False,
) -> int:
"""
Create a new release
Expand Down Expand Up @@ -223,7 +224,7 @@ def edit_release_notes(self, release_id: int, release_notes: str) -> int:

@logged_function(logger)
def create_or_update_release(
self, tag: str, release_notes: str, prerelease: bool = False
self, tag: str, release_notes: str, prerelease: bool = False, draft: bool = False
) -> int:
"""
Post release changelog
Expand All @@ -234,7 +235,7 @@ def create_or_update_release(
"""
logger.info("Creating release for %s", tag)
try:
return self.create_release(tag, release_notes, prerelease)
return self.create_release(tag, release_notes, prerelease, draft=draft)
except HTTPError as err:
logger.debug("error creating release: %s", err)
logger.debug("looking for an existing release to update")
Expand Down
10 changes: 7 additions & 3 deletions src/semantic_release/hvcs/github.py
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,7 @@ def create_release(
prerelease: bool = False,
assets: list[str] | None = None,
noop: bool = False,
draft: bool = False,
) -> int:
"""
Create a new release
Expand All @@ -224,6 +225,8 @@ def create_release(

:param assets: a list of artifacts to upload to the release

:param draft: Whether or not this release should be created as a draft

:return: the ID of the release
"""
if noop:
Expand Down Expand Up @@ -259,7 +262,7 @@ def create_release(
"tag_name": tag,
"name": tag,
"body": release_notes,
"draft": False,
"draft": draft,
"prerelease": prerelease,
},
)
Expand Down Expand Up @@ -348,18 +351,19 @@ def edit_release_notes(self, release_id: int, release_notes: str) -> int:

@logged_function(logger)
def create_or_update_release(
self, tag: str, release_notes: str, prerelease: bool = False
self, tag: str, release_notes: str, prerelease: bool = False, draft: bool = False
) -> int:
"""
Post release changelog
:param tag: The version number
:param release_notes: The release notes for this version
:param prerelease: Whether or not this release should be created as a prerelease
:param draft: Whether or not this release should be created as a draft
:return: The status of the request
"""
logger.info("Creating release for %s", tag)
try:
return self.create_release(tag, release_notes, prerelease)
return self.create_release(tag, release_notes, prerelease, draft=draft)
except HTTPError as err:
logger.debug("error creating release: %s", err)
logger.debug("looking for an existing release to update")
Expand Down
4 changes: 3 additions & 1 deletion src/semantic_release/hvcs/gitlab.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ def create_release(
prerelease: bool = False, # noqa: ARG002
assets: list[str] | None = None, # noqa: ARG002
noop: bool = False,
draft: bool = False, # noqa: ARG002 (no effect in GitLab)
) -> str:
"""
Create a release in a remote VCS, adding any release notes and assets to it
Expand Down Expand Up @@ -178,14 +179,15 @@ def edit_release_notes( # type: ignore[override]

@logged_function(logger)
def create_or_update_release(
self, tag: str, release_notes: str, prerelease: bool = False
self, tag: str, release_notes: str, prerelease: bool = False, draft: bool = False
) -> str:
"""
Create or update a release for the given tag in a remote VCS.

:param tag: The tag to create or update the release for
:param release_notes: The changelog description for this version only
:param prerelease: This parameter has no effect in GitLab
:param draft: This parameter has no effect in GitLab

:return: The release id

Expand Down
5 changes: 4 additions & 1 deletion src/semantic_release/hvcs/remote_hvcs_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,18 +63,21 @@ def create_release(
prerelease: bool = False,
assets: list[str] | None = None,
noop: bool = False,
draft: bool = False,
) -> int | str:
"""
Create a release in a remote VCS, if supported

Which includes uploading any assets as part of the release

:param draft: Whether or not the release should be created as a draft (GitHub)
"""
self._not_supported(self.create_release.__name__)
return -1

@abstractmethod
def create_or_update_release(
self, tag: str, release_notes: str, prerelease: bool = False
self, tag: str, release_notes: str, prerelease: bool = False, draft: bool = False
) -> int | str:
"""
Create or update a release for the given tag in a remote VCS, attaching the
Expand Down
2 changes: 1 addition & 1 deletion tests/unit/semantic_release/hvcs/test_github.py
Original file line number Diff line number Diff line change
Expand Up @@ -803,7 +803,7 @@ def test_create_or_update_release_when_create_succeeds(

# Evaluate (expected -> actual)
assert mock_release_id == result
mock_create_release.assert_called_once_with(tag, RELEASE_NOTES, prerelease)
mock_create_release.assert_called_once_with(tag, RELEASE_NOTES, prerelease, draft=False)
mock_get_release_id_by_tag.assert_not_called()
mock_edit_release_notes.assert_not_called()

Expand Down