Skip to content

Commit

Permalink
logging und github workflow angepasst
Browse files Browse the repository at this point in the history
  • Loading branch information
dewenni committed Oct 17, 2024
1 parent cd762ed commit cebd618
Show file tree
Hide file tree
Showing 11 changed files with 121 additions and 102 deletions.
78 changes: 78 additions & 0 deletions .github/workflows/docker_build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
name: Build and Push Docker Images

on:
workflow_dispatch:
push:
branches:
- main

jobs:

image_latest:
if: ${{ ! startsWith(github.ref, 'refs/tags/') }}
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Build and push Docker image
uses: docker/build-push-action@v6
with:
context: .
file: dockerfile
push: true
tags: ${{ github.repository_owner }}/${{ github.event.repository.name }}:latest

image_tag:
if: ${{ startsWith(github.ref, 'refs/tags/') }}
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Build and push Docker image
uses: docker/build-push-action@v6
with:
context: .
file: dockerfile
push: true
tags: ${{ github.repository_owner }}/${{ github.event.repository.name }}:${{ github.ref_name }}

create_release:
if: ${{ startsWith(github.ref, 'refs/tags/') }}
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Create release
id: create_release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.ref_name }}
run: |
gh release create "$tag" \
--repo="$GITHUB_REPOSITORY" \
--title="${tag}" \
-F changeNew.md
31 changes: 0 additions & 31 deletions .github/workflows/docker_build_latest.yml

This file was deleted.

43 changes: 0 additions & 43 deletions .github/workflows/docker_build_release.yml

This file was deleted.

7 changes: 3 additions & 4 deletions app/calendar_ics.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@
from datetime import datetime
from ics import Calendar, Event
from config import CALENDAR_CATEGORIES, CALENDAR_KEYWORDS

LOGGER = logging.getLogger("LanisAPP")
from lanis_log import LANISLOG

ALL_EVENTS_FILE_PATH = os.path.join(os.path.dirname(__file__), 'output', 'lanis_all_events.ics')
NEW_EVENTS_FILE_PATH = os.path.join(os.path.dirname(__file__), 'output', 'lanis_new_events.ics')
Expand Down Expand Up @@ -125,10 +124,10 @@ def create_ics_file(filtered_entries, new_entries):
with open(ALL_EVENTS_FILE_PATH, 'w') as f:
f.writelines(all_events_calendar)

LOGGER.info('ics Datei mit allen Einträgen erstellt: %s', ALL_EVENTS_FILE_PATH)
LANISLOG.info('ics Datei mit allen Einträgen erstellt: %s', ALL_EVENTS_FILE_PATH)

# Schreibe den Kalender für nur neue Events in die ICS-Datei
with open(NEW_EVENTS_FILE_PATH, 'w') as f:
f.writelines(new_events_calendar)

LOGGER.info('ics Datei mit neuen Einträgen erstellt: %s', NEW_EVENTS_FILE_PATH)
LANISLOG.info('ics Datei mit neuen Einträgen erstellt: %s', NEW_EVENTS_FILE_PATH)
1 change: 1 addition & 0 deletions app/conversation.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import json
import os
from datetime import datetime
from lanis_log import LANISLOG

CONVERSATIONS_FILE_PATH = os.path.join(os.path.dirname(__file__), 'output', 'last_conversations.json')

Expand Down
24 changes: 12 additions & 12 deletions app/lanis.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@
from calendar_ics import *
from lanisapi import LanisClient, LanisAccount, LanisCookie, School
from config import LANIS_SCHOOL, LANIS_USER, LANIS_PASSWORD, OPT_TASKS, OPT_CONVERSATION, OPT_CALENDAR, CALENDAR_START_DATE, CALENDAR_END_DATE
from lanis_log import LANISLOG

# Lese den Intervallwert aus der Umgebungsvariable und wandle ihn in eine Ganzzahl um
INTERVAL = int(os.getenv('INTERVAL', 3600)) # Standardwert ist 3600 Sekunden, wenn die Variable nicht gesetzt ist

LOGGER = logging.getLogger("LanisAPP")

def main():

Expand Down Expand Up @@ -49,11 +49,11 @@ def main():
if has_new_tasks(current_tasks, last_tasks):
formattedTasks = formatTasks(current_tasks)
sendPushover("unerledigte Hausaufgaben", formattedTasks)
LOGGER.info("neue Aufgaben gefunden %s", formattedTasks)
LANISLOG.info("neue Aufgaben gefunden %s", formattedTasks)
# Aktualisiere die zwischengespeicherten Aufgaben
save_last_tasks(current_tasks)
else:
LOGGER.info("Keine neuen Aufgaben gefunden.")
LANISLOG.info("Keine neuen Aufgaben gefunden.")


#------------------------------------------------------------------------------------------------
Expand All @@ -73,11 +73,11 @@ def main():
# Falls ja, formatiere und sende eine Nachricht
formatted_conversations = formatConversations(current_conversations)
sendPushover("aktuelle Nachtichten", formatted_conversations)
LOGGER.info("aktuelle Nachtichten %s", formatted_conversations)
LANISLOG.info("aktuelle Nachtichten %s", formatted_conversations)
# Aktualisiere die zwischengespeicherten Konversationen
save_last_conversations(current_conversations)
else:
LOGGER.info("Keine neuen Konversationen gefunden.")
LANISLOG.info("Keine neuen Konversationen gefunden.")

#------------------------------------------------------------------------------------------------

Expand All @@ -89,27 +89,27 @@ def main():
# Überprüfe, ob new_events Einträge enthält
if new_events:
sendPushover("Neue Kalendereinträge", new_events)
LOGGER.info("Neue Kalendereinträge: %s", new_events)
LANISLOG.info("Neue Kalendereinträge: %s", new_events)

else:
LOGGER.info("Keine neuen Kalendereinträge gefunden.")
LANISLOG.info("Keine neuen Kalendereinträge gefunden.")

# Wenn erfolgreich, dann Schleife beenden
break

except httpx.RequestError as e:
LOGGER.warning(f"Versuch {attempt + 1} fehlgeschlagen: {e}")
LANISLOG.warning(f"Versuch {attempt + 1} fehlgeschlagen: {e}")
if attempt < retries - 1:
LOGGER.info("Versuche es in 10 Sekunden erneut...")
LANISLOG.info("Versuche es in 10 Sekunden erneut...")
time.sleep(10) # Warte 10 Sekunden, bevor du es erneut versuchst
else:
LOGGER.error("Maximale Anzahl an Versuchen erreicht. Warte auf das nächste Intervall.")
LANISLOG.error("Maximale Anzahl an Versuchen erreicht. Warte auf das nächste Intervall.")

except Exception as e:
LOGGER.error(f"Ein unerwarteter Fehler ist aufgetreten: {e}")
LANISLOG.error(f"Ein unerwarteter Fehler ist aufgetreten: {e}")
break # Bei unerwarteten Fehlern Schleife verlassen

LOGGER.info("Warte %i Sekunden bis zum nächsten Durchlauf...", INTERVAL)
LANISLOG.info("Warte %i Sekunden bis zum nächsten Durchlauf...", INTERVAL)
time.sleep(INTERVAL) # Warte das angegebene Intervall


Expand Down
11 changes: 11 additions & 0 deletions app/lanis_log.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import logging
import sys

def setup_logger():
logger = logging.getLogger('LanisAPP')
logger.setLevel(logging.INFO)

return logger

# Logger initialisieren
LANISLOG = setup_logger()
9 changes: 4 additions & 5 deletions app/pushover.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@
import logging
import httpx
from config import PUSHOVER_API, PUSHOVER_USERS

LOGGER = logging.getLogger("LanisAPP")
from lanis_log import LANISLOG

def sendPushover(title, message):
"""Sendet eine Pushover-Nachricht an alle definierten Empfänger."""
Expand All @@ -19,11 +18,11 @@ def sendPushover(title, message):
try:
response = httpx.post(url, data=data)
if response.status_code == 200:
LOGGER.info(f"Nachricht erfolgreich an {user_key} gesendet.")
LANISLOG.info(f"Nachricht erfolgreich an {user_key} gesendet.")
else:
LOGGER.warning(f"Fehler beim Senden an {user_key}: {response.text}")
LANISLOG.warning(f"Fehler beim Senden an {user_key}: {response.text}")
except httpx.RequestError as e:
LOGGER.warning(f"HTTP-Fehler bei der Verbindung zu Pushover für {user_key}: {e}")
LANISLOG.warning(f"HTTP-Fehler bei der Verbindung zu Pushover für {user_key}: {e}")



5 changes: 2 additions & 3 deletions app/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@
import os
import logging
from datetime import datetime

LOGGER = logging.getLogger("LanisAPP")
from lanis_log import LANISLOG

TASKS_FILE_PATH = os.path.join(os.path.dirname(__file__), 'output', 'last_tasks.json')

Expand All @@ -15,7 +14,7 @@ def load_last_tasks():
return json.load(file)
except FileNotFoundError:
# Wenn die Datei nicht existiert, wird eine leere Liste zurückgegeben
LOGGER.warning("Task file not found: %s", TASKS_FILE_PATH)
LANISLOG.warning("Task file not found: %s", TASKS_FILE_PATH)
return []

def save_last_tasks(tasks):
Expand Down
10 changes: 8 additions & 2 deletions changeNew.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
# first release
## was gibts neues

Dieses Release ist ein erster Versuch und kann sowohl instabil als auch unvollständig sein.
Dieses Projekt befindet sich noch in einer experimentellen Phase.
Es kann jedoch gerne schon genutzt und getestet werden.

## changelog

- Logging angepasst
- github Workflow angepasst
4 changes: 2 additions & 2 deletions supervisord.conf
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ loglevel=info ; Log-Level (info, debug, etc.)
command=python3 /app/lanis.py
autostart=true
autorestart=true
stderr_logfile=/var/log/lanis.err.log
stdout_logfile=/var/log/lanis.out.log
stdout_logfile=/dev/stdout
stderr_logfile=/dev/stderr

[program:webserver]
command=sh -c "python3 -m http.server --directory /app/output $HTTP_PORT"
Expand Down

0 comments on commit cebd618

Please sign in to comment.