mirror of
https://github.com/DarkFlippers/unleashed-firmware
synced 2024-11-22 12:33:11 +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:
|
on:
|
||||||
release:
|
release:
|
||||||
types: [prereleased,released]
|
types: [prereleased, released]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
reindex:
|
reindex:
|
||||||
name: 'Reindex updates'
|
name: 'Post-release hooks'
|
||||||
runs-on: [self-hosted, FlipperZeroShell]
|
runs-on: [self-hosted, FlipperZeroShell]
|
||||||
steps:
|
steps:
|
||||||
- name: Trigger reindex
|
- name: 'Checkout code'
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: 'Trigger reindex'
|
||||||
run: |
|
run: |
|
||||||
curl --fail -L -H "Token: ${{ secrets.INDEXER_TOKEN }}" \
|
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