Use three separate jobs for code coverage diffing

Reusable roles and playbooks are quite important upstream (I have
zuul-jobs inclusion in mind). Besides that, in Zuul's Ansible a playbook
is supposed to come from the same repo as the one where the job
definition is placed, and one can only override a job's `run` playbook.
This makes it rather annoying to modify, say, `tox-coverage` definition.

My previous approach with a job which performed two things (build the
old source *and* then generate coverage report) also would not scale
that well if the build+test phase is long.

Switch to three jobs:

- build the current, proposed state, and gather coverage info,
- build the past state, gather coverage info,
- download two artifacts from previous runs, reproduce the source trees,
and generate the final coverage diff report.

See-also: https://review.gerrithub.io/c/Telecominfraproject/oopt-zuul-jobs/+/489964
Change-Id: I6eb61669c6f28440a55ba08569a4f2683513a9fa
diff --git a/roles/fetch-coverage-diff/tasks/main.yaml b/roles/fetch-coverage-diff/tasks/main.yaml
new file mode 100644
index 0000000..0e7ce70
--- /dev/null
+++ b/roles/fetch-coverage-diff/tasks/main.yaml
@@ -0,0 +1,34 @@
+- name: Check for coverage-diff.html
+  stat:
+    path: "{{ ansible_user_dir }}/zuul-output/logs/coverage-diff.html"
+    get_checksum: false
+    get_mime: false
+    get_md5: false
+  register: coverage_diff_html_stat
+
+- name: Register current coverage report as an artifact
+  when: coverage_diff_html_stat.stat.exists
+  zuul_return:
+    data:
+      zuul:
+        artifacts:
+          - name: "Full coverage report (current)"
+            url: "coverage-current.html"
+
+- name: Register previous coverage report as an artifact
+  when: coverage_diff_html_stat.stat.exists
+  zuul_return:
+    data:
+      zuul:
+        artifacts:
+          - name: "Full coverage report (previous)"
+            url: "coverage-previous.html"
+
+- name: Register coverage report diff as an artifact
+  when: coverage_diff_html_stat.stat.exists
+  zuul_return:
+    data:
+      zuul:
+        artifacts:
+          - name: "Coverage report: difference in coverage"
+            url: "coverage-diff.html"