[Qa-jenkins-scm] [jenkins.debian.net] 02/02: reproducible: provide suite specific views on issues

Holger Levsen holger at moszumanska.debian.org
Fri Mar 27 23:25:01 UTC 2015


This is an automated email from the git hooks/post-receive script.

holger pushed a commit to branch master
in repository jenkins.debian.net.

commit 7f518f0753a9d323c516aa785af8d2311b0fd224
Author: Holger Levsen <holger at layer-acht.org>
Date:   Sat Mar 28 00:24:45 2015 +0100

    reproducible: provide suite specific views on issues
---
 bin/reproducible_common.sh                     |  3 +-
 bin/reproducible_html_notes.py                 | 52 +++++++++++++++++---------
 etc/apache2/sites-available/jenkins.debian.net |  7 ++++
 3 files changed, 44 insertions(+), 18 deletions(-)

diff --git a/bin/reproducible_common.sh b/bin/reproducible_common.sh
index 30c4dcb..777c0a6 100755
--- a/bin/reproducible_common.sh
+++ b/bin/reproducible_common.sh
@@ -54,11 +54,12 @@ declare -A LINKTARGET
 NOTES_PATH=/var/lib/jenkins/userContent/notes
 ISSUES_PATH=/var/lib/jenkins/userContent/issues
 RB_PATH=/var/lib/jenkins/userContent/rb-pkg/
-mkdir -p $NOTES_PATH $ISSUES_PATH $RB_PATH
+mkdir -p $NOTES_PATH $RB_PATH
 
 # create subdirs for suites
 for i in $SUITES ; do
 	mkdir -p /var/lib/jenkins/userContent/$i
+	mkdir -p $ISSUES_PATH/$i
 done
 
 # known package sets
diff --git a/bin/reproducible_html_notes.py b/bin/reproducible_html_notes.py
index e1b9881..c68694e 100755
--- a/bin/reproducible_html_notes.py
+++ b/bin/reproducible_html_notes.py
@@ -121,6 +121,14 @@ issue_html = Template((tab*3).join("""
       $issue
     </th>
   </tr>
+  <tr>
+    <td>
+      Suites:
+    </td>
+    <td>
+      $suite_links
+    </td>
+  </tr>
     $urls
   <tr>
     <td>
@@ -132,7 +140,7 @@ issue_html = Template((tab*3).join("""
   </tr>
   <tr>
     <td>
-      Packages known to be affected by this issue:
+      Packages in '$suite' known to be affected by this issue:
     </td>
     <td>
 $affected_pkgs
@@ -238,12 +246,21 @@ def gen_html_note(package, note):
         return note_html.substitute(version='N/A', infos=infos)
 
 
-def gen_html_issue(issue):
+def gen_html_issue(issue, suite):
     """
     Given a issue as input (as a dict:
     {"issue_identifier": {"description": "blablabla", "url": "blabla"}}
     ) it returns the html body
     """
+    # links to the issue in other suites
+    suite_links = ''
+    for i in SUITES:
+         if suite_links != '':
+             suite_links += ' / '
+         if i != suite:
+             suite_links += '<a href="' + REPRODUCIBLE_URL + ISSUES_URI + '/' + i + '/' + issue + '_issue.html">' + i + '</a>'
+         else:
+             suite_links += '<em>' + i + '</em>'
     # check for url:
     if 'url' in issues[issue]:
         url = issue_html_url.substitute(url=issues[issue]['url'])
@@ -252,7 +269,6 @@ def gen_html_issue(issue):
     # add affected packages:
     affected = ''
     try:
-        suite = 'unstable'
         arch = 'amd64'
         for status in ['unreproducible', 'FTBFS', 'not for us', 'blacklisted', 'reproducible']:
             pkgs = [x[0] for x in all_pkgs if x[1] == status and x[2] == suite and x[3] == arch and x[0] in issues_count[issue]]
@@ -280,7 +296,8 @@ def gen_html_issue(issue):
     desc = url2html.sub(r'<a href="\1">\1</a>', desc)
     desc = desc.replace('\n', '<br />')
     return issue_html.substitute(issue=issue, urls=url, description=desc,
-                                   affected_pkgs=affected)
+                                   affected_pkgs=affected,
+                                   suite=suite, suite_links=suite_links)
 
 def purge_old_notes(notes):
     removed_pages = []
@@ -330,19 +347,20 @@ def iterate_over_notes(notes):
 def iterate_over_issues(issues):
     num_issues = str(len(issues))
     i = 0
-    for issue in sorted(issues):
-        log.debug('iterating over issues... ' + str(i) + '/' + num_issues)
-        log.debug('\t' + str(issue))
-        html = gen_html_issue(issue)
-
-        title = 'Notes about issue ' + issue
-        destfile = ISSUES_PATH + '/' + issue + '_issue.html'
-        write_html_page(title=title, body=html, destfile=destfile,
-                        style_note=True)
-
-        desturl = REPRODUCIBLE_URL + ISSUES_URI + '/' + issue + '_issue.html'
-        log.info("Issue created: " + desturl)
-        i = i + 1
+    for suite in SUITES:
+        for issue in sorted(issues):
+            log.debug('iterating over issues in ' + suite +'... ' + str(i) + '/' + num_issues)
+            log.debug('\t' + str(issue))
+            html = gen_html_issue(issue, suite)
+
+            title = 'Notes about issue ' + issue + ' in ' + suite
+            destfile = ISSUES_PATH + '/' + suite + '/' + issue + '_issue.html'
+            write_html_page(title=title, body=html, destfile=destfile,
+                            style_note=True)
+
+            desturl = REPRODUCIBLE_URL + ISSUES_URI + '/' + suite + '/' + issue + '_issue.html'
+            log.info("Issue created: " + desturl)
+            i = i + 1
 
 
 def sort_issues(issue):
diff --git a/etc/apache2/sites-available/jenkins.debian.net b/etc/apache2/sites-available/jenkins.debian.net
index 924c449..17458ec 100644
--- a/etc/apache2/sites-available/jenkins.debian.net
+++ b/etc/apache2/sites-available/jenkins.debian.net
@@ -159,6 +159,13 @@ Use common-debian-service-https-redirect reproducible.debian.net
 	RewriteCond %{REQUEST_URI} ^/userContent
 	RewriteRule ^/userContent/(.*)$ /$1 [R=301,L]
 
+	# redirect rb.d.n/issues/$ISSUE → rb.d.n/issues/unstable/$ISSUE
+	RewriteCond %{HTTP_HOST} reproducible\.debian\.net
+	RewriteCond %{REQUEST_FILENAME} !-f
+	RewriteCond %{REQUEST_FILENAME} !-d
+	RewriteCond /var/lib/jenkins/userContent/issues/unstable/$1 -f
+	RewriteRule ^/([a-z0-9.+-_]+) /issues/unstable/$1 [R=302,L]
+
 	# redirect rb.d.n/$PKG → rb.d.n/rb-pkg/unstable/amd64/$PKG.html
 	RewriteCond %{HTTP_HOST} reproducible\.debian\.net
 	RewriteCond %{REQUEST_FILENAME} !-f

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/qa/jenkins.debian.net.git



More information about the Qa-jenkins-scm mailing list