From 994c30da574ce15f598d32b17d19022567f0c7c2 Mon Sep 17 00:00:00 2001 From: Emil Simeonov Date: Thu, 18 Jun 2026 04:09:27 +0200 Subject: [PATCH] GRM-9: test: add parameterized multi-platform Molecule testing (Arch, Ubuntu 24/26, Debian 12/13) --- Makefile | 31 +++++++++++++++++-- .../gitea-runner/molecule/binary/molecule.yml | 6 ++-- .../gitea-runner/molecule/common/prepare.yml | 7 +++-- .../molecule/default/molecule.yml | 6 ++-- 4 files changed, 40 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index 18a2019..e85c832 100644 --- a/Makefile +++ b/Makefile @@ -58,9 +58,36 @@ test-unit: pytest-cov: $(BIN)/pytest tests/unit/ -v --cov=src/gitea_runner_manager --cov-report=term-missing --cov-fail-under=100 +MOLECULE := $(realpath $(BIN))/molecule +MOLECULE_BASE := cd ansible/roles/gitea-runner && ANSIBLE_ALLOW_BROKEN_CONDITIONALS=true $(MOLECULE) + +# Quick local test: Ubuntu 22.04 only molecule: - cd ansible/roles/gitea-runner && ANSIBLE_ALLOW_BROKEN_CONDITIONALS=true $(realpath $(BIN))/molecule test - cd ansible/roles/gitea-runner && ANSIBLE_ALLOW_BROKEN_CONDITIONALS=true $(realpath $(BIN))/molecule test -s binary + $(MOLECULE_BASE) test + $(MOLECULE_BASE) test -s binary + +# Docker mode tests for all platforms (sequential; override env vars for CI matrix parallelisation) +molecule-docker: + @echo "Testing Docker mode on all platforms..." + $(MOLECULE_BASE) test + MOLECULE_PLATFORM_NAME=ubuntu-2404 MOLECULE_PLATFORM_IMAGE=geerlingguy/docker-ubuntu2404-ansible:latest $(MOLECULE_BASE) test + MOLECULE_PLATFORM_NAME=ubuntu-2604 MOLECULE_PLATFORM_IMAGE=geerlingguy/docker-ubuntu2604-ansible:latest $(MOLECULE_BASE) test + MOLECULE_PLATFORM_NAME=debian-12 MOLECULE_PLATFORM_IMAGE=geerlingguy/docker-debian12-ansible:latest $(MOLECULE_BASE) test + MOLECULE_PLATFORM_NAME=debian-13 MOLECULE_PLATFORM_IMAGE=geerlingguy/docker-debian13-ansible:latest $(MOLECULE_BASE) test + MOLECULE_PLATFORM_NAME=archlinux MOLECULE_PLATFORM_IMAGE=marcstraube/archlinux-ansible:latest MOLECULE_PLATFORM_COMMAND=/usr/lib/systemd/systemd $(MOLECULE_BASE) test + +# Binary mode tests for all platforms (sequential; override env vars for CI matrix parallelisation) +molecule-binary: + @echo "Testing Binary mode on all platforms..." + $(MOLECULE_BASE) test -s binary + MOLECULE_PLATFORM_NAME=ubuntu-2404 MOLECULE_PLATFORM_IMAGE=geerlingguy/docker-ubuntu2404-ansible:latest $(MOLECULE_BASE) test -s binary + MOLECULE_PLATFORM_NAME=ubuntu-2604 MOLECULE_PLATFORM_IMAGE=geerlingguy/docker-ubuntu2604-ansible:latest $(MOLECULE_BASE) test -s binary + MOLECULE_PLATFORM_NAME=debian-12 MOLECULE_PLATFORM_IMAGE=geerlingguy/docker-debian12-ansible:latest $(MOLECULE_BASE) test -s binary + MOLECULE_PLATFORM_NAME=debian-13 MOLECULE_PLATFORM_IMAGE=geerlingguy/docker-debian13-ansible:latest $(MOLECULE_BASE) test -s binary + MOLECULE_PLATFORM_NAME=archlinux MOLECULE_PLATFORM_IMAGE=marcstraube/archlinux-ansible:latest MOLECULE_PLATFORM_COMMAND=/usr/lib/systemd/systemd $(MOLECULE_BASE) test -s binary + +# All platform tests (sequential; use CI matrix for parallel execution) +molecule-all: molecule-docker molecule-binary test: test-all diff --git a/ansible/roles/gitea-runner/molecule/binary/molecule.yml b/ansible/roles/gitea-runner/molecule/binary/molecule.yml index dee039d..56c6310 100644 --- a/ansible/roles/gitea-runner/molecule/binary/molecule.yml +++ b/ansible/roles/gitea-runner/molecule/binary/molecule.yml @@ -3,9 +3,9 @@ driver: name: docker platforms: - - name: instance - image: geerlingguy/docker-ubuntu2204-ansible:latest - command: sleep infinity + - name: ${MOLECULE_PLATFORM_NAME:-ubuntu-2204} + image: ${MOLECULE_PLATFORM_IMAGE:-geerlingguy/docker-ubuntu2204-ansible:latest} + command: ${MOLECULE_PLATFORM_COMMAND:-sleep infinity} volumes: - /sys/fs/cgroup:/sys/fs/cgroup:rw cgroupns_mode: host diff --git a/ansible/roles/gitea-runner/molecule/common/prepare.yml b/ansible/roles/gitea-runner/molecule/common/prepare.yml index 3351d7f..932443b 100644 --- a/ansible/roles/gitea-runner/molecule/common/prepare.yml +++ b/ansible/roles/gitea-runner/molecule/common/prepare.yml @@ -14,12 +14,16 @@ state: present when: ansible_facts['os_family'] == 'Debian' + - name: Update pacman cache + community.general.pacman: + update_cache: true + when: ansible_facts['os_family'] == 'Archlinux' + - name: Ensure /etc/docker directory exists ansible.builtin.file: path: /etc/docker state: directory mode: "0755" - when: ansible_facts['os_family'] == 'Debian' - name: Configure Docker daemon for vfs storage driver (DinD) ansible.builtin.copy: @@ -27,4 +31,3 @@ content: | {"storage-driver": "vfs"} mode: "0644" - when: ansible_facts['os_family'] == 'Debian' diff --git a/ansible/roles/gitea-runner/molecule/default/molecule.yml b/ansible/roles/gitea-runner/molecule/default/molecule.yml index dee039d..56c6310 100644 --- a/ansible/roles/gitea-runner/molecule/default/molecule.yml +++ b/ansible/roles/gitea-runner/molecule/default/molecule.yml @@ -3,9 +3,9 @@ driver: name: docker platforms: - - name: instance - image: geerlingguy/docker-ubuntu2204-ansible:latest - command: sleep infinity + - name: ${MOLECULE_PLATFORM_NAME:-ubuntu-2204} + image: ${MOLECULE_PLATFORM_IMAGE:-geerlingguy/docker-ubuntu2204-ansible:latest} + command: ${MOLECULE_PLATFORM_COMMAND:-sleep infinity} volumes: - /sys/fs/cgroup:/sys/fs/cgroup:rw cgroupns_mode: host