mirror of
https://github.com/DarkFlippers/unleashed-firmware
synced 2024-11-22 04:23:09 +00:00
Add notification sending (#3449)
Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
parent
88a3b4593d
commit
fcf3b50f69
2 changed files with 66 additions and 5 deletions
27
.github/workflows/reindex.yml
vendored
27
.github/workflows/reindex.yml
vendored
|
@ -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;
|
||||
|
|
44
scripts/send_firebase_notification.py
Normal file
44
scripts/send_firebase_notification.py
Normal 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",
|
||||
)
|
Loading…
Reference in a new issue