From e08c11ea8367360cc25b6397700759481d6786f6 Mon Sep 17 00:00:00 2001 From: Emil Simeonov Date: Thu, 18 Jun 2026 04:37:05 +0200 Subject: [PATCH] GRM-12: feat: add GITEA_ADMIN_TOKEN support for integration test --- ansible/install-runner.yml | 1 + src/gitea_runner_manager/cli.py | 8 ++++++++ src/gitea_runner_manager/runner_manager.py | 7 ++++++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/ansible/install-runner.yml b/ansible/install-runner.yml index 3a51b29..1c72766 100644 --- a/ansible/install-runner.yml +++ b/ansible/install-runner.yml @@ -5,5 +5,6 @@ vars: gitea_url: "{{ gitea_url | mandatory }}" registration_token: "{{ registration_token | mandatory }}" + gitea_admin_token: "{{ gitea_admin_token | default('') }}" roles: - role: gitea-runner diff --git a/src/gitea_runner_manager/cli.py b/src/gitea_runner_manager/cli.py index 0995f71..82ad8bc 100644 --- a/src/gitea_runner_manager/cli.py +++ b/src/gitea_runner_manager/cli.py @@ -43,6 +43,12 @@ def cli() -> None: default="docker", help="Runner deployment mode (default: docker)", ) +@click.option( + "--admin-token", + "-a", + default=lambda: os.getenv("GITEA_ADMIN_TOKEN"), + help="Gitea admin API token for integration test (env: GITEA_ADMIN_TOKEN)", +) @click.option("--ask-become-pass", is_flag=True, help="Prompt for sudo password") def install( host: str, @@ -51,6 +57,7 @@ def install( name: str | None, token: str | None, mode: str, + admin_token: str | None, ask_become_pass: bool, ) -> None: """Install and configure a runner on a remote host.""" @@ -69,6 +76,7 @@ def install( token=token, gitea_url=gitea_url, mode=mode, + admin_token=admin_token, ask_become_pass=ask_become_pass, ) except GRMError as e: diff --git a/src/gitea_runner_manager/runner_manager.py b/src/gitea_runner_manager/runner_manager.py index 1ae21ac..3a9a741 100644 --- a/src/gitea_runner_manager/runner_manager.py +++ b/src/gitea_runner_manager/runner_manager.py @@ -21,6 +21,7 @@ class RunnerManager: token: str | None = None, gitea_url: str = "", mode: str = "docker", + admin_token: str | None = None, ask_become_pass: bool = False, ) -> None: """Install a runner on a remote host using Ansible.""" @@ -33,6 +34,10 @@ class RunnerManager: if not playbook.exists(): raise AnsibleError(f"Playbook not found: {playbook}") + extra_vars = f"registration_token={token} runner_name={name} gitea_url={gitea_url} runner_mode={mode}" + if admin_token: + extra_vars += f" gitea_admin_token={admin_token}" + cmd = [ "ansible-playbook", str(playbook), @@ -41,7 +46,7 @@ class RunnerManager: "-u", user, "--extra-vars", - f"registration_token={token} runner_name={name} gitea_url={gitea_url} runner_mode={mode}", + extra_vars, ] if key: cmd.extend(["--private-key", key])