[Git][qa/jenkins.debian.net][master] rdn: dashboard: add experimental in suite navigation

Holger Levsen (@holger) gitlab at salsa.debian.org
Thu Feb 26 21:56:22 GMT 2026



Holger Levsen pushed to branch master at Debian QA / jenkins.debian.net


Commits:
abcc1ee2 by Holger Levsen at 2026-02-26T22:56:07+01:00
rdn: dashboard: add experimental in suite navigation

Signed-off-by: Holger Levsen <holger at layer-acht.org>

- - - - -


4 changed files:

- + hosts/osuosl5-amd64/var/www/html/experimental.html
- hosts/osuosl5-amd64/var/www/html/forky.html
- hosts/osuosl5-amd64/var/www/html/trixie.html
- hosts/osuosl5-amd64/var/www/html/unstable.html


Changes:

=====================================
hosts/osuosl5-amd64/var/www/html/experimental.html
=====================================
@@ -0,0 +1,308 @@
+<!DOCTYPE html>
+<html lang="en">
+    <head>
+        <meta charset="utf-8">
+        <title>
+		reproduce.debian.net
+        </title>
+        <style>
+        body {
+            font-family: sans-serif;
+            font-size: 14pt;
+        }
+        h1 {
+            font-size: 24pt;
+        }
+        h3 {
+            font-size: 18pt;
+        }
+        h4 {
+            font-size: 12pt;
+        }
+
+        pre {
+            margin: 0;
+        }
+
+        pre.bad {
+            display: inline;
+        }
+
+        #stats-all, #stats-amd64, #stats-arm64, #stats-armhf, #stats-i386, #stats-riscv64, #stats-ppc64el{
+            text-align: left;
+	}
+
+        #worker, #progress-all, #progress-amd64, #progress-arm64, #progress-armhf, #progress-i386, #progress-riscv64, #progress-ppc64el{
+            font-size: 10pt;
+	}
+
+        td {
+            vertical-align: middle;
+            text-align: center;
+            white-space: nowrap;
+        }
+
+        img {
+            vertical-align: middle;
+            max-width: 1920;
+            width: 100%;
+        }
+
+        footer {
+            font-size: 12pt;
+        }
+
+        </style>
+        <script>
+        document.addEventListener('DOMContentLoaded', function() {
+            // display stats
+            function spanWith(text) {
+                let s = document.createElement('span');
+                s.textContent = text;
+                return s;
+            }
+
+            function linkTo(href, text) {
+                let a = document.createElement('a');
+                a.href = href;
+                a.textContent = text;
+                return a;
+            }
+
+            function updateStats(element, pad, arch, release, data) {
+                let div = document.getElementById(element+'-'+arch);
+                // clear children
+                div.innerHTML = '';
+                // add rows
+                data.map(row => {
+                    let r = document.createElement('pre');
+                    let key = row[0] + ': ';
+                    r.className = row[0];
+                    r.textContent = key.padEnd(pad) + row[1];
+                    div.appendChild(r);
+                    if ('bad' === row[0]) {
+                        div.appendChild(spanWith(' ('));
+                        div.appendChild(linkTo(`/${arch}/stats/${release}/`, 'reasons'));
+                        div.appendChild(spanWith(')'));
+                    }
+                });
+            }
+
+            function fetchStats() {
+                fetchArchStats("all", "experimental");
+                fetchArchStats("amd64", "experimental");
+                fetchArchStats("arm64", "experimental");
+                fetchArchStats("armhf", "experimental");
+                fetchArchStats("i386", "experimental");
+                fetchArchStats("riscv64", "experimental");
+                fetchArchStats("ppc64el", "experimental");
+            }
+
+            function fetchArchStats(arch, release) {
+                fetch(`https://reproduce.debian.net/${arch}/api/v1/dashboard?release=${release}`)
+                    .then(response => response.json())
+                    .then(data => {
+                        let good = data['rebuilds']['good'];
+                        let bad = data['rebuilds']['bad'];
+                        let fail = data['rebuilds']['fail'];
+                        let unknown = data['rebuilds']['unknown'];
+
+                        let running = data['jobs']['running'];
+                        let available = data['jobs']['available'];
+
+                        updateStats('stats', 7, arch, release, [
+                            ['reproduced', (100 / (good + bad + fail) * good).toFixed(2) + '%'],
+                            ['good', good],
+                            ['bad', bad],
+                            ['fail', fail],
+                            ['unknown', unknown],
+                        ])
+                        updateStats('progress', 8, arch, release, [
+                            [(100 / (good + bad + fail + unknown) * (good + bad + fail)).toFixed(2) + '%', (running + available)],
+                        ]);
+                    });
+            }
+
+            setInterval(fetchStats, 60 * 1000);
+            fetchStats();
+        });
+        </script>
+    </head>
+    <body>
+        <h1>reproduce.debian.net</h1>
+        <h3>Attempts to bit-for-bit identically rebuild each Debian binary package found in the <a href="https://ftp.debian.org/debian/dists/">distribution archive</a>, using the <a href="https://wiki.debian.org/ReproducibleBuilds/BuildinfoFiles">.buildinfo</a> file produced when the <a href="https://buildd.debian.org">buildd</a> originally built the package.</h3>
+	<p>
+	For each distributed package, <em>rebuilderd</em> calls <em>debrebuild</em> that calls <em>debootsnap</em>, <em>mmdebstrap</em> and finally <em>sbuild</em> to build that package within a user namespace.</p>
+	<ul>
+          <li><a href="https://buildinfos.debian.net">buildinfos.debian.net</a> provides <em>.buildinfo</em> files for each distributed binary package.
+           (see <a href="https://bugs.debian.org/763822">#763822</a>,
+           <a href="https://bugs.debian.org/929397">#929397</a>)
+          </li>
+          <li><em>debootsnap</em> uses <a href="https://snapshot.debian.org">snapshot.debian.org</a> to retrieve the exact same version of each build dependency package (which was used for the "original build"). (see <a href="https://bugs.debian.org/1096129">#1096129</a>)</li>
+          <li>The goal is to replicate the same build process that is used by Debian during package publication -- not to seek out additional sources of variance.</li>
+          <li>Variance testing, used to find factors that can prevent packages from rebuilding reproducibly, will continue at <a href="https://tests.reproducible-builds.org/debian/reproducible.html">https://tests.reproducible-builds.org/debian/reproducible.html</a>.</li>
+	  <li>If you are wondering why we are doing this at all, then hopefully the <a href="https://reproducible-builds.org">Reproducible Builds website</a> will explain why this is useful.</li>
+	  <li>reproduce.debian.net is currently testing all <a href="https://release.debian.org/testing/arch_qualify.html">release architectures</a> except <code>s390x</code>.</li>
+	  <li>Better navigation to
+       	    <a href="trixie.html">trixie</a>
+	    <a href="forky.html">forky</a>
+            <a href="unstable.html">unstable</a>,
+            and other tested suites is being worked on.
+          </li>
+        </ul>
+	<table>
+	<tr>
+	<th width=25%><code>arch</code></th><th width=25%>reproduced builds (experimental)</th><th width=25%>graph for <code>experimental</code></th><th width=25%>percentage tried / queued sources (experimental) and on which workers</th>
+	</tr><tr>
+	<td>
+		<a href="https://reproduce.debian.net/all/">
+			all
+		</a>
+	</td><td>
+		<div id="stats-all">Loading stats...</div>
+	</td><td>
+		<a href="https://reproduce.debian.net/all/">
+			<img src="https://reproduce.debian.net/all/stats/experimental/rb.png">
+		</a>
+		<a href="https://reproduce.debian.net/all/stats/experimental/rb.png">📈</a>
+	</td><td>
+		<div id="progress-all">Loading progress...</div>
+	        <span id="worker">
+			ionos(20|21|22|23|24|25)-amd64
+	        </span>
+	</td></tr><tr><td>
+			<a href="https://reproduce.debian.net/amd64/">
+		amd64
+		</a>
+	</td><td>
+		<div id="stats-amd64">Loading stats...</div>
+	</td><td>
+		<a href="https://reproduce.debian.net/amd64/">
+			<img src="https://reproduce.debian.net/amd64/stats/experimental/rb.png">
+		</a>
+		<a href="https://reproduce.debian.net/amd64/stats/experimental/rb.png">📈</a>
+	</td><td>
+		<div id="progress-amd64">Loading progress...</div>
+	        <span id="worker">
+			osuosl(41|42|43|44)-amd64
+	        </span>
+	</td></tr><tr><td>
+		<a href="https://reproduce.debian.net/arm64/">
+			arm64
+		</a>
+	</td><td>
+		<div id="stats-arm64">Loading stats...</div>
+	</td><td>
+		<a href="https://reproduce.debian.net/arm64/">
+			<img src="https://reproduce.debian.net/arm64/stats/experimental/rb.png">
+		</a>
+		<a href="https://reproduce.debian.net/arm64/stats/experimental/rb.png">📈</a>
+	</td><td>
+		<div id="progress-arm64">Loading progress...</div>
+	        <span id="worker">
+			codethink02-arm64
+	        </span>
+	</td></tr><tr><td>
+		<a href="https://reproduce.debian.net/armhf/">
+			armhf
+		</a>
+	</td><td>
+		<div id="stats-armhf">Loading stats...</div>
+	</td><td>
+		<a href="https://reproduce.debian.net/armhf/">
+			<img src="https://reproduce.debian.net/armhf/stats/experimental/rb.png">
+		</a>
+		<a href="https://reproduce.debian.net/armhf/stats/experimental/rb.png">📈</a>
+	</td><td>
+		<div id="progress-armhf">Loading progress...</div>
+	        <span id="worker">
+			codethink01-arm64
+	        </span>
+	</td></tr><tr><td>
+		<a href="https://reproduce.debian.net/i386/">
+			i386
+		</a>
+	</td><td>
+		<div id="stats-i386">Loading stats...</div>
+	</td><td>
+		<a href="https://reproduce.debian.net/i386/">
+			<img src="https://reproduce.debian.net/i386/stats/experimental/rb.png">
+		</a>
+		<a href="https://reproduce.debian.net/i386/stats/experimental/rb.png">📈</a>
+	</td><td>
+		<div id="progress-i386">Loading progress...</div>
+	        <span id="worker">
+			infomaniak0(7|8)-amd64
+	        </span>
+	</td></tr><tr><td>
+		<a href="https://reproduce.debian.net/ppc64el/">
+			ppc64el
+		</a>
+	</td><td>
+		<div id="stats-ppc64el">Loading stats...</div>
+	</td><td>
+		<a href="https://reproduce.debian.net/ppc64el/">
+			<img src="https://reproduce.debian.net/ppc64el/stats/experimental/rb.png">
+		</a>
+		<a href="https://reproduce.debian.net/ppc64el/stats/experimental/rb.png">📈</a>
+	</td><td>
+		<div id="progress-ppc64el">Loading progress...</div>
+	        <span id="worker">
+			osuosl(6|7)-ppc64el
+	        </span>
+	</td></tr><tr><td>
+		<a href="https://reproduce.debian.net/riscv64/">
+			riscv64
+		</a>
+	</td><td>
+		<div id="stats-riscv64">Loading stats...</div>
+	</td><td>
+		<a href="https://reproduce.debian.net/riscv64/">
+			<img src="https://reproduce.debian.net/riscv64/stats/experimental/rb.png">
+		</a>
+		<a href="https://reproduce.debian.net/riscv64/stats/experimental/rb.png">📈</a>
+	</td><td>
+		<div id="progress-riscv64">Loading progress...</div>
+	        <span id="worker">
+			riscv64-(04|06|07|33|34)<br>
+			<s>riscv64-(01|02)</s>
+	        </span>
+	</td></tr>
+	</table>
+	<br/>
+	<h4>We want more and independent rebuilders</h4>
+	Do you have hardware idling? Because, for sure, Debian rebuilding Debian is superb and it's something we've been working on for years!
+	Yet we still want more: we also want <a href="https://wiki.debian.org/ReproducibleBuilds/rebuilderd-instances">independent rebuilders</a>, and we want them in a
+	<em>diverse</em> variety of setups and settings...!
+	And <em>then</em> we'll want anyone to be able to act on this data too.
+	<br/>
+	<h4>How to evaluate a system</h4>
+	<code>
+	    sudo apt install <a href="https://tracker.debian.org/rust-debian-repro-status">debian-repro-status</a> ; debian-repro-status
+	</code>
+	<br/>
+	<h4>Documentation hints for rebuilderd</h4>
+	<ul>
+		<li><a href="https://bugs.debian.org/1109459">#1109459: rebuilderd: config files and scripts for a simple one machine setup</a></li>
+		<li><a href="https://bugs.debian.org/1110036">#1110036: rebuilderd: create rebuilderd user</a></li>
+		<li><a href="https://bugs.debian.org/1110037">#1110037: rebuilderd-worker: config files and scripts for a simple one machine setup</a></li>
+		<li><a href="https://bugs.debian.org/1110038">#1110038: rebuilderd-worker: create rebuilderd-worker user with subuid</a></li>
+		<li><a href="/rebuilderd-setup.html">How to setup rebuilderd on Debian.</a> (outdated)</li>
+		<li><a href="/rebuilderd-usage.html">How to use/control rebuilderd.</a> (outdated)</li>
+		<li>https://r.d.n/$arch/api/v1/packages/binary?seen_only=true&release=$release (JSON)</li>
+		<li><a href="https://github.com/Nihlus/rebuilderd/blob/database-rework/contrib/docs/rebuilderd-v1.yml">rebuilderd.git/contrib/docs/rebuilderd-v1.yml</a> v1 API specification</li>
+		<li>https://r.d.n/$arch/stats/db-backup/ (rebuilderd database backups)</li>
+	</ul>
+	<hr/>
+	<footer>
+            pew pew, <a href="https://github.com/kpcyrd/rebuilderd">rebuilderd</a> using <a href="https://tracker.debian.org/pkg/devscripts">debrebuild</a> to reproduce what Debian distributes via <code><a href="https://ftp.debian.org/debian/dists/">ftp.debian.org</a></code>. ♥️
+	<br/>
+	    <small>
+		This setup is in its infancy, even though by now everything is in trixie. Still, please don't consider any URLs as stable here, and more to the point, especially don't take any numbers here seriously, unless...!?!
+		<br/>Oh, and in case you are wondering why we are doing this, then hopefully the <a href="https://reproducible-builds.org">Reproducible Builds website</a> will explain why this is useful.
+		</br>
+		contact: IRC preferred: #debian-reproducible on OFTC or mail to holger at d.o
+	    </small>
+        </footer>
+    </body>
+</html>


=====================================
hosts/osuosl5-amd64/var/www/html/forky.html
=====================================
@@ -144,8 +144,9 @@
 	  <li>If you are wondering why we are doing this at all, then hopefully the <a href="https://reproducible-builds.org">Reproducible Builds website</a> will explain why this is useful.</li>
 	  <li>reproduce.debian.net is currently testing all <a href="https://release.debian.org/testing/arch_qualify.html">release architectures</a> except <code>s390x</code>.</li>
 	  <li>Better navigation to
+       	    <a href="trixie.html">trixie</a>
             <a href="unstable.html">unstable</a>,
-	    <a href="trixie.html">trixie</a>
+            <a href="experimental.html">experimental</a>,
             and other tested suites is being worked on.
           </li>
         </ul>


=====================================
hosts/osuosl5-amd64/var/www/html/trixie.html
=====================================
@@ -145,8 +145,9 @@
 	  <li>If you are wondering why we are doing this at all, then hopefully the <a href="https://reproducible-builds.org">Reproducible Builds website</a> will explain why this is useful.</li>
 	  <li>reproduce.debian.net is currently testing all <a href="https://release.debian.org/testing/arch_qualify.html">release architectures</a> except <code>s390x</code>.</li>
 	  <li>Better navigation to
-            <a href="unstable.html">unstable</a>,
 	    <a href="forky.html">forky</a>
+            <a href="unstable.html">unstable</a>,
+            <a href="experimental.html">experimental</a>,
             and other tested suites is being worked on.
           </li>
         </ul>


=====================================
hosts/osuosl5-amd64/var/www/html/unstable.html
=====================================
@@ -144,8 +144,9 @@
 	  <li>If you are wondering why we are doing this at all, then hopefully the <a href="https://reproducible-builds.org">Reproducible Builds website</a> will explain why this is useful.</li>
 	  <li>reproduce.debian.net is currently testing all <a href="https://release.debian.org/testing/arch_qualify.html">release architectures</a> except <code>s390x</code>.</li>
 	  <li>Better navigation to
+       	    <a href="trixie.html">trixie</a>
 	    <a href="forky.html">forky</a>
-	    <a href="trixie.html">trixie</a>
+            <a href="experimental.html">experimental</a>,
             and other tested suites is being worked on.
           </li>
         </ul>



View it on GitLab: https://salsa.debian.org/qa/jenkins.debian.net/-/commit/abcc1ee20572e7a75d6f5bb3676496470b572cdb

-- 
View it on GitLab: https://salsa.debian.org/qa/jenkins.debian.net/-/commit/abcc1ee20572e7a75d6f5bb3676496470b572cdb
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/qa-jenkins-scm/attachments/20260226/c2d8f55b/attachment-0001.htm>


More information about the Qa-jenkins-scm mailing list