From a57a5f8828d82a49eeba007b46ec2e67b5f84e97 Mon Sep 17 00:00:00 2001 From: Kevin Veen-Birkenbach Date: Sat, 6 Sep 2025 10:25:41 +0200 Subject: [PATCH] Refactor: remove Python-based Listmonk upgrade logic and implement upgrade as Ansible task Details: - Removed upgrade_listmonk() function and related calls from update-docker script - Added dedicated Ansible task in web-app-listmonk role to run non-interactive DB/schema upgrade - Conditional execution via MODE_UPDATE Ref: https://chatgpt.com/share/68bbeff1-27a0-800f-bef3-03ab597595fd --- roles/update-docker/templates/script.py.j2 | 12 +----------- roles/web-app-listmonk/tasks/main.yml | 9 +++++++++ 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/roles/update-docker/templates/script.py.j2 b/roles/update-docker/templates/script.py.j2 index facfdec9..b27ce528 100644 --- a/roles/update-docker/templates/script.py.j2 +++ b/roles/update-docker/templates/script.py.j2 @@ -144,14 +144,6 @@ def update_discourse(directory): else: print("Discourse update skipped. No changes in git repository.") -def upgrade_listmonk(): - """ - Runs the upgrade for Listmonk - """ - print("Starting Listmonk upgrade.") - run_command('echo "y" | docker compose run -T application ./listmonk --upgrade') - print("Upgrade complete.") - def update_procedure(command): """ Attempts to execute a command up to a maximum number of retries. @@ -210,8 +202,6 @@ if __name__ == "__main__": # The following instances need additional update and upgrade procedures if os.path.basename(dir_path) == "discourse": update_discourse(dir_path) - elif os.path.basename(dir_path) == "listmonk": - upgrade_listmonk() - + # @todo implement dedicated procedure for bluesky # @todo implement dedicated procedure for taiga diff --git a/roles/web-app-listmonk/tasks/main.yml b/roles/web-app-listmonk/tasks/main.yml index 0dc4b2b5..7175665f 100644 --- a/roles/web-app-listmonk/tasks/main.yml +++ b/roles/web-app-listmonk/tasks/main.yml @@ -30,6 +30,14 @@ chdir: "{{ docker_compose.directories.instance }}" when: "'No relations found.' in db_tables.stdout" +- name: "Listmonk | run DB/schema upgrade (non-interactive)" + ansible.builtin.shell: | + set -o pipefail + echo "y" | docker compose run -T application ./listmonk --upgrade + args: + chdir: "{{ docker_compose.directories.instance }}" + when: MODE_UPDATE | bool + - name: Build OIDC settings JSON set_fact: oidc_settings_json: >- @@ -73,3 +81,4 @@ no_log: "{{ MASK_CREDENTIALS_IN_LOGS | bool }}" async: "{{ ASYNC_TIME if ASYNC_ENABLED | bool else omit }}" poll: "{{ ASYNC_POLL if ASYNC_ENABLED | bool else omit }}" +