diff --git a/release-controller/reconciler.py b/release-controller/reconciler.py index e1d94475f..a4e2550d2 100644 --- a/release-controller/reconciler.py +++ b/release-controller/reconciler.py @@ -266,12 +266,6 @@ class ReplicaVersionProposalProvider(typing.Protocol): def replica_version_proposals(self) -> dict[str, int]: ... -class SlackAnnouncerProtocol(typing.Protocol): - def announce_release( - self, webhook: str, version_name: str, google_doc_url: str, tag_all_teams: bool - ) -> None: ... - - class Reconciler: """Reconcile the state of the network with the release index, and create a forum post if needed.""" @@ -287,7 +281,7 @@ def __init__( active_version_provider: ActiveVersionProvider, replica_version_proposal_provider: ReplicaVersionProposalProvider, dre: dre_cli.DRECli, - slack_announcer: SlackAnnouncerProtocol, + slack_announcer: slack_announce.SlackAnnouncerProtocol, ignore_releases=None, ): """Create a new reconciler.""" @@ -549,7 +543,7 @@ def main(): ) ic_repo = ( GitRepo( - f"https://oauth2:{os.environ["GITHUB_TOKEN"]}@github.com/dfinity/ic.git", + f"https://oauth2:{os.environ['GITHUB_TOKEN']}@github.com/dfinity/ic.git", main_branch="master", ) if not dry_run @@ -574,7 +568,7 @@ def main(): else dryrun.DRECli() ) slack_announcer = ( - slack_announce.announce_release if not dry_run else dryrun.MockSlackAnnouncer() + slack_announce.SlackAnnouncer() if not dry_run else dryrun.MockSlackAnnouncer() ) reconciler = Reconciler( diff --git a/release-controller/slack_announce.py b/release-controller/slack_announce.py index b6254f377..3e3ad0e3d 100644 --- a/release-controller/slack_announce.py +++ b/release-controller/slack_announce.py @@ -3,14 +3,36 @@ from dotenv import load_dotenv from slack_sdk.http_retry.handler import RetryHandler from slack_sdk.webhook import WebhookClient +import typing from release_notes import RELEASE_NOTES_REVIEWERS -def announce_release(slack_url, version_name, google_doc_url, tag_all_teams): - slack = WebhookClient(url=slack_url, retry_handlers=[RetryHandler(max_retry_count=2)]) +class SlackAnnouncerProtocol(typing.Protocol): + def announce_release( + self, webhook: str, version_name: str, google_doc_url: str, tag_all_teams: bool + ) -> None: ... + + +class SlackAnnouncer(SlackAnnouncerProtocol): + def announce_release( + self, webhook: str, version_name: str, google_doc_url: str, tag_all_teams: bool + ) -> None: + announce_release_on_slack(webhook, version_name, google_doc_url, tag_all_teams) + + +def announce_release_on_slack(slack_url, version_name, google_doc_url, tag_all_teams): + slack = WebhookClient( + url=slack_url, retry_handlers=[RetryHandler(max_retry_count=2)] + ) notify_line = ( - " ".join([f"" for t in RELEASE_NOTES_REVIEWERS if t.send_announcement]) + " ".join( + [ + f"" + for t in RELEASE_NOTES_REVIEWERS + if t.send_announcement + ] + ) if tag_all_teams else "everyone" ) @@ -26,13 +48,13 @@ def announce_release(slack_url, version_name, google_doc_url, tag_all_teams): def main(): load_dotenv() - announce_release( + announce_release_on_slack( os.environ["SLACK_WEBHOOK_URL"], "release-2024-03-06_23-01-base", "https://docs.google.com/document/d/1gCPmYxoq9_IccdChRzjoblAggTOdZ_IfTMukRbODO1I/edit#heading=h.7dcpz3fj7xrh", True, ) - announce_release( + announce_release_on_slack( os.environ["SLACK_WEBHOOK_URL"], "release-2024-03-06_23-01-p2p", "https://docs.google.com/document/d/1gCPmYxoq9_IccdChRzjoblAggTOdZ_IfTMukRbODO1I/edit#heading=h.7dcpz3fj7xrh",