diff --git a/playbooks/prometheus-alert-rules-test.yaml b/playbooks/prometheus-alert-rules-test.yaml new file mode 100644 index 0000000..46cb1b5 --- /dev/null +++ b/playbooks/prometheus-alert-rules-test.yaml @@ -0,0 +1,3 @@ +- hosts: all + roles: + - prometheus-alert-rules-test diff --git a/roles/prometheus-alert-rules-test/tasks/main.yaml b/roles/prometheus-alert-rules-test/tasks/main.yaml new file mode 100644 index 0000000..76e50b1 --- /dev/null +++ b/roles/prometheus-alert-rules-test/tasks/main.yaml @@ -0,0 +1,24 @@ +- name: snapd is installed + apt: + name: snapd + become: true + +- name: prometheus is installed + snap: + name: prometheus + channel: "{{ prometheus_channel | default('2/stable') }}" + become: true + +- name: Check if prometheus_alerts_test_rules_dir exists + stat: + path: "{{ zuul.project.src_dir }}/{{ prometheus_alerts_test_rules_dir }}" + register: prometheus_alerts_dir_exists + +- name: Exit if test rules dir doesn't exist + fail: + msg: "Directory {{ prometheus_alerts_test_rules_dir }} does not exist" + when: not prometheus_alerts_dir_exists.stat.exists + +- name: promtool tests pass + command: + cmd: bash -c 'promtool test rules {{ zuul.project.src_dir }}/{{ prometheus_alerts_test_rules_dir }}/*.yaml' diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml index 500e6ec..7abdad8 100644 --- a/zuul.d/jobs.yaml +++ b/zuul.d/jobs.yaml @@ -12,3 +12,8 @@ requires: charm dependencies: - name: charmbuild + +- job: + name: prometheus-alert-rules-test + run: playbooks/prometheus-alert-rules-test.yaml + timeout: 600 diff --git a/zuul.d/project-templates.yaml b/zuul.d/project-templates.yaml index d7a93a8..b4b7102 100644 --- a/zuul.d/project-templates.yaml +++ b/zuul.d/project-templates.yaml @@ -9,3 +9,13 @@ nodeset: ubuntu-focal - zaza-smoke-test: nodeset: ubuntu-focal + +- project-template: + name: prometheus-alert-rules-test + description: | + This project template is defined to run prometheus alert rules + tests + check: + jobs: + - prometheus-alert-rules-test: + nodeset: ubuntu-focal