diff --git a/.checkmake.ini b/.checkmake.ini index 970266c..9956bc5 100644 --- a/.checkmake.ini +++ b/.checkmake.ini @@ -1,3 +1,4 @@ [checkmake] # Disable the phony rule which flags common .PHONY placement patterns # as it produces false positives for standard Makefile layouts +disable=maxbodylength diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index fc91235..e97e077 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -47,3 +47,10 @@ repos: language: system pass_filenames: false stages: [pre-push] + + - id: commit-msg + name: validate commit message + entry: .venv/bin/python scripts/validate_commit_msg.py + language: system + stages: [commit-msg] + pass_filenames: true diff --git a/Makefile b/Makefile index 14f22e4..3986680 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: all setup install update lint ansible-lint makefile-lint lint-all test test-unit pytest-cov molecule test-all clean +.PHONY: all setup install update lint ansible-lint makefile-lint lint-all test test-unit pytest-cov molecule molecule-docker molecule-binary molecule-all test-all clean PYTHON := python3 VENV := .venv @@ -11,6 +11,7 @@ setup: $(VENV)/bin/activate .env activate-scripts checkmake $(BIN)/pip install -e ".[dev]" $(BIN)/ansible-galaxy collection install -r ansible/requirements.yml $(BIN)/pre-commit install + $(BIN)/pre-commit install --hook-type commit-msg @echo "Setup complete. Activate the virtual environment with: source .venv/bin/activate" .env: @@ -90,30 +91,15 @@ MOLECULE_BASE := cd ansible/roles/gitea-runner && ANSIBLE_ALLOW_BROKEN_CONDITION # Quick local test: Ubuntu 22.04 only molecule: - $(MOLECULE_BASE) test - $(MOLECULE_BASE) test -s binary - $(MOLECULE_BASE) test -s multi-instance - $(MOLECULE_BASE) test -s lifecycle + @set -e; for s in default binary multi-instance lifecycle template-content deregister update; do if [ "$$s" = "default" ]; then $(MOLECULE_BASE) test; else $(MOLECULE_BASE) test -s $$s; fi; done # 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 + @set -e; for p in ubuntu-2204:geerlingguy/docker-ubuntu2204-ansible:latest:'' ubuntu-2404:geerlingguy/docker-ubuntu2404-ansible:latest:'' ubuntu-2604:geerlingguy/docker-ubuntu2604-ansible:latest:'' debian-12:geerlingguy/docker-debian12-ansible:latest:'' debian-13:geerlingguy/docker-debian13-ansible:latest:'' archlinux:marcstraube/archlinux-ansible:latest:/usr/lib/systemd/systemd; do IFS=":"; set -- $$p; MOLECULE_PLATFORM_NAME=$$1 MOLECULE_PLATFORM_IMAGE=$$2 MOLECULE_PLATFORM_COMMAND=$$3 $(MOLECULE_BASE) test; done # 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 + @set -e; for p in ubuntu-2204:geerlingguy/docker-ubuntu2204-ansible:latest:'' ubuntu-2404:geerlingguy/docker-ubuntu2404-ansible:latest:'' ubuntu-2604:geerlingguy/docker-ubuntu2604-ansible:latest:'' debian-12:geerlingguy/docker-debian12-ansible:latest:'' debian-13:geerlingguy/docker-debian13-ansible:latest:'' archlinux:marcstraube/archlinux-ansible:latest:/usr/lib/systemd/systemd; do IFS=":"; set -- $$p; MOLECULE_PLATFORM_NAME=$$1 MOLECULE_PLATFORM_IMAGE=$$2 MOLECULE_PLATFORM_COMMAND=$$3 $(MOLECULE_BASE) test -s binary; done # All platform tests (sequential; use CI matrix for parallel execution) molecule-all: molecule-docker molecule-binary diff --git a/ansible/roles/gitea-runner/molecule/binary/verify.yml b/ansible/roles/gitea-runner/molecule/binary/verify.yml index 0227df2..2859521 100644 --- a/ansible/roles/gitea-runner/molecule/binary/verify.yml +++ b/ansible/roles/gitea-runner/molecule/binary/verify.yml @@ -2,6 +2,8 @@ - name: Verify hosts: all become: true + vars: + runner_name: "molecule-test-runner" pre_tasks: - name: Load role defaults ansible.builtin.include_vars: diff --git a/ansible/roles/gitea-runner/molecule/default/verify.yml b/ansible/roles/gitea-runner/molecule/default/verify.yml index bee935f..9624ea0 100644 --- a/ansible/roles/gitea-runner/molecule/default/verify.yml +++ b/ansible/roles/gitea-runner/molecule/default/verify.yml @@ -2,6 +2,8 @@ - name: Verify hosts: all become: true + vars: + runner_name: "molecule-test-runner" pre_tasks: - name: Load role defaults ansible.builtin.include_vars: diff --git a/ansible/roles/gitea-runner/molecule/lifecycle/verify.yml b/ansible/roles/gitea-runner/molecule/lifecycle/verify.yml index 891e40c..79e185f 100644 --- a/ansible/roles/gitea-runner/molecule/lifecycle/verify.yml +++ b/ansible/roles/gitea-runner/molecule/lifecycle/verify.yml @@ -2,6 +2,8 @@ - name: Verify hosts: all become: true + vars: + runner_name: "lifecycle-test-runner" pre_tasks: - name: Load role defaults ansible.builtin.include_vars: @@ -31,7 +33,7 @@ - name: Check instance data directory exists after lifecycle ansible.builtin.stat: - path: "/var/lib/gitea-runner/lifecycle-test-runner" + path: "{{ gitea_runner_base_data_dir }}/{{ runner_name }}" register: data_dir_stat - name: Assert instance data directory exists