Added API call to build the Gitea runner debian package
This commit is contained in:
1 parent
2ef26af317
commit
bd2b0b601e
2 files changed
+40
-2
No files matched your search
@@ -8,6 +8,9 @@ from simple_logger_handler import setup_logger
|
|||||||
|
|
||||||
logger = setup_logger(__name__)
|
logger = setup_logger(__name__)
|
||||||
|
|
||||||
|
_GITEA_INSTANCE_BASE_URL="https://git.gansejunge.com"
|
||||||
|
_GITEA_REPOSITORY_OWNER="utility"
|
||||||
|
|
||||||
def get_rss_feed_data(rss_feed_url: str, max_retries: int = 3) -> feedparser.FeedParserDict:
|
def get_rss_feed_data(rss_feed_url: str, max_retries: int = 3) -> feedparser.FeedParserDict:
|
||||||
"""
|
"""
|
||||||
Fetches information from any RSS feed, with retries on network-related errors.
|
Fetches information from any RSS feed, with retries on network-related errors.
|
||||||
@@ -92,6 +95,33 @@ def grab_royal_road_chapter_information(rss_feed_url: str) -> Tuple[str, str, st
|
|||||||
logger.debug(f"[Feed] Latest chapter for story '{story_title}' (RSS URL {rss_feed_url}): {chapter_title} (ID {chapter_id}) -> {chapter_link}")
|
logger.debug(f"[Feed] Latest chapter for story '{story_title}' (RSS URL {rss_feed_url}): {chapter_title} (ID {chapter_id}) -> {chapter_link}")
|
||||||
return chapter_title, chapter_link, story_title, chapter_id
|
return chapter_title, chapter_link, story_title, chapter_id
|
||||||
|
|
||||||
|
def build_gitea_runner(version: str, gitea_token: str) -> bool:
|
||||||
|
url = (
|
||||||
|
f"{_GITEA_INSTANCE_BASE_URL}/api/v1/repos/{_GITEA_REPOSITORY_OWNER}"
|
||||||
|
"/deb-gitea-runner/actions/workflows/gitea-runner-release.yaml/dispatches"
|
||||||
|
)
|
||||||
|
|
||||||
|
headers = {"Authorization": f"token {gitea_token}"}
|
||||||
|
|
||||||
|
payload = {
|
||||||
|
"ref": "main",
|
||||||
|
"inputs": {
|
||||||
|
"version": version.lstrip("v"),
|
||||||
|
"revision": "1",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
try:
|
||||||
|
response = requests.post(url, headers=headers, json=payload, timeout=10)
|
||||||
|
response.raise_for_status()
|
||||||
|
return True
|
||||||
|
except requests.HTTPError as e:
|
||||||
|
body = e.response.text if e.response is not None else ""
|
||||||
|
logger.warning(f"[Feed] Gitea-Runner build dispatch failed: {e} {body}")
|
||||||
|
except requests.RequestException as e:
|
||||||
|
logger.warning(f"[Feed] Failed to run Gitea-Runner build: {e}")
|
||||||
|
return False
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
#rsssss="https://gitea.com/gitea/runner/releases.rss"
|
#rsssss="https://gitea.com/gitea/runner/releases.rss"
|
||||||
#print(get_rss_feed_data(rsssss))
|
#print(get_rss_feed_data(rsssss))
|
||||||
|
|||||||
+10
-2
@@ -1,13 +1,14 @@
|
|||||||
import asyncio
|
import asyncio
|
||||||
from contextlib import asynccontextmanager
|
from contextlib import asynccontextmanager
|
||||||
|
import os
|
||||||
|
|
||||||
import uvicorn
|
import uvicorn
|
||||||
from fastapi import Depends, FastAPI, HTTPException, Request
|
from fastapi import Depends, FastAPI, HTTPException, Request
|
||||||
|
|
||||||
from db_module import close_connection_pool, create_connection_pool, get_db, start_healthcheck_thread
|
from db_module import close_connection_pool, create_connection_pool, get_db, start_healthcheck_thread
|
||||||
from feed_handler import grab_gitea_release_information, grab_royal_road_chapter_information
|
from feed_handler import grab_gitea_release_information, grab_royal_road_chapter_information, build_gitea_runner
|
||||||
from metrics_server import REQUEST_COUNTER, metrics_api
|
from metrics_server import REQUEST_COUNTER, metrics_api
|
||||||
from secret_manager import cleanup_secret_files
|
from secret_manager import cleanup_secret_files, get_secret
|
||||||
from send_notifications import NotificationClient
|
from send_notifications import NotificationClient
|
||||||
from simple_logger_handler import LOG_LEVEL, setup_logger
|
from simple_logger_handler import LOG_LEVEL, setup_logger
|
||||||
|
|
||||||
@@ -18,6 +19,8 @@ logger = setup_logger(__name__)
|
|||||||
async def lifespan(app: FastAPI):
|
async def lifespan(app: FastAPI):
|
||||||
logger.info("[FastAPI] Starting application...")
|
logger.info("[FastAPI] Starting application...")
|
||||||
app.state.notifier = NotificationClient()
|
app.state.notifier = NotificationClient()
|
||||||
|
app.state.gitea_token = get_secret(os.getenv("GITEA_TOKEN",""),"/etc/secrets/gitea_token")
|
||||||
|
|
||||||
logger.info("[FastAPI] Creating MySQL connection pool...")
|
logger.info("[FastAPI] Creating MySQL connection pool...")
|
||||||
create_connection_pool("royalRoadPool")
|
create_connection_pool("royalRoadPool")
|
||||||
|
|
||||||
@@ -25,6 +28,7 @@ async def lifespan(app: FastAPI):
|
|||||||
logger.info("[FastAPI] MySQL healthcheck thread started.")
|
logger.info("[FastAPI] MySQL healthcheck thread started.")
|
||||||
|
|
||||||
SECRET_PATHS = frozenset({
|
SECRET_PATHS = frozenset({
|
||||||
|
"/etc/secrets/gitea_token",
|
||||||
"/etc/secrets/api_key",
|
"/etc/secrets/api_key",
|
||||||
"/etc/secrets/db_username",
|
"/etc/secrets/db_username",
|
||||||
"/etc/secrets/db_password"
|
"/etc/secrets/db_password"
|
||||||
@@ -110,6 +114,10 @@ def get_release_information(request: Request, db = Depends(get_db)):
|
|||||||
logger.debug(f"[FastAPI] Notification sent and database updated for Gitea feed ID {feed_id}")
|
logger.debug(f"[FastAPI] Notification sent and database updated for Gitea feed ID {feed_id}")
|
||||||
results["new"] += 1
|
results["new"] += 1
|
||||||
|
|
||||||
|
if link.startswith("https://gitea.com/gitea/runner/releases/tag/v"):
|
||||||
|
gitea_build_success = build_gitea_runner(release_title, request.app.state.gitea_token)
|
||||||
|
logger.info(f"[FastAPI] Gitea build ran successfully:{gitea_build_success}")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
db.rollback()
|
db.rollback()
|
||||||
results["errors"] += 1
|
results["errors"] += 1
|
||||||
|
|||||||
Reference in new issue
Block a user