From 5b26d3c8deaae07730a95173ae650b349c3f8ce2 Mon Sep 17 00:00:00 2001 From: ginger Date: Jul 16 2021 09:22:47 +0000 Subject: add role: testing-farm-run-test --- diff --git a/roles/testing-farm-run-test/defaults/main.yml b/roles/testing-farm-run-test/defaults/main.yml new file mode 100644 index 0000000..1ffdb63 --- /dev/null +++ b/roles/testing-farm-run-test/defaults/main.yml @@ -0,0 +1,2 @@ +--- +api_url: "https://api.dev.testing-farm.io/v0.1" diff --git a/roles/testing-farm-run-test/tasks/main.yml b/roles/testing-farm-run-test/tasks/main.yml new file mode 100644 index 0000000..1d9b83f --- /dev/null +++ b/roles/testing-farm-run-test/tasks/main.yml @@ -0,0 +1,59 @@ +--- +- name: generate request template for the POST request + template: + src: request_body.yml.j2 + dest: request_body.yml + +- name: read the request variable + include_vars: + file: request_body.yml + name: request_body + +- name: trigger a Testing Farm test + uri: + url: "{{ api_url }}/requests" + method: POST + body_format: json + body: "{{ request_body }}" + status_code: 200, 201 + timeout: 30 + register: id + +- debug: + msg: "Request URL: {{ api_url }}/requests/{{ id.json.id }}" + +- name: wait until the state is complete or error + uri: + url: "{{ api_url }}/requests/{{ id.json.id }}" + method: GET + body_format: json + body: + api_key: "{{ request_body.api_key }}" + status_code: 200 + timeout: 30 + register: response + until: response.json.state == "complete" or + response.json.state == "error" + retries: 720 + delay: 60 + ignore_errors: true + +- name: Testing Farm API request response + debug: var=response + +- name: Testing Farm artifacts + debug: msg="See https://artifacts.dev.testing-farm.io/{{ id.json.id }} for detailed results" + +- name: Check the result for timeout + fail: msg="Testing has timed out in 12 hours" + when: response.json.result.overall is undefined or response.json.state == "running" or response.json.state == "queued" + +- name: Check the result for error + fail: msg="Testing Farm failed to finish the test process" + when: response.json.state == "error" + +- name: Check the result for failure + fail: msg="Tests have failed" + when: response.json.result.overall == "failed" + +- debug: msg="Tests have passed" diff --git a/roles/testing-farm-run-test/templates/request_body.yml.j2 b/roles/testing-farm-run-test/templates/request_body.yml.j2 new file mode 100644 index 0000000..6a70084 --- /dev/null +++ b/roles/testing-farm-run-test/templates/request_body.yml.j2 @@ -0,0 +1,19 @@ +--- +api_key: "{{ testing_farm_zuul_fedora_ci_key.apikey }}" +test: + fmf: + # NOTE: See https://zuul-ci.org/docs/zuul/reference/jobs.html#zuul-variables + url: "https://src.fedoraproject.org/{{ zuul.project.name }}" + ref: "{{ zuul.ref }}" +environments: + - os: + # NOTE: See https://pagure.io/fedora-zuul-jobs-config/blob/master/f/zuul.d/jobs.yaml + compose: "{{ compose }}" + arch: x86_64 + artifacts: +{% for repo in zuul.artifacts %} +{% if repo.name == 'repo' %} + - type: "repository" + id: "{{ repo.url }}" +{% endif %} +{% endfor %}