From 8a4e900ab9a1439b0513dc4a2e4ef850ab98f39f Mon Sep 17 00:00:00 2001 From: Evgenii Alekseev Date: Mon, 17 Mar 2025 13:43:04 +0200 Subject: [PATCH] docs: update docs This commit includes following changes * add newly added option to configuration referenec * remove few legacy options from configuration schemas used for validation, which might lead to errors during validation. Note, however, that settings will be still read by the service * add link to aurcache * hide service-setup command description under spoiler --- docs/configuration.rst | 3 +- docs/faq/misc.rst | 7 + docs/setup.rst | 21 +-- src/ahriman/core/configuration/schema.py | 17 --- src/ahriman/core/report/report_trigger.py | 167 ++++++++-------------- src/ahriman/core/upload/upload_trigger.py | 28 ++-- 6 files changed, 96 insertions(+), 147 deletions(-) diff --git a/docs/configuration.rst b/docs/configuration.rst index dd671a7a..42ee24bc 100644 --- a/docs/configuration.rst +++ b/docs/configuration.rst @@ -81,6 +81,7 @@ Base configuration settings. * ``apply_migrations`` - perform database migrations on the application start, boolean, optional, default ``yes``. Useful if you are using git version. Note, however, that this option must be changed only if you know what to do and going to handle migrations manually. * ``database`` - path to the application SQLite database, string, required. * ``include`` - path to directory with configuration files overrides, string, optional. Files will be read in alphabetical order. +* ``keep_last_logs`` - amount of build logs to be kept for each package, integer, optional ,default ``0``. Logs will be cleared at the end of each process. * ``logging`` - path to logging configuration, string, required. Check ``logging.ini`` for reference. ``alpm:*`` groups @@ -217,7 +218,7 @@ Mirrorlist generator plugin ``remote-pull`` group --------------------- -Remote git source synchronization settings. Unlike ``Upload`` triggers those triggers are used for PKGBUILD synchronization - fetch from remote repository PKGBUILDs before updating process. +Remote git source synchronization settings. Unlike ``upload`` triggers those triggers are used for PKGBUILD synchronization - fetch from remote repository PKGBUILDs before updating process. It supports authorization; to do so you'd need to prefix the URL with authorization part, e.g. ``https://key:token@github.com/arcan1s/ahriman.git``. It is highly recommended to use application tokens instead of your user authorization details. Alternatively, you can use any other option supported by git, e.g.: diff --git a/docs/faq/misc.rst b/docs/faq/misc.rst index 29473090..9472520c 100644 --- a/docs/faq/misc.rst +++ b/docs/faq/misc.rst @@ -56,6 +56,13 @@ Though originally I've created ahriman by trying to improve the project, it stil It is automation tools for ``repoctl`` mentioned above. Except for using shell it looks pretty cool and also offers some additional features like patches, remote synchronization (isn't it?) and reporting. +`AURCache `__ +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +That's really cool project if you are looking for simple service to build AUR packages. It provides very informative dashboard and easy to configure and use. However, it doesn't provide direct way to control build process (e.g. it is neither trivial to build packages for architectures which are not supported by default nor to change build flags). + +Also this application relies on docker setup (e.g. builders are only available as special docker containers). In addition, it uses ``paru`` to build packages instead of ``devtools``. + How to check service logs ^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/docs/setup.rst b/docs/setup.rst index 240ec674..eafbd26b 100644 --- a/docs/setup.rst +++ b/docs/setup.rst @@ -12,19 +12,22 @@ Initial setup sudo ahriman -a x86_64 -r aur service-setup ... - ``service-setup`` literally does the following steps: + .. admonition:: Details + :collapsible: closed - #. - Create ``/var/lib/ahriman/.makepkg.conf`` with ``makepkg.conf`` overrides if required (at least you might want to set ``PACKAGER``): + ``service-setup`` literally does the following steps: - .. code-block:: shell + #. + Create ``/var/lib/ahriman/.makepkg.conf`` with ``makepkg.conf`` overrides if required (at least you might want to set ``PACKAGER``): - echo 'PACKAGER="ahriman bot "' | sudo -u ahriman tee -a /var/lib/ahriman/.makepkg.conf + .. code-block:: shell - #. - Configure build tools (it is required for correct dependency management system): + echo 'PACKAGER="ahriman bot "' | sudo -u ahriman tee -a /var/lib/ahriman/.makepkg.conf - #. + #. + Configure build tools (it is required for correct dependency management system): + + #. Create build command (you can choose any name for command, basically it should be ``{name}-{arch}-build``): .. code-block:: shell @@ -67,7 +70,7 @@ Initial setup echo 'ahriman ALL=(ALL) NOPASSWD:SETENV: CARCHBUILD_CMD' | tee -a /etc/sudoers.d/ahriman chmod 400 /etc/sudoers.d/ahriman - This command supports several arguments, kindly refer to its help message. + This command supports several arguments, kindly refer to its help message. #. Start and enable ``ahriman@.timer`` via ``systemctl``: diff --git a/src/ahriman/core/configuration/schema.py b/src/ahriman/core/configuration/schema.py index 008db9b4..87370555 100644 --- a/src/ahriman/core/configuration/schema.py +++ b/src/ahriman/core/configuration/schema.py @@ -57,10 +57,6 @@ CONFIGURATION_SCHEMA: ConfigurationSchema = { "path_exists": True, "path_type": "file", }, - "suppress_http_log_errors": { - "type": "boolean", - "coerce": "boolean", - } }, }, "alpm": { @@ -347,10 +343,6 @@ CONFIGURATION_SCHEMA: ConfigurationSchema = { "coerce": "integer", "min": 0, }, - "password": { - "type": "string", - "empty": False, - }, "port": { "type": "integer", "coerce": "integer", @@ -379,11 +371,6 @@ CONFIGURATION_SCHEMA: ConfigurationSchema = { }, "empty": False, }, - "timeout": { - "type": "integer", - "coerce": "integer", - "min": 0, - }, "unix_socket": { "type": "path", "coerce": "absolute_path", @@ -392,10 +379,6 @@ CONFIGURATION_SCHEMA: ConfigurationSchema = { "type": "boolean", "coerce": "boolean", }, - "username": { - "type": "string", - "empty": False, - }, "wait_timeout": { "type": "integer", "coerce": "integer", diff --git a/src/ahriman/core/report/report_trigger.py b/src/ahriman/core/report/report_trigger.py index 4b33c6c1..6ca750cd 100644 --- a/src/ahriman/core/report/report_trigger.py +++ b/src/ahriman/core/report/report_trigger.py @@ -67,14 +67,6 @@ class ReportTrigger(Trigger): "type": "string", "allowed": ["email"], }, - "full_template_path": { - "type": "path", - "coerce": "absolute_path", - "excludes": ["template_full"], - "required": True, - "path_exists": True, - "path_type": "file", - }, "homepage": { "type": "string", "empty": False, @@ -132,26 +124,16 @@ class ReportTrigger(Trigger): }, "template": { "type": "string", - "excludes": ["template_path"], "dependencies": ["templates"], "required": True, "empty": False, }, "template_full": { "type": "string", - "excludes": ["template_path"], "dependencies": ["templates"], "required": True, "empty": False, }, - "template_path": { - "type": "path", - "coerce": "absolute_path", - "excludes": ["template"], - "required": True, - "path_exists": True, - "path_type": "file", - }, "templates": { "type": "list", "coerce": "list", @@ -199,19 +181,10 @@ class ReportTrigger(Trigger): }, "template": { "type": "string", - "excludes": ["template_path"], "dependencies": ["templates"], "required": True, "empty": False, }, - "template_path": { - "type": "path", - "coerce": "absolute_path", - "excludes": ["template"], - "required": True, - "path_exists": True, - "path_type": "file", - }, "templates": { "type": "list", "coerce": "list", @@ -225,76 +198,6 @@ class ReportTrigger(Trigger): }, }, }, - "telegram": { - "type": "dict", - "schema": { - "type": { - "type": "string", - "allowed": ["telegram"], - }, - "api_key": { - "type": "string", - "required": True, - "empty": False, - }, - "chat_id": { - "type": "string", - "required": True, - "empty": False, - }, - "homepage": { - "type": "string", - "empty": False, - "is_url": ["http", "https"], - }, - "link_path": { - "type": "string", - "required": True, - "empty": False, - "is_url": [], - }, - "rss_url": { - "type": "string", - "empty": False, - "is_url": ["http", "https"], - }, - "template": { - "type": "string", - "excludes": ["template_path"], - "dependencies": ["templates"], - "required": True, - "empty": False, - }, - "template_path": { - "type": "path", - "coerce": "absolute_path", - "excludes": ["template"], - "required": True, - "path_exists": True, - "path_type": "file", - }, - "template_type": { - "type": "string", - "allowed": ["MarkdownV2", "HTML", "Markdown"], - }, - "templates": { - "type": "list", - "coerce": "list", - "schema": { - "type": "path", - "coerce": "absolute_path", - "path_exists": True, - "path_type": "dir", - }, - "empty": False, - }, - "timeout": { - "type": "integer", - "coerce": "integer", - "min": 0, - }, - }, - }, "remote-call": { "type": "dict", "schema": { @@ -354,19 +257,10 @@ class ReportTrigger(Trigger): }, "template": { "type": "string", - "excludes": ["template_path"], "dependencies": ["templates"], "required": True, "empty": False, }, - "template_path": { - "type": "path", - "coerce": "absolute_path", - "excludes": ["template"], - "required": True, - "path_exists": True, - "path_type": "file", - }, "templates": { "type": "list", "coerce": "list", @@ -380,6 +274,67 @@ class ReportTrigger(Trigger): }, }, }, + "telegram": { + "type": "dict", + "schema": { + "type": { + "type": "string", + "allowed": ["telegram"], + }, + "api_key": { + "type": "string", + "required": True, + "empty": False, + }, + "chat_id": { + "type": "string", + "required": True, + "empty": False, + }, + "homepage": { + "type": "string", + "empty": False, + "is_url": ["http", "https"], + }, + "link_path": { + "type": "string", + "required": True, + "empty": False, + "is_url": [], + }, + "rss_url": { + "type": "string", + "empty": False, + "is_url": ["http", "https"], + }, + "template": { + "type": "string", + "dependencies": ["templates"], + "required": True, + "empty": False, + }, + "template_type": { + "type": "string", + "allowed": ["MarkdownV2", "HTML", "Markdown"], + }, + "templates": { + "type": "list", + "coerce": "list", + "schema": { + "type": "path", + "coerce": "absolute_path", + "path_exists": True, + "path_type": "dir", + }, + "empty": False, + }, + "timeout": { + "type": "integer", + "coerce": "integer", + "min": 0, + }, + }, + }, } def __init__(self, repository_id: RepositoryId, configuration: Configuration) -> None: diff --git a/src/ahriman/core/upload/upload_trigger.py b/src/ahriman/core/upload/upload_trigger.py index 1cdc476b..3bf4056d 100644 --- a/src/ahriman/core/upload/upload_trigger.py +++ b/src/ahriman/core/upload/upload_trigger.py @@ -83,6 +83,20 @@ class UploadTrigger(Trigger): }, }, }, + "remote-service": { + "type": "dict", + "schema": { + "type": { + "type": "string", + "allowed": ["ahriman", "remote-service"], + }, + "timeout": { + "type": "integer", + "coerce": "integer", + "min": 0, + }, + }, + }, "rsync": { "type": "dict", "schema": { @@ -107,20 +121,6 @@ class UploadTrigger(Trigger): }, }, }, - "remote-service": { - "type": "dict", - "schema": { - "type": { - "type": "string", - "allowed": ["ahriman", "remote-service"], - }, - "timeout": { - "type": "integer", - "coerce": "integer", - "min": 0, - }, - }, - }, "s3": { "type": "dict", "schema": {