Skip to content

Commit eb07272

Browse files
committed
add fips release handlers
1 parent 05ce77f commit eb07272

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# ziti-mattermost-action-py
2+
23
GitHub Action that posts to a Mattermost webhook endpoint over OpenZiti
34

45
This GitHub workflow action uses [Ziti Python SDK](https://github.com/openziti/ziti-sdk-py) to post an event's payload information to a [Mattermost](https://mattermost.com/) instance over a `Ziti` connection. This allows the Mattermost server to remain private, i.e. not directly exposed to the internet.

zhook.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ class MattermostWebhookBody:
1111
issueThumbnail = "https://github.com/openziti/branding/blob/main/images/ziggy/closeups/Ziggy-has-an-Idea-Closeup.png?raw=true"
1212
# releaseThumbnail = "https://github.com/openziti/branding/blob/main/images/ziggy/png/Ziggy-Cash-Money-Closeup.png?raw=true"
1313
releaseThumbnail = "https://github.com/openziti/branding/blob/main/images/ziggy/closeups/Ziggy-Parties-Closeup.png?raw=true"
14+
fipsReleaseThumbnail = "https://github.com/openziti/branding/blob/main/images/ziggy/closeups/Ziggy-The-Cop-Closeup.png?raw=true"
1415
watchThumbnail = "https://github.com/openziti/branding/blob/main/images/ziggy/closeups/Ziggy-is-Star-Struck.png?raw=true"
1516

1617
prColor = "#32CD32"
@@ -70,6 +71,14 @@ def __init__(self, username, icon, channel, eventName, eventJsonStr, actionRepo)
7071
self.addForkDetails()
7172
elif eventName == "release":
7273
self.addReleaseDetails()
74+
elif eventName == "repository_dispatch":
75+
event_type = self.eventJson.get("action", None)
76+
if event_type == "ziti_release":
77+
self.addFipsReleaseDetails()
78+
elif event_type == "ziti_promote_stable":
79+
self.addFipsPromoteStableDetails()
80+
else:
81+
self.addRepositoryDispatchGenericDetails() # fallback
7382
elif eventName == "watch":
7483
self.addWatchDetails()
7584
else:
@@ -274,6 +283,42 @@ def addReleaseDetails(self):
274283

275284
self.attachment["text"] = bodyText
276285

286+
def addFipsReleaseDetails(self):
287+
# Pre-release announcement (ziti_release)
288+
payload = self.eventJson.get("client_payload", {})
289+
version = payload.get("version")
290+
if not version:
291+
self.attachment["text"] = "[ziti-fips] Pre-release published, but version not found in event."
292+
return
293+
repo = self.repoJson["full_name"]
294+
release_url = f"https://github.com/{repo}/releases/tag/{version}"
295+
self.body["text"] = f"FIPS Pre-release published by [{repo}](https://github.com/{repo})"
296+
self.attachment["color"] = self.releaseColor
297+
self.attachment["thumb_url"] = self.fipsReleaseThumbnail
298+
self.attachment["text"] = f"FIPS Pre-release [{version}]({release_url}) is now available."
299+
300+
def addFipsPromoteStableDetails(self):
301+
# Promotion to stable announcement (ziti_promote_stable)
302+
payload = self.eventJson.get("client_payload", {})
303+
version = payload.get("version")
304+
if not version:
305+
self.attachment["text"] = "[ziti-fips] Stable promotion, but version not found in event."
306+
return
307+
repo = self.repoJson["full_name"]
308+
release_url = f"https://github.com/{repo}/releases/tag/{version}"
309+
self.body["text"] = f"FIPS Release promoted to stable in [{repo}](https://github.com/{repo})"
310+
self.attachment["color"] = self.releaseColor
311+
self.attachment["thumb_url"] = self.fipsReleaseThumbnail
312+
self.attachment["text"] = f"FIPS Release [{version}]({release_url}) has been promoted to stable."
313+
314+
def addRepositoryDispatchGenericDetails(self):
315+
event_type = self.eventJson.get("action", None)
316+
payload = self.eventJson.get("client_payload", {})
317+
repo = self.repoJson["full_name"]
318+
self.body["text"] = f"Repository dispatch event received by [{repo}](https://github.com/{repo})"
319+
self.attachment["color"] = self.releaseColor
320+
self.attachment["text"] = f"Repository dispatch event type: `{event_type}`\nPayload: ```json\n{json.dumps(payload, indent=2)}\n```"
321+
277322
def addWatchDetails(self):
278323
self.body["text"] = f"{self.createTitle()} #stargazer"
279324
login = self.senderJson["login"]

0 commit comments

Comments
 (0)