feat(test): add verify playbooks for custom tests

This commit is contained in:
Bertrand Lanson 2023-12-12 23:27:11 +01:00
parent 18f875f585
commit 1926d0b95c
2 changed files with 264 additions and 18 deletions

View File

@ -4,17 +4,140 @@
gather_facts: true gather_facts: true
become: true become: true
tasks: tasks:
- name: "Test: file /etc/hosts" - name: "Test: directory /opt/gitea-actions"
block: block:
- name: "Stat file /etc/hosts" - name: "Stat directory /opt/gitea-actions"
ansible.builtin.stat: ansible.builtin.stat:
path: "/etc/hosts" path: "/opt/gitea-actions"
register: stat_etc_hosts register: stat_opt_gitea_actions
- name: "Verify file /etc/hosts" - name: "Stat directory /opt/gitea-actions/cache"
ansible.builtin.stat:
path: "/opt/gitea-actions"
register: stat_opt_gitea_actions_cache
- name: "Stat directory /opt/gitea-actions/data"
ansible.builtin.stat:
path: "/opt/gitea-actions"
register: stat_opt_gitea_actions_data
- name: "Stat file /opt/gitea-actions/config.yaml"
ansible.builtin.stat:
path: "/opt/gitea-actions/config.yaml"
register: stat_opt_gitea_actions_config_yaml
- name: "Slurp file /opt/gitea-actions/config.yaml"
ansible.builtin.slurp:
src: "/opt/gitea-actions/config.yaml"
register: slurp_opt_gitea_actions_config_yaml
- name: "Verify directory /opt/gitea-actions"
vars:
expected_act_config_file: |
# Ansible managed: Do NOT edit this file manually!
cache:
dir: /cache
enabled: true
external_server: null
host: 127.0.0.1
port: 9898
container:
docker_host: ''
network: ''
options: ''
privileged: false
valid_volumes: []
workdir_parent: null
host:
workdir_parent: null
log:
level: info
runner:
capacity: 1
fetch_interval: 2s
fetch_timeout: 5s
file: .runner
insecure: false
labels:
- debian-bullseye:docker://node:16-bullseye
timeout: 3h
ansible.builtin.assert: ansible.builtin.assert:
that: that:
- stat_etc_hosts.stat.exists - stat_opt_gitea_actions.stat.exists
- stat_etc_hosts.stat.isreg - stat_opt_gitea_actions.stat.isdir
- stat_etc_hosts.stat.pw_name == 'root' - stat_opt_gitea_actions.stat.pw_name == 'root'
- stat_etc_hosts.stat.gr_name == 'root' - stat_opt_gitea_actions.stat.gr_name == 'root'
- stat_opt_gitea_actions.stat.mode == '0755'
- stat_opt_gitea_actions_cache.stat.exists
- stat_opt_gitea_actions_cache.stat.isdir
- stat_opt_gitea_actions_cache.stat.pw_name == 'root'
- stat_opt_gitea_actions_cache.stat.gr_name == 'root'
- stat_opt_gitea_actions_cache.stat.mode == '0755'
- stat_opt_gitea_actions_data.stat.exists
- stat_opt_gitea_actions_data.stat.isdir
- stat_opt_gitea_actions_data.stat.pw_name == 'root'
- stat_opt_gitea_actions_data.stat.gr_name == 'root'
- stat_opt_gitea_actions_data.stat.mode == '0755'
- stat_opt_gitea_actions_config_yaml.stat.exists
- stat_opt_gitea_actions_config_yaml.stat.isreg
- stat_opt_gitea_actions_config_yaml.stat.pw_name == 'root'
- stat_opt_gitea_actions_config_yaml.stat.gr_name == 'root'
- stat_opt_gitea_actions_config_yaml.stat.mode == '0600'
- (slurp_opt_gitea_actions_config_yaml.content|b64decode) == expected_act_config_file
- name: "Test: service gitea-runner_container"
block:
- name: "Get service gitea-runner_container"
ansible.builtin.service_facts:
- name: "Stat file /etc/systemd/system/gitea-runner_container.service"
ansible.builtin.stat:
path: "/etc/systemd/system/gitea-runner_container.service"
register: stat_etc_systemd_system_gitea_runner_container_service
- name: "Slurp file /etc/systemd/system/gitea-runner_container.service"
ansible.builtin.slurp:
src: "/etc/systemd/system/gitea-runner_container.service"
register: slurp_etc_systemd_system_gitea_runner_container_service
- name: "Verify service gitea-runner"
vars:
gitea_runner_expected_service_file: |
# Ansible managed: Do NOT edit this file manually!
[Unit]
After=docker.service
PartOf=docker.service
Requires=docker.service
[Service]
EnvironmentFile=/etc/default/gitea-runner
ExecStartPre=-/usr/bin/docker rm -f gitea-runner
ExecStart=/usr/bin/docker run --name gitea-runner \
--rm \
--env-file /etc/default/gitea-runner \
--network "bridge" \
--volume "/var/run/docker.sock:/var/run/docker.sock" \
--volume "/opt/gitea-actions/config.yaml:/config.yaml" \
--volume "/opt/gitea-actions/data:/data" \
--volume "/opt/gitea-actions/cache:/cache" \
--publish "9898:9898" \
gitea/act_runner:latest
ExecStop=/usr/bin/docker stop gitea-runner
SyslogIdentifier=gitea-runner
Restart=always
RestartSec=10s
[Install]
WantedBy=docker.service
ansible.builtin.assert:
that:
- stat_etc_systemd_system_gitea_runner_container_service.stat.exists
- stat_etc_systemd_system_gitea_runner_container_service.stat.isreg
- stat_etc_systemd_system_gitea_runner_container_service.stat.pw_name == 'root'
- stat_etc_systemd_system_gitea_runner_container_service.stat.gr_name == 'root'
- stat_etc_systemd_system_gitea_runner_container_service.stat.mode == '0644'
- (slurp_etc_systemd_system_gitea_runner_container_service.content|b64decode) == gitea_runner_expected_service_file
- ansible_facts.services['gitea-runner_container.service'] is defined
- ansible_facts.services['gitea-runner_container.service']['source'] == 'systemd'
- ansible_facts.services['gitea-runner_container.service']['state'] == 'stopped'
- ansible_facts.services['gitea-runner_container.service']['status'] == 'enabled'

View File

@ -4,17 +4,140 @@
gather_facts: true gather_facts: true
become: true become: true
tasks: tasks:
- name: "Test: file /etc/hosts" - name: "Test: directory /opt/gitea-actions"
block: block:
- name: "Stat file /etc/hosts" - name: "Stat directory /opt/gitea-actions"
ansible.builtin.stat: ansible.builtin.stat:
path: "/etc/hosts" path: "/opt/gitea-actions"
register: stat_etc_hosts register: stat_opt_gitea_actions
- name: "Verify file /etc/hosts" - name: "Stat directory /opt/gitea-actions/cache"
ansible.builtin.stat:
path: "/opt/gitea-actions"
register: stat_opt_gitea_actions_cache
- name: "Stat directory /opt/gitea-actions/data"
ansible.builtin.stat:
path: "/opt/gitea-actions"
register: stat_opt_gitea_actions_data
- name: "Stat file /opt/gitea-actions/config.yaml"
ansible.builtin.stat:
path: "/opt/gitea-actions/config.yaml"
register: stat_opt_gitea_actions_config_yaml
- name: "Slurp file /opt/gitea-actions/config.yaml"
ansible.builtin.slurp:
src: "/opt/gitea-actions/config.yaml"
register: slurp_opt_gitea_actions_config_yaml
- name: "Verify directory /opt/gitea-actions"
vars:
expected_act_config_file: |
# Ansible managed: Do NOT edit this file manually!
cache:
dir: /cache
enabled: true
external_server: null
host: 127.0.0.1
port: 9898
container:
docker_host: ''
network: ''
options: ''
privileged: false
valid_volumes: []
workdir_parent: null
host:
workdir_parent: null
log:
level: info
runner:
capacity: 1
fetch_interval: 2s
fetch_timeout: 5s
file: .runner
insecure: false
labels:
- debian-bullseye:docker://node:16-bullseye
timeout: 3h
ansible.builtin.assert: ansible.builtin.assert:
that: that:
- stat_etc_hosts.stat.exists - stat_opt_gitea_actions.stat.exists
- stat_etc_hosts.stat.isreg - stat_opt_gitea_actions.stat.isdir
- stat_etc_hosts.stat.pw_name == 'root' - stat_opt_gitea_actions.stat.pw_name == 'root'
- stat_etc_hosts.stat.gr_name == 'root' - stat_opt_gitea_actions.stat.gr_name == 'root'
- stat_opt_gitea_actions.stat.mode == '0755'
- stat_opt_gitea_actions_cache.stat.exists
- stat_opt_gitea_actions_cache.stat.isdir
- stat_opt_gitea_actions_cache.stat.pw_name == 'root'
- stat_opt_gitea_actions_cache.stat.gr_name == 'root'
- stat_opt_gitea_actions_cache.stat.mode == '0755'
- stat_opt_gitea_actions_data.stat.exists
- stat_opt_gitea_actions_data.stat.isdir
- stat_opt_gitea_actions_data.stat.pw_name == 'root'
- stat_opt_gitea_actions_data.stat.gr_name == 'root'
- stat_opt_gitea_actions_data.stat.mode == '0755'
- stat_opt_gitea_actions_config_yaml.stat.exists
- stat_opt_gitea_actions_config_yaml.stat.isreg
- stat_opt_gitea_actions_config_yaml.stat.pw_name == 'root'
- stat_opt_gitea_actions_config_yaml.stat.gr_name == 'root'
- stat_opt_gitea_actions_config_yaml.stat.mode == '0600'
- (slurp_opt_gitea_actions_config_yaml.content|b64decode) == expected_act_config_file
- name: "Test: service gitea-runner_container"
block:
- name: "Get service gitea-runner_container"
ansible.builtin.service_facts:
- name: "Stat file /etc/systemd/system/gitea-runner_container.service"
ansible.builtin.stat:
path: "/etc/systemd/system/gitea-runner_container.service"
register: stat_etc_systemd_system_gitea_runner_container_service
- name: "Slurp file /etc/systemd/system/gitea-runner_container.service"
ansible.builtin.slurp:
src: "/etc/systemd/system/gitea-runner_container.service"
register: slurp_etc_systemd_system_gitea_runner_container_service
- name: "Verify service gitea-runner"
vars:
gitea_runner_expected_service_file: |
# Ansible managed: Do NOT edit this file manually!
[Unit]
After=docker.service
PartOf=docker.service
Requires=docker.service
[Service]
EnvironmentFile=/etc/default/gitea-runner
ExecStartPre=-/usr/bin/docker rm -f gitea-runner
ExecStart=/usr/bin/docker run --name gitea-runner \
--rm \
--env-file /etc/default/gitea-runner \
--network "bridge" \
--volume "/var/run/docker.sock:/var/run/docker.sock" \
--volume "/opt/gitea-actions/config.yaml:/config.yaml" \
--volume "/opt/gitea-actions/data:/data" \
--volume "/opt/gitea-actions/cache:/cache" \
--publish "9898:9898" \
gitea/act_runner:latest
ExecStop=/usr/bin/docker stop gitea-runner
SyslogIdentifier=gitea-runner
Restart=always
RestartSec=10s
[Install]
WantedBy=docker.service
ansible.builtin.assert:
that:
- stat_etc_systemd_system_gitea_runner_container_service.stat.exists
- stat_etc_systemd_system_gitea_runner_container_service.stat.isreg
- stat_etc_systemd_system_gitea_runner_container_service.stat.pw_name == 'root'
- stat_etc_systemd_system_gitea_runner_container_service.stat.gr_name == 'root'
- stat_etc_systemd_system_gitea_runner_container_service.stat.mode == '0644'
- (slurp_etc_systemd_system_gitea_runner_container_service.content|b64decode) == gitea_runner_expected_service_file
- ansible_facts.services['gitea-runner_container.service'] is defined
- ansible_facts.services['gitea-runner_container.service']['source'] == 'systemd'
- ansible_facts.services['gitea-runner_container.service']['state'] == 'stopped'
- ansible_facts.services['gitea-runner_container.service']['status'] == 'enabled'