Add notification sending (#3449)

Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
Max Andreev 2024-02-17 10:32:32 +03:00 committed by GitHub
parent 88a3b4593d
commit fcf3b50f69
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 66 additions and 5 deletions

View file

@ -1,15 +1,32 @@
name: 'Reindex'
name: 'Post-release hooks'
on:
release:
types: [prereleased,released]
types: [prereleased, released]
jobs:
reindex:
name: 'Reindex updates'
name: 'Post-release hooks'
runs-on: [self-hosted, FlipperZeroShell]
steps:
- name: Trigger reindex
- name: 'Checkout code'
uses: actions/checkout@v4
- name: 'Trigger reindex'
run: |
curl --fail -L -H "Token: ${{ secrets.INDEXER_TOKEN }}" \
"${{ secrets.INDEXER_URL }}"/firmware/reindex
"${{ secrets.INDEXER_URL }}"/firmware/reindex;
- name: 'Send release notification'
if: ${{ github.event.action == 'released' }}
run: |
echo '${{ secrets.FIREBASE_TOKEN }}' > firebase-token.json;
python3 -m pip install firebase-admin==6.4.0;
python3 scripts/send_firebase_notification.py \
"--version=${{ github.event.release.name }}" \
"--token=firebase-token.json";
- name: 'Remove firebase token'
if: always()
run: |
rm -rf firebase-token.json;

View file

@ -0,0 +1,44 @@
import argparse
import logging
from firebase_admin import messaging, credentials, initialize_app
class FirebaseNotifications:
def __init__(self, service_account_file):
try:
cred = credentials.Certificate(service_account_file)
self.firebase_app = initialize_app(cred)
except Exception as e:
logging.exception(e)
raise e
def send(self, title, body, condition):
try:
message = messaging.Message(
notification=messaging.Notification(title=title, body=body),
condition=condition,
)
messaging.send(message, app=self.firebase_app)
except Exception as e:
logging.exception(e)
raise e
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument("--token_file", help="Firebase token file", required=True)
parser.add_argument(
"--version", help="Firmware version to notify with", required=True
)
args = parser.parse_args()
return args
if __name__ == "__main__":
args = parse_args()
notification = FirebaseNotifications(args.token_file)
notification.send(
title="Firmware Update Available",
body=f"New firmware version is ready to install: {args.version}",
condition="'flipper_update_firmware_release' in topics",
)