From 099864692060c59be057c6352c0408b325c511fe Mon Sep 17 00:00:00 2001 From: Holger Levsen Date: Wed, 9 Sep 2015 15:38:34 +0200 Subject: reproducible: rename breakages to html_breakages for consistancy --- bin/reproducible_breakages.py | 310 ------------------------------------- bin/reproducible_html_breakages.py | 310 +++++++++++++++++++++++++++++++++++++ job-cfg/reproducible.yaml | 20 +-- 3 files changed, 320 insertions(+), 320 deletions(-) delete mode 100755 bin/reproducible_breakages.py create mode 100755 bin/reproducible_html_breakages.py diff --git a/bin/reproducible_breakages.py b/bin/reproducible_breakages.py deleted file mode 100755 index 4cbfa70b..00000000 --- a/bin/reproducible_breakages.py +++ /dev/null @@ -1,310 +0,0 @@ -#!/usr/bin/python3 -# -*- coding: utf-8 -*- -# -# Copyright © 2015 Mattia Rizzolo -# Licensed under GPL-2 -# -# Depends: python3 -# -# Build a page full of CI issues to investigate - -from reproducible_common import * - - -def unrep_with_dbd_issues(): - log.info('running unrep_with_dbd_issues check...') - without_dbd = [] - bad_dbd = [] - query = '''SELECT s.name, r.version, s.suite, s.architecture - FROM sources AS s JOIN results AS r ON r.package_id=s.id - WHERE r.status="unreproducible" - ORDER BY s.name ASC, s.suite DESC''' - results = query_db(query) - for pkg, version, suite, arch in results: - eversion = strip_epoch(version) - dbd = DBD_PATH + '/' + suite + '/' + arch + '/' + pkg + '_' + \ - eversion + '.debbindiff.html' - if not os.access(dbd, os.R_OK): - without_dbd.append((pkg, version, suite, arch)) - log.warning(pkg + '/' + suite + ' (' + version + ') is ' - 'unreproducible without diffoscope file.') - else: - log.debug(dbd + ' found.') - data = open(dbd, 'br').read(3) - if b'<' not in data: - bad_dbd.append((pkg, version, suite, arch)) - log.warning(pkg + '/' + suite + ' (' + version + ') has ' - 'diffoscope output, but it does not seem to ' - 'be an html page.') - return without_dbd, bad_dbd - - -def not_unrep_with_dbd_file(): - log.info('running not_unrep_with_dbd_file check...') - bad_pkgs = [] - query = '''SELECT s.name, r.version, s.suite, s.architecture - FROM sources AS s JOIN results AS r ON r.package_id=s.id - WHERE r.status != "unreproducible" - ORDER BY s.name ASC, s.suite DESC''' - results = query_db(query) - for pkg, version, suite, arch in results: - eversion = strip_epoch(version) - dbd = DBD_PATH + '/' + suite + '/' + arch + '/' + pkg + '_' + \ - eversion + '.debbindiff.html' - if os.access(dbd, os.R_OK): - bad_pkgs.append((pkg, version, suite, arch)) - log.warning(pkg + '/' + suite + ' (' + version + ') has a ' - 'diffoscope file but it\'s not unreproducible.') - return bad_pkgs - - -def lack_rbuild(): - log.info('running lack_rbuild check...') - bad_pkgs = [] - query = '''SELECT s.name, r.version, s.suite, s.architecture - FROM sources AS s JOIN results AS r ON r.package_id=s.id - WHERE r.status NOT IN ("blacklisted", "") - ORDER BY s.name ASC, s.suite DESC''' - results = query_db(query) - for pkg, version, suite, arch in results: - if not pkg_has_rbuild(pkg, version, suite, arch): - bad_pkgs.append((pkg, version, suite, arch)) - log.warning(pkg + '/' + suite + ' (' + version + ') has been ' - 'built, but a buildlog is missing.') - return bad_pkgs - - -def lack_buildinfo(): - log.info('running lack_buildinfo check...') - bad_pkgs = [] - query = '''SELECT s.name, r.version, s.suite, s.architecture - FROM sources AS s JOIN results AS r ON r.package_id=s.id - WHERE r.status NOT IN - ("blacklisted", "not for us", "FTBFS", "depwait", "404", "") - ORDER BY s.name ASC, s.suite DESC''' - results = query_db(query) - for pkg, version, suite, arch in results: - eversion = strip_epoch(version) - buildinfo = BUILDINFO_PATH + '/' + suite + '/' + arch + '/' + pkg + \ - '_' + eversion + '_' + arch + '.buildinfo' - if not os.access(buildinfo, os.R_OK): - bad_pkgs.append((pkg, version, suite, arch)) - log.warning(pkg + '/' + suite + ' (' + version + ') has been ' - 'successfully built, but a .buildinfo is missing') - return bad_pkgs - - -def pbuilder_dep_fail(): - log.info('running pbuilder_dep_fail check...') - bad_pkgs = [] - # we only care about these failures in the testing suite as they happen - # all the time in other suites, as packages are buggy - # and specific versions also come and go - query = '''SELECT s.name, r.version, s.suite, s.architecture - FROM sources AS s JOIN results AS r ON r.package_id=s.id - WHERE r.status = "FTBFS" AND s.suite = "testing" - ORDER BY s.name ASC, s.suite DESC''' - results = query_db(query) - for pkg, version, suite, arch in results: - eversion = strip_epoch(version) - rbuild = RBUILD_PATH + '/' + suite + '/' + arch + '/' + pkg + '_' + \ - eversion + '.rbuild.log' - if os.access(rbuild, os.R_OK): - log.debug('\tlooking at ' + rbuild) - with open(rbuild, "br") as fd: - for line in fd: - if re.search(b'E: pbuilder-satisfydepends failed.', line): - bad_pkgs.append((pkg, version, suite, arch)) - log.warning(pkg + '/' + suite + ' (' + version + - ') failed to met its dependencies.') - return bad_pkgs - - -def alien_log(directory=None): - if directory is None: - bad_files = [] - for path in RBUILD_PATH, LOGS_PATH, DIFFS_PATH: - bad_files.extend(alien_log(path)) - return bad_files - log.info('running alien_log check over ' + directory + '...') - query = '''SELECT s.name - FROM sources AS s JOIN results AS r ON r.package_id=s.id - WHERE r.status != "" AND s.name="{pkg}" AND s.suite="{suite}" - AND s.architecture="{arch}" - ORDER BY s.name ASC, s.suite DESC''' - bad_files = [] - for root, dirs, files in os.walk(directory): - if not files: - continue - suite, arch = root.rsplit('/', 2)[1:] - for file in files: - try: - pkg, version = file.rsplit('.', 2)[0].rsplit('_', 1) - except ValueError: - log.critical(bcolors.FAIL + '/'.join([root, file]) + - ' does not seem to be a file that should be there' - + bcolors.ENDC) - continue - if not query_db(query.format(pkg=pkg, suite=suite, arch=arch)): - bad_files.append('/'.join([root, file])) - log.warning('/'.join([root, file]) + ' should not be there') - return bad_files - - -def alien_buildinfo(): - log.info('running alien_log check...') - query = '''SELECT s.name - FROM sources AS s JOIN results AS r ON r.package_id=s.id - WHERE r.status != "" AND s.name="{pkg}" AND s.suite="{suite}" - AND s.architecture="{arch}" - AND r.status IN ("reproducible", "unreproducible") - ORDER BY s.name ASC, s.suite DESC''' - bad_files = [] - for root, dirs, files in os.walk(BUILDINFO_PATH): - if not files: - continue - suite, arch = root.rsplit('/', 2)[1:] - for file in files: - try: - pkg, version = file.rsplit('.', 1)[0].split('_')[:2] - except ValueError: - log.critical(bcolors.FAIL + '/'.join([root, file]) + - ' does not seem to be a file that should be there' - + bcolors.ENDC) - continue - if not query_db(query.format(pkg=pkg, suite=suite, arch=arch)): - bad_files.append('/'.join([root, file])) - log.warning('/'.join([root, file]) + ' should not be there') - return bad_files - - -def alien_dbd(directory=None): - if directory is None: - bad_files = [] - for path in DBD_PATH, DBDTXT_PATH: - bad_files.extend(alien_log(path)) - return bad_files - log.info('running alien_dbd check...') - query = '''SELECT r.status - FROM sources AS s JOIN results AS r on r.package_id=s.id - WHERE s.name="{pkg}" AND s.suite="{suite}" - AND s.architecture="{arch}" - ORDER BY s.name ASC, s.suite DESC''' - bad_files = [] - for root, dirs, files in os.walk(directory): - if not files: - continue - suite, arch = root.rsplit('/', 2)[1:] - for file in files: - try: - pkg, version = file.rsplit('.', 2)[0].rsplit('_', 1) - except ValueError: - log.critical(bcolors.FAIL + '/'.join([root, file]) + - ' does not seem to be a file that should be there' - + bcolors.ENDC) - result = query_db(query.format(pkg=pkg, suite=suite, arch=arch)) - try: - if result[0][0] != 'unreproducible': - bad_files.append('/'.join([root, file]) + ' (' + - str(result[0][0]) + ' package)') - log.warning('/'.join([root, file]) + ' should not be ' - 'there (' + str(result[0][0]) + ' package)') - except IndexError: - bad_files.append('/'.join([root, file]) + ' (' + - 'missing package)') - log.warning(bcolors.WARN + '/'.join([root, file]) + ' should ' - 'not be there (missing package)' + bcolors.ENDC) - return bad_files - - -def alien_rbpkg(): - log.info('running alien_rbpkg check...') - query = '''SELECT s.name - FROM sources AS s - WHERE s.name="{pkg}" AND s.suite="{suite}" - AND s.architecture="{arch}" - ORDER BY s.name ASC, s.suite DESC''' - bad_files = [] - for root, dirs, files in os.walk(RB_PKG_PATH): - if not files: - continue - suite, arch = root.rsplit('/', 2)[1:] - for file in files: - pkg = file.rsplit('.', 1)[0] - if not query_db(query.format(pkg=pkg, suite=suite, arch=arch)): - bad_files.append('/'.join([root, file])) - log.warning('/'.join([root, file]) + ' should not be there') - return bad_files - - -def _gen_section(header, pkgs, entries=None): - if not pkgs and not entries: - return '' - if pkgs: - html = '

' + str(len(pkgs)) + ' ' - html += header - html += '

\n'
-        for pkg in pkgs:
-            html += tab + link_package(pkg[0], pkg[2], pkg[3]).strip()
-            html += ' (' + pkg[1] + ' in ' + pkg[2] + '/' + pkg[3] + ')\n'
-    elif entries:
-        html = '

' + str(len(entries)) + ' ' - html += header - html += '

\n'
-        for entry in entries:
-            html += tab + entry + '\n'
-    html += '

\n' - return html - - -def gen_html(): - html = '' - # files that should not be there (e.g. removed package without cleanup) - html += _gen_section('log files that should not be there', None, - entries=alien_log()) - html += _gen_section('diffoscope files that should not be there:', None, - entries=alien_dbd()) - html += _gen_section('rb-pkg pages that should not be there:', None, - entries=alien_rbpkg()) - html += _gen_section('buildinfo files that should not be there:', None, - entries=alien_buildinfo()) - # diffoscope report where it shouldn't be - html += _gen_section('are not marked as unreproducible, but they ' + - 'have a diffoscope file:', not_unrep_with_dbd_file()) - # missing files - html += _gen_section('are built but don\'t have a buildlog:', - lack_rbuild()) - html += _gen_section('are built but don\'t have a .buildinfo file:', - lack_buildinfo()) - # diffoscope troubles - without_dbd, bad_dbd = unrep_with_dbd_issues() - html += _gen_section('are marked as unreproducible, but without ' + - 'diffoscope output - so probably diffoscope ' + - 'crashed:', without_dbd) - html += _gen_section('are marked as unreproducible, but their ' + - 'diffoscope output does not seem to be an html ' + - 'file - so probably diffoscope ran into a ' + - 'timeout:', bad_dbd) - # pbuilder-satisfydepends failed - html += _gen_section('failed to match their build-dependencies:', - pbuilder_dep_fail()) - return html - - -if __name__ == '__main__': - bugs = get_bugs() - html = '

This page lists unexpected things a human should look at and ' - html += 'fix, like packages with an incoherent status or files that ' - html += 'should not be there. ' - html += 'Please help making this page empty!

\n' - breakages = gen_html() - if breakages: - html += breakages - else: - html += '

COOL!!! Everything is GOOD and not a issue was ' - html += 'detected. Enjoy!

' - title = 'Breakages on reproducible.debian.net' - destfile = BASE + '/index_breakages.html' - desturl = REPRODUCIBLE_URL + '/index_breakages.html' - write_html_page(title, html, destfile, style_note=True) - log.info('Breackages page created at ' + desturl) diff --git a/bin/reproducible_html_breakages.py b/bin/reproducible_html_breakages.py new file mode 100755 index 00000000..4cbfa70b --- /dev/null +++ b/bin/reproducible_html_breakages.py @@ -0,0 +1,310 @@ +#!/usr/bin/python3 +# -*- coding: utf-8 -*- +# +# Copyright © 2015 Mattia Rizzolo +# Licensed under GPL-2 +# +# Depends: python3 +# +# Build a page full of CI issues to investigate + +from reproducible_common import * + + +def unrep_with_dbd_issues(): + log.info('running unrep_with_dbd_issues check...') + without_dbd = [] + bad_dbd = [] + query = '''SELECT s.name, r.version, s.suite, s.architecture + FROM sources AS s JOIN results AS r ON r.package_id=s.id + WHERE r.status="unreproducible" + ORDER BY s.name ASC, s.suite DESC''' + results = query_db(query) + for pkg, version, suite, arch in results: + eversion = strip_epoch(version) + dbd = DBD_PATH + '/' + suite + '/' + arch + '/' + pkg + '_' + \ + eversion + '.debbindiff.html' + if not os.access(dbd, os.R_OK): + without_dbd.append((pkg, version, suite, arch)) + log.warning(pkg + '/' + suite + ' (' + version + ') is ' + 'unreproducible without diffoscope file.') + else: + log.debug(dbd + ' found.') + data = open(dbd, 'br').read(3) + if b'<' not in data: + bad_dbd.append((pkg, version, suite, arch)) + log.warning(pkg + '/' + suite + ' (' + version + ') has ' + 'diffoscope output, but it does not seem to ' + 'be an html page.') + return without_dbd, bad_dbd + + +def not_unrep_with_dbd_file(): + log.info('running not_unrep_with_dbd_file check...') + bad_pkgs = [] + query = '''SELECT s.name, r.version, s.suite, s.architecture + FROM sources AS s JOIN results AS r ON r.package_id=s.id + WHERE r.status != "unreproducible" + ORDER BY s.name ASC, s.suite DESC''' + results = query_db(query) + for pkg, version, suite, arch in results: + eversion = strip_epoch(version) + dbd = DBD_PATH + '/' + suite + '/' + arch + '/' + pkg + '_' + \ + eversion + '.debbindiff.html' + if os.access(dbd, os.R_OK): + bad_pkgs.append((pkg, version, suite, arch)) + log.warning(pkg + '/' + suite + ' (' + version + ') has a ' + 'diffoscope file but it\'s not unreproducible.') + return bad_pkgs + + +def lack_rbuild(): + log.info('running lack_rbuild check...') + bad_pkgs = [] + query = '''SELECT s.name, r.version, s.suite, s.architecture + FROM sources AS s JOIN results AS r ON r.package_id=s.id + WHERE r.status NOT IN ("blacklisted", "") + ORDER BY s.name ASC, s.suite DESC''' + results = query_db(query) + for pkg, version, suite, arch in results: + if not pkg_has_rbuild(pkg, version, suite, arch): + bad_pkgs.append((pkg, version, suite, arch)) + log.warning(pkg + '/' + suite + ' (' + version + ') has been ' + 'built, but a buildlog is missing.') + return bad_pkgs + + +def lack_buildinfo(): + log.info('running lack_buildinfo check...') + bad_pkgs = [] + query = '''SELECT s.name, r.version, s.suite, s.architecture + FROM sources AS s JOIN results AS r ON r.package_id=s.id + WHERE r.status NOT IN + ("blacklisted", "not for us", "FTBFS", "depwait", "404", "") + ORDER BY s.name ASC, s.suite DESC''' + results = query_db(query) + for pkg, version, suite, arch in results: + eversion = strip_epoch(version) + buildinfo = BUILDINFO_PATH + '/' + suite + '/' + arch + '/' + pkg + \ + '_' + eversion + '_' + arch + '.buildinfo' + if not os.access(buildinfo, os.R_OK): + bad_pkgs.append((pkg, version, suite, arch)) + log.warning(pkg + '/' + suite + ' (' + version + ') has been ' + 'successfully built, but a .buildinfo is missing') + return bad_pkgs + + +def pbuilder_dep_fail(): + log.info('running pbuilder_dep_fail check...') + bad_pkgs = [] + # we only care about these failures in the testing suite as they happen + # all the time in other suites, as packages are buggy + # and specific versions also come and go + query = '''SELECT s.name, r.version, s.suite, s.architecture + FROM sources AS s JOIN results AS r ON r.package_id=s.id + WHERE r.status = "FTBFS" AND s.suite = "testing" + ORDER BY s.name ASC, s.suite DESC''' + results = query_db(query) + for pkg, version, suite, arch in results: + eversion = strip_epoch(version) + rbuild = RBUILD_PATH + '/' + suite + '/' + arch + '/' + pkg + '_' + \ + eversion + '.rbuild.log' + if os.access(rbuild, os.R_OK): + log.debug('\tlooking at ' + rbuild) + with open(rbuild, "br") as fd: + for line in fd: + if re.search(b'E: pbuilder-satisfydepends failed.', line): + bad_pkgs.append((pkg, version, suite, arch)) + log.warning(pkg + '/' + suite + ' (' + version + + ') failed to met its dependencies.') + return bad_pkgs + + +def alien_log(directory=None): + if directory is None: + bad_files = [] + for path in RBUILD_PATH, LOGS_PATH, DIFFS_PATH: + bad_files.extend(alien_log(path)) + return bad_files + log.info('running alien_log check over ' + directory + '...') + query = '''SELECT s.name + FROM sources AS s JOIN results AS r ON r.package_id=s.id + WHERE r.status != "" AND s.name="{pkg}" AND s.suite="{suite}" + AND s.architecture="{arch}" + ORDER BY s.name ASC, s.suite DESC''' + bad_files = [] + for root, dirs, files in os.walk(directory): + if not files: + continue + suite, arch = root.rsplit('/', 2)[1:] + for file in files: + try: + pkg, version = file.rsplit('.', 2)[0].rsplit('_', 1) + except ValueError: + log.critical(bcolors.FAIL + '/'.join([root, file]) + + ' does not seem to be a file that should be there' + + bcolors.ENDC) + continue + if not query_db(query.format(pkg=pkg, suite=suite, arch=arch)): + bad_files.append('/'.join([root, file])) + log.warning('/'.join([root, file]) + ' should not be there') + return bad_files + + +def alien_buildinfo(): + log.info('running alien_log check...') + query = '''SELECT s.name + FROM sources AS s JOIN results AS r ON r.package_id=s.id + WHERE r.status != "" AND s.name="{pkg}" AND s.suite="{suite}" + AND s.architecture="{arch}" + AND r.status IN ("reproducible", "unreproducible") + ORDER BY s.name ASC, s.suite DESC''' + bad_files = [] + for root, dirs, files in os.walk(BUILDINFO_PATH): + if not files: + continue + suite, arch = root.rsplit('/', 2)[1:] + for file in files: + try: + pkg, version = file.rsplit('.', 1)[0].split('_')[:2] + except ValueError: + log.critical(bcolors.FAIL + '/'.join([root, file]) + + ' does not seem to be a file that should be there' + + bcolors.ENDC) + continue + if not query_db(query.format(pkg=pkg, suite=suite, arch=arch)): + bad_files.append('/'.join([root, file])) + log.warning('/'.join([root, file]) + ' should not be there') + return bad_files + + +def alien_dbd(directory=None): + if directory is None: + bad_files = [] + for path in DBD_PATH, DBDTXT_PATH: + bad_files.extend(alien_log(path)) + return bad_files + log.info('running alien_dbd check...') + query = '''SELECT r.status + FROM sources AS s JOIN results AS r on r.package_id=s.id + WHERE s.name="{pkg}" AND s.suite="{suite}" + AND s.architecture="{arch}" + ORDER BY s.name ASC, s.suite DESC''' + bad_files = [] + for root, dirs, files in os.walk(directory): + if not files: + continue + suite, arch = root.rsplit('/', 2)[1:] + for file in files: + try: + pkg, version = file.rsplit('.', 2)[0].rsplit('_', 1) + except ValueError: + log.critical(bcolors.FAIL + '/'.join([root, file]) + + ' does not seem to be a file that should be there' + + bcolors.ENDC) + result = query_db(query.format(pkg=pkg, suite=suite, arch=arch)) + try: + if result[0][0] != 'unreproducible': + bad_files.append('/'.join([root, file]) + ' (' + + str(result[0][0]) + ' package)') + log.warning('/'.join([root, file]) + ' should not be ' + 'there (' + str(result[0][0]) + ' package)') + except IndexError: + bad_files.append('/'.join([root, file]) + ' (' + + 'missing package)') + log.warning(bcolors.WARN + '/'.join([root, file]) + ' should ' + 'not be there (missing package)' + bcolors.ENDC) + return bad_files + + +def alien_rbpkg(): + log.info('running alien_rbpkg check...') + query = '''SELECT s.name + FROM sources AS s + WHERE s.name="{pkg}" AND s.suite="{suite}" + AND s.architecture="{arch}" + ORDER BY s.name ASC, s.suite DESC''' + bad_files = [] + for root, dirs, files in os.walk(RB_PKG_PATH): + if not files: + continue + suite, arch = root.rsplit('/', 2)[1:] + for file in files: + pkg = file.rsplit('.', 1)[0] + if not query_db(query.format(pkg=pkg, suite=suite, arch=arch)): + bad_files.append('/'.join([root, file])) + log.warning('/'.join([root, file]) + ' should not be there') + return bad_files + + +def _gen_section(header, pkgs, entries=None): + if not pkgs and not entries: + return '' + if pkgs: + html = '

' + str(len(pkgs)) + ' ' + html += header + html += '

\n'
+        for pkg in pkgs:
+            html += tab + link_package(pkg[0], pkg[2], pkg[3]).strip()
+            html += ' (' + pkg[1] + ' in ' + pkg[2] + '/' + pkg[3] + ')\n'
+    elif entries:
+        html = '

' + str(len(entries)) + ' ' + html += header + html += '

\n'
+        for entry in entries:
+            html += tab + entry + '\n'
+    html += '

\n' + return html + + +def gen_html(): + html = '' + # files that should not be there (e.g. removed package without cleanup) + html += _gen_section('log files that should not be there', None, + entries=alien_log()) + html += _gen_section('diffoscope files that should not be there:', None, + entries=alien_dbd()) + html += _gen_section('rb-pkg pages that should not be there:', None, + entries=alien_rbpkg()) + html += _gen_section('buildinfo files that should not be there:', None, + entries=alien_buildinfo()) + # diffoscope report where it shouldn't be + html += _gen_section('are not marked as unreproducible, but they ' + + 'have a diffoscope file:', not_unrep_with_dbd_file()) + # missing files + html += _gen_section('are built but don\'t have a buildlog:', + lack_rbuild()) + html += _gen_section('are built but don\'t have a .buildinfo file:', + lack_buildinfo()) + # diffoscope troubles + without_dbd, bad_dbd = unrep_with_dbd_issues() + html += _gen_section('are marked as unreproducible, but without ' + + 'diffoscope output - so probably diffoscope ' + + 'crashed:', without_dbd) + html += _gen_section('are marked as unreproducible, but their ' + + 'diffoscope output does not seem to be an html ' + + 'file - so probably diffoscope ran into a ' + + 'timeout:', bad_dbd) + # pbuilder-satisfydepends failed + html += _gen_section('failed to match their build-dependencies:', + pbuilder_dep_fail()) + return html + + +if __name__ == '__main__': + bugs = get_bugs() + html = '

This page lists unexpected things a human should look at and ' + html += 'fix, like packages with an incoherent status or files that ' + html += 'should not be there. ' + html += 'Please help making this page empty!

\n' + breakages = gen_html() + if breakages: + html += breakages + else: + html += '

COOL!!! Everything is GOOD and not a issue was ' + html += 'detected. Enjoy!

' + title = 'Breakages on reproducible.debian.net' + destfile = BASE + '/index_breakages.html' + desturl = REPRODUCIBLE_URL + '/index_breakages.html' + write_html_page(title, html, destfile, style_note=True) + log.info('Breackages page created at ' + desturl) diff --git a/job-cfg/reproducible.yaml b/job-cfg/reproducible.yaml index d241415d..d42cf776 100644 --- a/job-cfg/reproducible.yaml +++ b/job-cfg/reproducible.yaml @@ -346,19 +346,19 @@ - job-template: defaults: reproducible - name: '{name}_create_meta_pkg_sets' + name: '{name}_html_breakages' - job-template: defaults: reproducible - name: '{name}_nodes_info' + name: '{name}_create_meta_pkg_sets' - job-template: defaults: reproducible - name: '{name}_json' + name: '{name}_nodes_info' - job-template: defaults: reproducible - name: '{name}_breakages' + name: '{name}_json' - job-template: defaults: reproducible_builder @@ -732,6 +732,12 @@ my_shell: '/srv/jenkins/bin/reproducible_html_repository_comparison.sh' my_recipients: 'qa-jenkins-scm@lists.alioth.debian.org' my_node: '' + - '{name}_html_breakages': + my_description: 'Generate an HTML page with CI issues (packages with incoherent status or files that should or should not be there).' + my_timed: '30 0 * * *' + my_shell: '/srv/jenkins/bin/reproducible_html_breakages.py' + my_recipients: 'qa-jenkins-scm@lists.alioth.debian.org' + my_node: '' - '{name}_json': my_description: 'Generate https://reproducible.debian.net/userContent/reproducible.json for consumption by tracker.debian.org.' my_timed: '1 * * * *' @@ -750,12 +756,6 @@ my_shell: '/srv/jenkins/bin/reproducible_nodes_info.sh' my_recipients: 'qa-jenkins-scm@lists.alioth.debian.org' my_node: '' - - '{name}_breakages': - my_description: 'Generate an HTML page with CI issues (packages with incoherent status or files that should or should not be there).' - my_timed: '30 0 * * *' - my_shell: '/srv/jenkins/bin/reproducible_breakages.py' - my_recipients: 'qa-jenkins-scm@lists.alioth.debian.org' - my_node: '' - '{name}_builder_alpha': my_description: 'Try to reproducibly build a scheduled package. This is one of several builder jobs.' my_timed: 'H/2 * * * *' -- cgit v1.2.3-70-g09d2