From e3e6603fb037a0c16e6c2577041626323a461502 Mon Sep 17 00:00:00 2001 From: Fabien Boucher Date: Sep 13 2019 09:30:07 +0000 Subject: [PATCH 1/11] Add initial rpminspect role - Issue wrapping into ansible - issue upstream - rpminspect segfault in compare mode Two use cases, by default w/o check_previous_build enabled rpminspect do a sanity check of the built package. With check_previous_build enabled, the role fetch the latest build on koji and rpminspect will perform the before and after build compare too. --- diff --git a/roles/rpminspect/defaults/main.yaml b/roles/rpminspect/defaults/main.yaml new file mode 100644 index 0000000..a02f6af --- /dev/null +++ b/roles/rpminspect/defaults/main.yaml @@ -0,0 +1,5 @@ +--- +target: rawhide +koji_cmd: koji +check_previous_build_enabled: false +validate_cert: true \ No newline at end of file diff --git a/roles/rpminspect/tasks/main.yaml b/roles/rpminspect/tasks/main.yaml new file mode 100644 index 0000000..ac07b4a --- /dev/null +++ b/roles/rpminspect/tasks/main.yaml @@ -0,0 +1,53 @@ +--- +- name: Install rpminspect COPR repo + command: dnf -y copr enable dcantrel/rpminspect + become: true + +- name: Install system dependencies + yum: + name: "{{ koji_cmd }}, rpminspect, rpminspect-data-fedora" + state: latest + become: true + +- block: + - name: Discover package name from specfile name + shell: ls *.spec | sed 's/\.spec$//' + args: + chdir: "{{ ansible_user_dir }}/{{ zuul.project.src_dir }}" + register: get_package_name + + - set_fact: + package_name: "{{ get_package_name.stdout }}" + + - name: Get package last build on Koji + shell: "{{ koji_cmd }} latest-pkg --quiet rawhide {{ package_name }} | cut -d' ' -f1" + register: check_previous_build + + - set_fact: + previous_build: "{{ check_previous_build.stdout }}" + when: check_previous_build.stdout + + - name: Download latest build from Koji with rpminspect + command: rpminspect -v -f {{ previous_build }} + when: check_previous_build.stdout + + - set_fact: + previous_build_path: /var/tmp/rpminspect/{{ previous_build }} + when: check_previous_build.stdout + when: check_previous_build_enabled + +- name: Download built rpms artifacts and prepare rpminspect cache + include_tasks: setcache.yaml + loop: "{{ rpms }}" + +- set_fact: + previous_build_path: "{{ previous_build_path | default('') }}" + +- name: Create artifact directory + command: mkdir -p {{ zuul_output_dir }} + +- name: Run rpminspect + command: | + script --return --quiet -c + "rpminspect -o {{ zuul_output_dir }}/result.json -F json {{ previous_build_path }} /var/tmp/rpminspect/{{ nvr }}" + /dev/null \ No newline at end of file diff --git a/roles/rpminspect/tasks/setcache.yaml b/roles/rpminspect/tasks/setcache.yaml new file mode 100644 index 0000000..0431632 --- /dev/null +++ b/roles/rpminspect/tasks/setcache.yaml @@ -0,0 +1,25 @@ +--- +- name: Fetch rpm + get_url: + url: "{{ item }}" + dest: "/tmp/{{ item | basename }}" + validate_certs: "{{ validate_cert }}" + +- name: Discover rpm nvr + command: rpm -qp --qf %{name}-%{version}-%{release} /tmp/{{ item | basename }} + register: get_nvr + +- name: Discover rpm arch + command: rpm -qp --qf %{arch} /tmp/{{ item | basename }} + register: get_arch + +- set_fact: + nvr: "{{ get_nvr.stdout }}" + arch: "{{ get_arch.stdout }}" + +- command: mkdir -p /var/tmp/rpminspect/{{ nvr }}/{{ arch }} + +- name: Copy rpm in rpminspect cache + copy: + src: "/tmp/{{ item | basename }}" + dest: /var/tmp/rpminspect/{{ nvr }}/{{ arch }}/{{ item | basename }} \ No newline at end of file From db1d5cda25666197a560a007f58ee638afaefe91 Mon Sep 17 00:00:00 2001 From: Fabien Boucher Date: Sep 16 2019 11:57:51 +0000 Subject: [PATCH 2/11] Improve rpminspect role and add the job --- diff --git a/playbooks/fetch-output.yaml b/playbooks/fetch-output.yaml new file mode 100644 index 0000000..3da724b --- /dev/null +++ b/playbooks/fetch-output.yaml @@ -0,0 +1,5 @@ +--- +# Use the generic fetch-output role from zuul-jobs +- hosts: all + roles: + - fetch-output diff --git a/playbooks/rpm/rpminspect.yaml b/playbooks/rpm/rpminspect.yaml new file mode 100644 index 0000000..5cd4c52 --- /dev/null +++ b/playbooks/rpm/rpminspect.yaml @@ -0,0 +1,6 @@ +--- +- hosts: all + roles: + - repo-setup + - rpm-artifact-url + - rpminspect diff --git a/roles/rpm-artifact-url/tasks/main.yaml b/roles/rpm-artifact-url/tasks/main.yaml index 2ebb9cf..b3b67cc 100644 --- a/roles/rpm-artifact-url/tasks/main.yaml +++ b/roles/rpm-artifact-url/tasks/main.yaml @@ -24,6 +24,15 @@ - set_fact: rpms_str: "{% for result in packages_url.results %}{% if result.rc == 0 %}{{ result.stdout }} {% endif %}{% endfor %}" -- name: Set list of RPMs fact +- name: Set list of RPMs URL fact set_fact: rpms: "{{ rpms_str.split() }}" + +- name: Get srpm url + command: yumdownloader -q --source --url {{ rpms[-1] }} + register: package_srpm + failed_when: package_srpm.rc > 1 + +- name: Set srpm URL + set_fact: + srpm: "{{ package_srpm.stdout }}" diff --git a/roles/rpminspect/defaults/main.yaml b/roles/rpminspect/defaults/main.yaml index a02f6af..ee7f474 100644 --- a/roles/rpminspect/defaults/main.yaml +++ b/roles/rpminspect/defaults/main.yaml @@ -2,4 +2,4 @@ target: rawhide koji_cmd: koji check_previous_build_enabled: false -validate_cert: true \ No newline at end of file +validate_cert: false diff --git a/roles/rpminspect/tasks/main.yaml b/roles/rpminspect/tasks/main.yaml index ac07b4a..49eac57 100644 --- a/roles/rpminspect/tasks/main.yaml +++ b/roles/rpminspect/tasks/main.yaml @@ -5,7 +5,7 @@ - name: Install system dependencies yum: - name: "{{ koji_cmd }}, rpminspect, rpminspect-data-fedora" + name: "{{ koji_cmd }}, rpminspect, librpminspect, rpminspect-data-fedora" state: latest become: true @@ -43,11 +43,21 @@ - set_fact: previous_build_path: "{{ previous_build_path | default('') }}" +- command: mkdir -p /var/tmp/rpminspect/{{ baserpmname }}/src + +- name: Fetch srpm + get_url: + url: "{{ srpm }}" + dest: "/var/tmp/rpminspect/{{ baserpmname }}/src/" + validate_certs: "{{ validate_cert }}" + +- name: Show rpminspect cache tree + command: find {{ previous_build_path }} /var/tmp/rpminspect/{{ baserpmname }} + - name: Create artifact directory command: mkdir -p {{ zuul_output_dir }} - name: Run rpminspect command: | - script --return --quiet -c - "rpminspect -o {{ zuul_output_dir }}/result.json -F json {{ previous_build_path }} /var/tmp/rpminspect/{{ nvr }}" - /dev/null \ No newline at end of file + rpminspect -k -o {{ zuul_output_dir }}/result.json -F json + {{ previous_build_path }} /var/tmp/rpminspect/{{ baserpmname }} diff --git a/roles/rpminspect/tasks/setcache.yaml b/roles/rpminspect/tasks/setcache.yaml index 0431632..5da8d4e 100644 --- a/roles/rpminspect/tasks/setcache.yaml +++ b/roles/rpminspect/tasks/setcache.yaml @@ -5,21 +5,21 @@ dest: "/tmp/{{ item | basename }}" validate_certs: "{{ validate_cert }}" -- name: Discover rpm nvr - command: rpm -qp --qf %{name}-%{version}-%{release} /tmp/{{ item | basename }} - register: get_nvr +- name: Discover base directory name + shell: rpm -qp --qf %{sourcerpm} /tmp/{{ item | basename }} | sed 's/\.src\.rpm$//' + register: get_basename - name: Discover rpm arch command: rpm -qp --qf %{arch} /tmp/{{ item | basename }} register: get_arch - set_fact: - nvr: "{{ get_nvr.stdout }}" + baserpmname: "{{ get_basename.stdout }}" arch: "{{ get_arch.stdout }}" -- command: mkdir -p /var/tmp/rpminspect/{{ nvr }}/{{ arch }} +- command: mkdir -p /var/tmp/rpminspect/{{ baserpmname }}/{{ arch }} - name: Copy rpm in rpminspect cache copy: src: "/tmp/{{ item | basename }}" - dest: /var/tmp/rpminspect/{{ nvr }}/{{ arch }}/{{ item | basename }} \ No newline at end of file + dest: /var/tmp/rpminspect/{{ baserpmname }}/{{ arch }}/{{ item | basename }} diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml index bb684d3..31415c5 100644 --- a/zuul.d/jobs.yaml +++ b/zuul.d/jobs.yaml @@ -36,6 +36,13 @@ requires: repo run: playbooks/rpm/artifact-lint.yaml +- job: + name: rpminspect + description: | + Job to run rpminspct on rpms from a repo artifact + requires: repo + run: playbooks/rpm/rpminspect.yaml + post-run: playbooks/fetch-output.yaml ### legacy ### - job: From fe830bf1bb784c831c7c351ca0cb86944bd085b2 Mon Sep 17 00:00:00 2001 From: Fabien Boucher Date: Sep 16 2019 12:09:11 +0000 Subject: [PATCH 3/11] Remove trailing withspaces --- diff --git a/roles/rpminspect/tasks/main.yaml b/roles/rpminspect/tasks/main.yaml index 49eac57..0cd8915 100644 --- a/roles/rpminspect/tasks/main.yaml +++ b/roles/rpminspect/tasks/main.yaml @@ -15,24 +15,24 @@ args: chdir: "{{ ansible_user_dir }}/{{ zuul.project.src_dir }}" register: get_package_name - + - set_fact: package_name: "{{ get_package_name.stdout }}" - + - name: Get package last build on Koji shell: "{{ koji_cmd }} latest-pkg --quiet rawhide {{ package_name }} | cut -d' ' -f1" register: check_previous_build - + - set_fact: previous_build: "{{ check_previous_build.stdout }}" when: check_previous_build.stdout - + - name: Download latest build from Koji with rpminspect command: rpminspect -v -f {{ previous_build }} when: check_previous_build.stdout - set_fact: - previous_build_path: /var/tmp/rpminspect/{{ previous_build }} + previous_build_path: /var/tmp/rpminspect/{{ previous_build }} when: check_previous_build.stdout when: check_previous_build_enabled From de8fe393225af757d71b1703de7f1a5d8ab29196 Mon Sep 17 00:00:00 2001 From: Fabien Boucher Date: Sep 16 2019 13:36:21 +0000 Subject: [PATCH 4/11] Fix copy w/o remote_src --- diff --git a/roles/rpminspect/tasks/main.yaml b/roles/rpminspect/tasks/main.yaml index 0cd8915..7632337 100644 --- a/roles/rpminspect/tasks/main.yaml +++ b/roles/rpminspect/tasks/main.yaml @@ -1,4 +1,7 @@ --- +- name: Create artifact directory + command: mkdir -p {{ zuul_output_dir }} + - name: Install rpminspect COPR repo command: dnf -y copr enable dcantrel/rpminspect become: true @@ -54,9 +57,6 @@ - name: Show rpminspect cache tree command: find {{ previous_build_path }} /var/tmp/rpminspect/{{ baserpmname }} -- name: Create artifact directory - command: mkdir -p {{ zuul_output_dir }} - - name: Run rpminspect command: | rpminspect -k -o {{ zuul_output_dir }}/result.json -F json diff --git a/roles/rpminspect/tasks/setcache.yaml b/roles/rpminspect/tasks/setcache.yaml index 5da8d4e..1a75377 100644 --- a/roles/rpminspect/tasks/setcache.yaml +++ b/roles/rpminspect/tasks/setcache.yaml @@ -23,3 +23,4 @@ copy: src: "/tmp/{{ item | basename }}" dest: /var/tmp/rpminspect/{{ baserpmname }}/{{ arch }}/{{ item | basename }} + remote_src: true From af475c6e05ac116146bf4e34bba5e3707f4ca4c4 Mon Sep 17 00:00:00 2001 From: Fabien Boucher Date: Sep 16 2019 13:56:34 +0000 Subject: [PATCH 5/11] Add zuul_output_dir missing var --- diff --git a/roles/rpminspect/defaults/main.yaml b/roles/rpminspect/defaults/main.yaml index ee7f474..6490ae5 100644 --- a/roles/rpminspect/defaults/main.yaml +++ b/roles/rpminspect/defaults/main.yaml @@ -1,5 +1,6 @@ --- target: rawhide koji_cmd: koji +zuul_output_dir: "{{ ansible_user_dir }}/zuul-output/artifacts" check_previous_build_enabled: false validate_cert: false From 7b1b4b840d50418ddc251af04e1cb643b746ba36 Mon Sep 17 00:00:00 2001 From: Fabien Boucher Date: Sep 16 2019 15:12:18 +0000 Subject: [PATCH 6/11] Fix fetch-output want logs/artifacts/docs --- diff --git a/roles/rpminspect/defaults/main.yaml b/roles/rpminspect/defaults/main.yaml index 6490ae5..b36f677 100644 --- a/roles/rpminspect/defaults/main.yaml +++ b/roles/rpminspect/defaults/main.yaml @@ -1,6 +1,6 @@ --- target: rawhide koji_cmd: koji -zuul_output_dir: "{{ ansible_user_dir }}/zuul-output/artifacts" +zuul_output_dir: "{{ ansible_user_dir }}/zuul-output" check_previous_build_enabled: false validate_cert: false diff --git a/roles/rpminspect/tasks/main.yaml b/roles/rpminspect/tasks/main.yaml index 7632337..80538d4 100644 --- a/roles/rpminspect/tasks/main.yaml +++ b/roles/rpminspect/tasks/main.yaml @@ -1,6 +1,10 @@ --- - name: Create artifact directory - command: mkdir -p {{ zuul_output_dir }} + command: mkdir -p {{ zuul_output_dir }}/{{ item }} + loop: + - logs + - artifacts + - docs - name: Install rpminspect COPR repo command: dnf -y copr enable dcantrel/rpminspect @@ -59,5 +63,5 @@ - name: Run rpminspect command: | - rpminspect -k -o {{ zuul_output_dir }}/result.json -F json + rpminspect -k -o {{ zuul_output_dir }}/artifacts/result.json -F json {{ previous_build_path }} /var/tmp/rpminspect/{{ baserpmname }} From 231a3e9cb6fcd400edf4af2235870f46283ff470 Mon Sep 17 00:00:00 2001 From: Fabien Boucher Date: Sep 16 2019 15:37:44 +0000 Subject: [PATCH 7/11] Use ensure-output-dirs --- diff --git a/playbooks/ensure-output-dirs.yaml b/playbooks/ensure-output-dirs.yaml new file mode 100644 index 0000000..b7925d9 --- /dev/null +++ b/playbooks/ensure-output-dirs.yaml @@ -0,0 +1,5 @@ +--- +# Use the generic ensure-output-dirs role from zuul-jobs +- hosts: all + roles: + - ensure-output-dirs diff --git a/roles/rpminspect/tasks/main.yaml b/roles/rpminspect/tasks/main.yaml index 80538d4..253f372 100644 --- a/roles/rpminspect/tasks/main.yaml +++ b/roles/rpminspect/tasks/main.yaml @@ -1,11 +1,4 @@ --- -- name: Create artifact directory - command: mkdir -p {{ zuul_output_dir }}/{{ item }} - loop: - - logs - - artifacts - - docs - - name: Install rpminspect COPR repo command: dnf -y copr enable dcantrel/rpminspect become: true @@ -63,5 +56,5 @@ - name: Run rpminspect command: | - rpminspect -k -o {{ zuul_output_dir }}/artifacts/result.json -F json + rpminspect -k -o {{ zuul_output_dir }}/logs/result.json -F json {{ previous_build_path }} /var/tmp/rpminspect/{{ baserpmname }} diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml index 31415c5..cf2e59d 100644 --- a/zuul.d/jobs.yaml +++ b/zuul.d/jobs.yaml @@ -41,6 +41,7 @@ description: | Job to run rpminspct on rpms from a repo artifact requires: repo + pre-run: playbooks/ensure-output-dirs.yaml run: playbooks/rpm/rpminspect.yaml post-run: playbooks/fetch-output.yaml From 37fdad69f17f3b91146f46c13c79d76b11d74335 Mon Sep 17 00:00:00 2001 From: Fabien Boucher Date: Sep 16 2019 16:10:59 +0000 Subject: [PATCH 8/11] Re-enable validate_cert --- diff --git a/roles/rpminspect/defaults/main.yaml b/roles/rpminspect/defaults/main.yaml index b36f677..e84b052 100644 --- a/roles/rpminspect/defaults/main.yaml +++ b/roles/rpminspect/defaults/main.yaml @@ -3,4 +3,4 @@ target: rawhide koji_cmd: koji zuul_output_dir: "{{ ansible_user_dir }}/zuul-output" check_previous_build_enabled: false -validate_cert: false +validate_cert: true From d0a0a9dcfd318df715831bcc48aaf7bdd8f5f1da Mon Sep 17 00:00:00 2001 From: Fabien Boucher Date: Sep 17 2019 14:38:03 +0000 Subject: [PATCH 9/11] rpminspect - Add and activate report-json2html --- diff --git a/roles/rpminspect/files/report-json2html.py b/roles/rpminspect/files/report-json2html.py new file mode 100644 index 0000000..b11bcaf --- /dev/null +++ b/roles/rpminspect/files/report-json2html.py @@ -0,0 +1,86 @@ +#!/bin/env python3 + +import os +import sys +import json +from jinja2 import Template + +JINJA_TEMPLATE = """ + + + + + + + + + + rpminspect report + + +
+
+

rpminspect report

+
+
+ +
+ {% for check_type, data_list in data.items() %} +
+

{{ check_type }}

+
+
+ {% for result_item in data_list %} +
+
    + {% if result_item.result == 'OK' %} +
  • + {% endif %} + {% if result_item.result == 'INFO' %} +
  • + {% endif %} + {% if result_item.result == 'VERIFY' %} +
  • + {% endif %} + {% if result_item.result == 'BAD' %} +
  • + {% endif %} +

    {{ result_item.result }}

    + {% if 'message' in result_item %}

    Message: {{ result_item.message }}

    {% endif %} + {% if 'waiver authorization' in result_item %}

    Waiver: {{ result_item['waiver authorization'] }}

    {% endif %} + {% if 'remedy' in result_item %}

    Remedy: {{ result_item.remedy }}

    {% endif %} +
  • +
+
+ {% endfor %} +
+ {% endfor %} +
+ + +""" + + +def load_jinja_template(): + return Template(JINJA_TEMPLATE) + + +def load_json_report(path): + with open(path) as fd: + data = json.load(fd) + return data + + +if __name__ == '__main__': + if len(sys.argv) < 2: + print("Error: provide the rpminspect json report path") + sys.exit(1) + template = load_jinja_template() + data = load_json_report(os.path.expanduser(sys.argv[1])) + html_report = template.render(data=data) + open("report.html", 'w').write(html_report) + print("Wrote report.html.") diff --git a/roles/rpminspect/tasks/main.yaml b/roles/rpminspect/tasks/main.yaml index 253f372..c432c03 100644 --- a/roles/rpminspect/tasks/main.yaml +++ b/roles/rpminspect/tasks/main.yaml @@ -58,3 +58,13 @@ command: | rpminspect -k -o {{ zuul_output_dir }}/logs/result.json -F json {{ previous_build_path }} /var/tmp/rpminspect/{{ baserpmname }} + +- copy: + src: files/report-json2html.py + dest: "{{ ansible_user_dir }}/report-json2html.py" + mode: '0755' + +- name: Create HTML report + command: "{{ ansible_user_dir }}/report-json2html.py result.json" + args: + chdir: "{{ zuul_output_dir }}/logs" From aeb32bf109c39df778bb37fdf19f5d405cf4aa2b Mon Sep 17 00:00:00 2001 From: Fabien Boucher Date: Sep 17 2019 15:29:06 +0000 Subject: [PATCH 10/11] Add rpminspect-html-report role --- diff --git a/playbooks/rpm/rpminspect-json2html.yaml b/playbooks/rpm/rpminspect-json2html.yaml new file mode 100644 index 0000000..ae353d8 --- /dev/null +++ b/playbooks/rpm/rpminspect-json2html.yaml @@ -0,0 +1,4 @@ +--- +- hosts: all + roles: + - rpminspect-html-report diff --git a/roles/rpminspect-html-report/defaults/main.yaml b/roles/rpminspect-html-report/defaults/main.yaml new file mode 100644 index 0000000..e71fb75 --- /dev/null +++ b/roles/rpminspect-html-report/defaults/main.yaml @@ -0,0 +1,2 @@ +--- +zuul_output_dir: "{{ ansible_user_dir }}/zuul-output" diff --git a/roles/rpminspect-html-report/files/report-json2html.py b/roles/rpminspect-html-report/files/report-json2html.py new file mode 100644 index 0000000..b11bcaf --- /dev/null +++ b/roles/rpminspect-html-report/files/report-json2html.py @@ -0,0 +1,86 @@ +#!/bin/env python3 + +import os +import sys +import json +from jinja2 import Template + +JINJA_TEMPLATE = """ + + + + + + + + + + rpminspect report + + +
+
+

rpminspect report

+
+
+ +
+ {% for check_type, data_list in data.items() %} +
+

{{ check_type }}

+
+
+ {% for result_item in data_list %} +
+
    + {% if result_item.result == 'OK' %} +
  • + {% endif %} + {% if result_item.result == 'INFO' %} +
  • + {% endif %} + {% if result_item.result == 'VERIFY' %} +
  • + {% endif %} + {% if result_item.result == 'BAD' %} +
  • + {% endif %} +

    {{ result_item.result }}

    + {% if 'message' in result_item %}

    Message: {{ result_item.message }}

    {% endif %} + {% if 'waiver authorization' in result_item %}

    Waiver: {{ result_item['waiver authorization'] }}

    {% endif %} + {% if 'remedy' in result_item %}

    Remedy: {{ result_item.remedy }}

    {% endif %} +
  • +
+
+ {% endfor %} +
+ {% endfor %} +
+ + +""" + + +def load_jinja_template(): + return Template(JINJA_TEMPLATE) + + +def load_json_report(path): + with open(path) as fd: + data = json.load(fd) + return data + + +if __name__ == '__main__': + if len(sys.argv) < 2: + print("Error: provide the rpminspect json report path") + sys.exit(1) + template = load_jinja_template() + data = load_json_report(os.path.expanduser(sys.argv[1])) + html_report = template.render(data=data) + open("report.html", 'w').write(html_report) + print("Wrote report.html.") diff --git a/roles/rpminspect-html-report/tasks/main.yaml b/roles/rpminspect-html-report/tasks/main.yaml new file mode 100644 index 0000000..5276f00 --- /dev/null +++ b/roles/rpminspect-html-report/tasks/main.yaml @@ -0,0 +1,10 @@ +--- +- copy: + src: files/report-json2html.py + dest: "{{ ansible_user_dir }}/report-json2html.py" + mode: '0755' + +- name: Create HTML report + command: "{{ ansible_user_dir }}/report-json2html.py result.json" + args: + chdir: "{{ zuul_output_dir }}/logs" diff --git a/roles/rpminspect/files/report-json2html.py b/roles/rpminspect/files/report-json2html.py deleted file mode 100644 index b11bcaf..0000000 --- a/roles/rpminspect/files/report-json2html.py +++ /dev/null @@ -1,86 +0,0 @@ -#!/bin/env python3 - -import os -import sys -import json -from jinja2 import Template - -JINJA_TEMPLATE = """ - - - - - - - - - - rpminspect report - - -
-
-

rpminspect report

-
-
- -
- {% for check_type, data_list in data.items() %} -
-

{{ check_type }}

-
-
- {% for result_item in data_list %} -
-
    - {% if result_item.result == 'OK' %} -
  • - {% endif %} - {% if result_item.result == 'INFO' %} -
  • - {% endif %} - {% if result_item.result == 'VERIFY' %} -
  • - {% endif %} - {% if result_item.result == 'BAD' %} -
  • - {% endif %} -

    {{ result_item.result }}

    - {% if 'message' in result_item %}

    Message: {{ result_item.message }}

    {% endif %} - {% if 'waiver authorization' in result_item %}

    Waiver: {{ result_item['waiver authorization'] }}

    {% endif %} - {% if 'remedy' in result_item %}

    Remedy: {{ result_item.remedy }}

    {% endif %} -
  • -
-
- {% endfor %} -
- {% endfor %} -
- - -""" - - -def load_jinja_template(): - return Template(JINJA_TEMPLATE) - - -def load_json_report(path): - with open(path) as fd: - data = json.load(fd) - return data - - -if __name__ == '__main__': - if len(sys.argv) < 2: - print("Error: provide the rpminspect json report path") - sys.exit(1) - template = load_jinja_template() - data = load_json_report(os.path.expanduser(sys.argv[1])) - html_report = template.render(data=data) - open("report.html", 'w').write(html_report) - print("Wrote report.html.") diff --git a/roles/rpminspect/tasks/main.yaml b/roles/rpminspect/tasks/main.yaml index c432c03..253f372 100644 --- a/roles/rpminspect/tasks/main.yaml +++ b/roles/rpminspect/tasks/main.yaml @@ -58,13 +58,3 @@ command: | rpminspect -k -o {{ zuul_output_dir }}/logs/result.json -F json {{ previous_build_path }} /var/tmp/rpminspect/{{ baserpmname }} - -- copy: - src: files/report-json2html.py - dest: "{{ ansible_user_dir }}/report-json2html.py" - mode: '0755' - -- name: Create HTML report - command: "{{ ansible_user_dir }}/report-json2html.py result.json" - args: - chdir: "{{ zuul_output_dir }}/logs" diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml index cf2e59d..30e569d 100644 --- a/zuul.d/jobs.yaml +++ b/zuul.d/jobs.yaml @@ -43,7 +43,9 @@ requires: repo pre-run: playbooks/ensure-output-dirs.yaml run: playbooks/rpm/rpminspect.yaml - post-run: playbooks/fetch-output.yaml + post-run: + - playbooks/rpm/rpminspect-json2html.yaml + - playbooks/fetch-output.yaml ### legacy ### - job: From 6cd38d1fd331781ed1d6b85837cccef543c219c7 Mon Sep 17 00:00:00 2001 From: Fabien Boucher Date: Sep 18 2019 08:50:37 +0000 Subject: [PATCH 11/11] Change report name to rpminspect.html --- diff --git a/roles/rpminspect-html-report/files/report-json2html.py b/roles/rpminspect-html-report/files/report-json2html.py index b11bcaf..88b5068 100644 --- a/roles/rpminspect-html-report/files/report-json2html.py +++ b/roles/rpminspect-html-report/files/report-json2html.py @@ -82,5 +82,5 @@ if __name__ == '__main__': template = load_jinja_template() data = load_json_report(os.path.expanduser(sys.argv[1])) html_report = template.render(data=data) - open("report.html", 'w').write(html_report) - print("Wrote report.html.") + open("rpminspect.html", 'w').write(html_report) + print("Wrote rpminspect.html.")