[Git][qa/jenkins.debian.net][master] rdn: show amd64-pull184.r.d.n has trixie, forky and unstable now
Holger Levsen (@holger)
gitlab at salsa.debian.org
Fri Aug 22 14:03:21 BST 2025
Holger Levsen pushed to branch master at Debian QA / jenkins.debian.net
Commits:
063dea8d by Holger Levsen at 2025-08-22T15:03:11+02:00
rdn: show amd64-pull184.r.d.n has trixie, forky and unstable now
Signed-off-by: Holger Levsen <holger at layer-acht.org>
- - - - -
4 changed files:
- + hosts/osuosl5-amd64/var/www/html/amd64-pull184/forky.html
- hosts/osuosl5-amd64/var/www/html/amd64-pull184/index.html
- + hosts/osuosl5-amd64/var/www/html/amd64-pull184/trixie.html
- + hosts/osuosl5-amd64/var/www/html/amd64-pull184/unstable.html
Changes:
=====================================
hosts/osuosl5-amd64/var/www/html/amd64-pull184/forky.html
=====================================
@@ -0,0 +1,230 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <title>
+ reproduce.debian.net/amd64-pull184 - forky (arch:amd64)
+ </title>
+ <style>
+ body {
+ font-family: sans-serif;
+ font-size: 18pt;
+ }
+ h1 {
+ font-size: 24pt;
+ }
+ h3 {
+ font-size: 18pt;
+ }
+
+ #search-results {
+ margin: 18pt 0;
+ }
+
+ pre {
+ margin: 0;
+ }
+
+ img {
+ vertical-align: middle;
+ max-width: 1920;
+ width: 50%;
+ }
+
+ #search-results pre {
+ margin: 12pt 0;
+ }
+
+ .status {
+ font-weight: bold;
+ }
+
+ .good {
+ color: green;
+ }
+
+ .bad {
+ color: red;
+ }
+
+ .unknown {
+ color: #957fff;
+ }
+
+ footer {
+ font-size: 12pt;
+ }
+ </style>
+ <script>
+ document.addEventListener('DOMContentLoaded', function() {
+ // package search
+ 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 searchPkgs(query) {
+ let div = document.getElementById('search-results');
+ let url = '/amd64-pull184/api/v1/pkgs/list?' + new URLSearchParams({
+ name: query,
+ distro: 'debian',
+ release: 'forky',
+ });
+ fetch(url)
+ .then(response => response.json())
+ .then(data => {
+ // clear children
+ div.innerHTML = '';
+
+ data.map(pkg => {
+ let build_id = pkg.build_id;
+ let r = document.createElement('pre');
+
+ r.appendChild(spanWith('['));
+ let status = pkg['status'];
+ let statusSpan = spanWith(status);
+ statusSpan.className += ' status';
+ if (status == 'GOOD') {
+ statusSpan.className += ' good';
+ } else if (status == 'BAD') {
+ statusSpan.className += ' bad';
+ } else {
+ statusSpan.className += ' unknown';
+ }
+ r.appendChild(statusSpan);
+ r.appendChild(spanWith(`] ${pkg['name']} ${pkg['version']}\t\t`));
+
+ if (build_id) {
+ r.appendChild(spanWith(' ['));
+ r.appendChild(linkTo(`/amd64-pull184/api/v1/builds/${build_id}/log`, 'log'));
+ r.appendChild(spanWith(']'));
+ }
+
+ if (pkg.has_attestation) {
+ r.appendChild(spanWith(' ['));
+ r.appendChild(linkTo(`/amd64-pull184/api/v1/builds/${build_id}/attestation`, 'attestation'));
+ r.appendChild(spanWith(']'));
+ }
+
+ if (pkg.has_diffoscope) {
+ r.appendChild(spanWith(' ['));
+ r.appendChild(linkTo(`/amd64-pull184/api/v1/builds/${build_id}/diffoscope`, 'diffoscope'));
+ r.appendChild(spanWith(']'));
+ }
+
+ div.appendChild(r);
+ });
+ });
+ }
+
+ if (location.hash) {
+ searchPkgs(location.hash.substr(1));
+ }
+
+ document.getElementById('search').addEventListener('submit', function(e) {
+ e.preventDefault();
+ let query = document.getElementById('search-query').value;
+ location.href = `#${query}`;
+ searchPkgs(query);
+ });
+
+ // display stats
+ function updateStats(data) {
+ let div = document.getElementById('stats');
+ // clear children
+ div.innerHTML = '';
+ // add rows
+ data.map(row => {
+ let r = document.createElement('pre');
+ let key = row[0] + ': ';
+ r.textContent = key.padEnd(25) + row[1];
+ div.appendChild(r);
+ });
+ }
+
+ function fetchStats() {
+ fetch('/amd64-pull184/api/v1/dashboard?release=forky')
+ .then(response => response.json())
+ .then(data => {
+ let div = document.getElementById('stats');
+ let main = data;
+
+ let good = main['good'];
+ let bad = main['bad'];
+ let unknown = main['unknown'];
+
+ let queue = data['queue_length'];
+ let workers = data['active_builds'].length;
+
+ updateStats([
+ ['reproduced', (100 / (good + bad) * good).toFixed(2) + '%'],
+ ['good', good],
+ ['bad', bad],
+ ['unknown (binary pkgs)', unknown],
+ ['build progress', (100 / (good + unknown + bad) * (good + bad)).toFixed(2) + '%'],
+ ['queue length (src pkgs)', queue],
+ ['active workers', workers],
+ ]);
+ });
+ }
+
+ setInterval(fetchStats, 60 * 1000);
+ fetchStats();
+ });
+ </script>
+ </head>
+ <body>
+ <h1>
+ <a href="https://reproduce.debian.net">reproduce</a>.debian.net/<a href="https://amd64-pull184.reproduce.debian.net">amd64-pull184</a>
+ </h1>
+ <h3>
+ running https://github.com/kpcyrd/rebuilderd/pull/184
+ </h3>
+ <a href="stats/rb.png"><img src="stats/rb.png" align="right"></a>
+ <h3>
+ <a href="https://amd64-pull184.reproduce.debian.net/trixie.html">trixie</a>,
+ forky
+ <a href="https://amd64-pull184.reproduce.debian.net/unstable.html">unstable</a>
+ (arch:amd64)
+ </h3>
+ <code>
+ forky (arch:amd64)
+ </code>
+
+ <div id="stats">Loading stats...</div>
+
+ <div>
+ <h3>Binary package search</h3>
+ <form id="search">
+ <input type="text" id="search-query" placeholder="2ping">
+ <input type="submit" value="Search">
+ </form>
+ </div>
+ <div id="search-results">
+ </div>
+
+ <footer>
+ <br/>
+ <a href="stats/">Statistics about BAD packages</a> on amd64.
+ <br/>
+ <hr/>
+ 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>
+ <a href="https://reproduce.debian.net/">This setup</a> 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.
+ <!--#config timefmt="%Y-%m-%d" --><br/>Static content last modified: <!--#echo var="date_gmt" -->
+ </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/amd64-pull184/index.html deleted
=====================================
@@ -1,224 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
- <head>
- <meta charset="utf-8">
- <title>
- reproduce.debian.net/amd64-pull184 - trixie, forky, unstable (arch:amd64)
- </title>
- <style>
- body {
- font-family: sans-serif;
- font-size: 18pt;
- }
- h1 {
- font-size: 24pt;
- }
- h3 {
- font-size: 18pt;
- }
-
- #search-results {
- margin: 18pt 0;
- }
-
- pre {
- margin: 0;
- }
-
- img {
- vertical-align: middle;
- max-width: 1920;
- width: 50%;
- }
-
- #search-results pre {
- margin: 12pt 0;
- }
-
- .status {
- font-weight: bold;
- }
-
- .good {
- color: green;
- }
-
- .bad {
- color: red;
- }
-
- .unknown {
- color: #957fff;
- }
-
- footer {
- font-size: 12pt;
- }
- </style>
- <script>
- document.addEventListener('DOMContentLoaded', function() {
- // package search
- 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 searchPkgs(query) {
- let div = document.getElementById('search-results');
- let url = '/amd64-pull184/api/v1/pkgs/list?' + new URLSearchParams({
- name: query,
- distro: 'debian',
- release: 'forky',
- });
- fetch(url)
- .then(response => response.json())
- .then(data => {
- // clear children
- div.innerHTML = '';
-
- data.map(pkg => {
- let build_id = pkg.build_id;
- let r = document.createElement('pre');
-
- r.appendChild(spanWith('['));
- let status = pkg['status'];
- let statusSpan = spanWith(status);
- statusSpan.className += ' status';
- if (status == 'GOOD') {
- statusSpan.className += ' good';
- } else if (status == 'BAD') {
- statusSpan.className += ' bad';
- } else {
- statusSpan.className += ' unknown';
- }
- r.appendChild(statusSpan);
- r.appendChild(spanWith(`] ${pkg['name']} ${pkg['version']}\t\t`));
-
- if (build_id) {
- r.appendChild(spanWith(' ['));
- r.appendChild(linkTo(`/amd64-pull184/api/v1/builds/${build_id}/log`, 'log'));
- r.appendChild(spanWith(']'));
- }
-
- if (pkg.has_attestation) {
- r.appendChild(spanWith(' ['));
- r.appendChild(linkTo(`/amd64-pull184/api/v1/builds/${build_id}/attestation`, 'attestation'));
- r.appendChild(spanWith(']'));
- }
-
- if (pkg.has_diffoscope) {
- r.appendChild(spanWith(' ['));
- r.appendChild(linkTo(`/amd64-pull184/api/v1/builds/${build_id}/diffoscope`, 'diffoscope'));
- r.appendChild(spanWith(']'));
- }
-
- div.appendChild(r);
- });
- });
- }
-
- if (location.hash) {
- searchPkgs(location.hash.substr(1));
- }
-
- document.getElementById('search').addEventListener('submit', function(e) {
- e.preventDefault();
- let query = document.getElementById('search-query').value;
- location.href = `#${query}`;
- searchPkgs(query);
- });
-
- // display stats
- function updateStats(data) {
- let div = document.getElementById('stats');
- // clear children
- div.innerHTML = '';
- // add rows
- data.map(row => {
- let r = document.createElement('pre');
- let key = row[0] + ': ';
- r.textContent = key.padEnd(25) + row[1];
- div.appendChild(r);
- });
- }
-
- function fetchStats() {
- fetch('/amd64-pull184/api/v1/dashboard?release=forky')
- .then(response => response.json())
- .then(data => {
- let div = document.getElementById('stats');
- let main = data;
-
- let good = main['good'];
- let bad = main['bad'];
- let unknown = main['unknown'];
-
- let queue = data['queue_length'];
- let workers = data['active_builds'].length;
-
- updateStats([
- ['reproduced', (100 / (good + bad) * good).toFixed(2) + '%'],
- ['good', good],
- ['bad', bad],
- ['unknown (binary pkgs)', unknown],
- ['build progress', (100 / (good + unknown + bad) * (good + bad)).toFixed(2) + '%'],
- ['queue length (src pkgs)', queue],
- ['active workers', workers],
- ]);
- });
- }
-
- setInterval(fetchStats, 60 * 1000);
- fetchStats();
- });
- </script>
- </head>
- <body>
- <h1>
- <a href="https://reproduce.debian.net">reproduce</a>.debian.net/<a href="https://amd64-pull184.reproduce.debian.net">amd64-pull184</a>
- </h1>
- <h1>
- running https://github.com/kpcyrd/rebuilderd/pull/184
- </h1>
- <a href="stats/rb.png"><img src="stats/rb.png" align="right"></a>
- <h3>
- trixie, forky, unstable (arch:amd64)
- </h3>
-
- <div id="stats">Loading stats...</div>
-
- <div>
- <h3>Binary package search</h3>
- <form id="search">
- <input type="text" id="search-query" placeholder="2ping">
- <input type="submit" value="Search">
- </form>
- </div>
- <div id="search-results">
- </div>
-
- <footer>
- <br/>
- <a href="stats/">Statistics about BAD packages</a> on amd64.
- <br/>
- <hr/>
- 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>
- <a href="https://reproduce.debian.net/">This setup</a> 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.
- <!--#config timefmt="%Y-%m-%d" --><br/>Static content last modified: <!--#echo var="date_gmt" -->
- </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/amd64-pull184/index.html
=====================================
@@ -0,0 +1 @@
+forky.html
\ No newline at end of file
=====================================
hosts/osuosl5-amd64/var/www/html/amd64-pull184/trixie.html
=====================================
@@ -0,0 +1,230 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <title>
+ reproduce.debian.net/amd64-pull184 - trixie (arch:amd64)
+ </title>
+ <style>
+ body {
+ font-family: sans-serif;
+ font-size: 18pt;
+ }
+ h1 {
+ font-size: 24pt;
+ }
+ h3 {
+ font-size: 18pt;
+ }
+
+ #search-results {
+ margin: 18pt 0;
+ }
+
+ pre {
+ margin: 0;
+ }
+
+ img {
+ vertical-align: middle;
+ max-width: 1920;
+ width: 50%;
+ }
+
+ #search-results pre {
+ margin: 12pt 0;
+ }
+
+ .status {
+ font-weight: bold;
+ }
+
+ .good {
+ color: green;
+ }
+
+ .bad {
+ color: red;
+ }
+
+ .unknown {
+ color: #957fff;
+ }
+
+ footer {
+ font-size: 12pt;
+ }
+ </style>
+ <script>
+ document.addEventListener('DOMContentLoaded', function() {
+ // package search
+ 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 searchPkgs(query) {
+ let div = document.getElementById('search-results');
+ let url = '/amd64-pull184/api/v1/pkgs/list?' + new URLSearchParams({
+ name: query,
+ distro: 'debian',
+ release: 'trixie',
+ });
+ fetch(url)
+ .then(response => response.json())
+ .then(data => {
+ // clear children
+ div.innerHTML = '';
+
+ data.map(pkg => {
+ let build_id = pkg.build_id;
+ let r = document.createElement('pre');
+
+ r.appendChild(spanWith('['));
+ let status = pkg['status'];
+ let statusSpan = spanWith(status);
+ statusSpan.className += ' status';
+ if (status == 'GOOD') {
+ statusSpan.className += ' good';
+ } else if (status == 'BAD') {
+ statusSpan.className += ' bad';
+ } else {
+ statusSpan.className += ' unknown';
+ }
+ r.appendChild(statusSpan);
+ r.appendChild(spanWith(`] ${pkg['name']} ${pkg['version']}\t\t`));
+
+ if (build_id) {
+ r.appendChild(spanWith(' ['));
+ r.appendChild(linkTo(`/amd64-pull184/api/v1/builds/${build_id}/log`, 'log'));
+ r.appendChild(spanWith(']'));
+ }
+
+ if (pkg.has_attestation) {
+ r.appendChild(spanWith(' ['));
+ r.appendChild(linkTo(`/amd64-pull184/api/v1/builds/${build_id}/attestation`, 'attestation'));
+ r.appendChild(spanWith(']'));
+ }
+
+ if (pkg.has_diffoscope) {
+ r.appendChild(spanWith(' ['));
+ r.appendChild(linkTo(`/amd64-pull184/api/v1/builds/${build_id}/diffoscope`, 'diffoscope'));
+ r.appendChild(spanWith(']'));
+ }
+
+ div.appendChild(r);
+ });
+ });
+ }
+
+ if (location.hash) {
+ searchPkgs(location.hash.substr(1));
+ }
+
+ document.getElementById('search').addEventListener('submit', function(e) {
+ e.preventDefault();
+ let query = document.getElementById('search-query').value;
+ location.href = `#${query}`;
+ searchPkgs(query);
+ });
+
+ // display stats
+ function updateStats(data) {
+ let div = document.getElementById('stats');
+ // clear children
+ div.innerHTML = '';
+ // add rows
+ data.map(row => {
+ let r = document.createElement('pre');
+ let key = row[0] + ': ';
+ r.textContent = key.padEnd(25) + row[1];
+ div.appendChild(r);
+ });
+ }
+
+ function fetchStats() {
+ fetch('/amd64-pull184/api/v1/dashboard?release=trixie')
+ .then(response => response.json())
+ .then(data => {
+ let div = document.getElementById('stats');
+ let main = data;
+
+ let good = main['good'];
+ let bad = main['bad'];
+ let unknown = main['unknown'];
+
+ let queue = data['queue_length'];
+ let workers = data['active_builds'].length;
+
+ updateStats([
+ ['reproduced', (100 / (good + bad) * good).toFixed(2) + '%'],
+ ['good', good],
+ ['bad', bad],
+ ['unknown (binary pkgs)', unknown],
+ ['build progress', (100 / (good + unknown + bad) * (good + bad)).toFixed(2) + '%'],
+ ['queue length (src pkgs)', queue],
+ ['active workers', workers],
+ ]);
+ });
+ }
+
+ setInterval(fetchStats, 60 * 1000);
+ fetchStats();
+ });
+ </script>
+ </head>
+ <body>
+ <h1>
+ <a href="https://reproduce.debian.net">reproduce</a>.debian.net/<a href="https://amd64-pull184.reproduce.debian.net">amd64-pull184</a>
+ </h1>
+ <h3>
+ running https://github.com/kpcyrd/rebuilderd/pull/184
+ </h3>
+ <a href="stats/rb.png"><img src="stats/rb.png" align="right"></a>
+ <h3>
+ trixie,
+ <a href="https://amd64-pull184.reproduce.debian.net/forky.html">forky</a>,
+ <a href="https://amd64-pull184.reproduce.debian.net/unstable.html">unstable</a>
+ (arch:amd64)
+ </h3>
+ <code>
+ trixie (arch:amd64)
+ </code>
+
+ <div id="stats">Loading stats...</div>
+
+ <div>
+ <h3>Binary package search</h3>
+ <form id="search">
+ <input type="text" id="search-query" placeholder="2ping">
+ <input type="submit" value="Search">
+ </form>
+ </div>
+ <div id="search-results">
+ </div>
+
+ <footer>
+ <br/>
+ <a href="stats/">Statistics about BAD packages</a> on amd64.
+ <br/>
+ <hr/>
+ 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>
+ <a href="https://reproduce.debian.net/">This setup</a> 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.
+ <!--#config timefmt="%Y-%m-%d" --><br/>Static content last modified: <!--#echo var="date_gmt" -->
+ </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/amd64-pull184/unstable.html
=====================================
@@ -0,0 +1,230 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <title>
+ reproduce.debian.net/amd64-pull184 - unstable (arch:amd64)
+ </title>
+ <style>
+ body {
+ font-family: sans-serif;
+ font-size: 18pt;
+ }
+ h1 {
+ font-size: 24pt;
+ }
+ h3 {
+ font-size: 18pt;
+ }
+
+ #search-results {
+ margin: 18pt 0;
+ }
+
+ pre {
+ margin: 0;
+ }
+
+ img {
+ vertical-align: middle;
+ max-width: 1920;
+ width: 50%;
+ }
+
+ #search-results pre {
+ margin: 12pt 0;
+ }
+
+ .status {
+ font-weight: bold;
+ }
+
+ .good {
+ color: green;
+ }
+
+ .bad {
+ color: red;
+ }
+
+ .unknown {
+ color: #957fff;
+ }
+
+ footer {
+ font-size: 12pt;
+ }
+ </style>
+ <script>
+ document.addEventListener('DOMContentLoaded', function() {
+ // package search
+ 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 searchPkgs(query) {
+ let div = document.getElementById('search-results');
+ let url = '/amd64-pull184/api/v1/pkgs/list?' + new URLSearchParams({
+ name: query,
+ distro: 'debian',
+ release: 'unstable',
+ });
+ fetch(url)
+ .then(response => response.json())
+ .then(data => {
+ // clear children
+ div.innerHTML = '';
+
+ data.map(pkg => {
+ let build_id = pkg.build_id;
+ let r = document.createElement('pre');
+
+ r.appendChild(spanWith('['));
+ let status = pkg['status'];
+ let statusSpan = spanWith(status);
+ statusSpan.className += ' status';
+ if (status == 'GOOD') {
+ statusSpan.className += ' good';
+ } else if (status == 'BAD') {
+ statusSpan.className += ' bad';
+ } else {
+ statusSpan.className += ' unknown';
+ }
+ r.appendChild(statusSpan);
+ r.appendChild(spanWith(`] ${pkg['name']} ${pkg['version']}\t\t`));
+
+ if (build_id) {
+ r.appendChild(spanWith(' ['));
+ r.appendChild(linkTo(`/amd64-pull184/api/v1/builds/${build_id}/log`, 'log'));
+ r.appendChild(spanWith(']'));
+ }
+
+ if (pkg.has_attestation) {
+ r.appendChild(spanWith(' ['));
+ r.appendChild(linkTo(`/amd64-pull184/api/v1/builds/${build_id}/attestation`, 'attestation'));
+ r.appendChild(spanWith(']'));
+ }
+
+ if (pkg.has_diffoscope) {
+ r.appendChild(spanWith(' ['));
+ r.appendChild(linkTo(`/amd64-pull184/api/v1/builds/${build_id}/diffoscope`, 'diffoscope'));
+ r.appendChild(spanWith(']'));
+ }
+
+ div.appendChild(r);
+ });
+ });
+ }
+
+ if (location.hash) {
+ searchPkgs(location.hash.substr(1));
+ }
+
+ document.getElementById('search').addEventListener('submit', function(e) {
+ e.preventDefault();
+ let query = document.getElementById('search-query').value;
+ location.href = `#${query}`;
+ searchPkgs(query);
+ });
+
+ // display stats
+ function updateStats(data) {
+ let div = document.getElementById('stats');
+ // clear children
+ div.innerHTML = '';
+ // add rows
+ data.map(row => {
+ let r = document.createElement('pre');
+ let key = row[0] + ': ';
+ r.textContent = key.padEnd(25) + row[1];
+ div.appendChild(r);
+ });
+ }
+
+ function fetchStats() {
+ fetch('/amd64-pull184/api/v1/dashboard?release=unstable')
+ .then(response => response.json())
+ .then(data => {
+ let div = document.getElementById('stats');
+ let main = data;
+
+ let good = main['good'];
+ let bad = main['bad'];
+ let unknown = main['unknown'];
+
+ let queue = data['queue_length'];
+ let workers = data['active_builds'].length;
+
+ updateStats([
+ ['reproduced', (100 / (good + bad) * good).toFixed(2) + '%'],
+ ['good', good],
+ ['bad', bad],
+ ['unknown (binary pkgs)', unknown],
+ ['build progress', (100 / (good + unknown + bad) * (good + bad)).toFixed(2) + '%'],
+ ['queue length (src pkgs)', queue],
+ ['active workers', workers],
+ ]);
+ });
+ }
+
+ setInterval(fetchStats, 60 * 1000);
+ fetchStats();
+ });
+ </script>
+ </head>
+ <body>
+ <h1>
+ <a href="https://reproduce.debian.net">reproduce</a>.debian.net/<a href="https://amd64-pull184.reproduce.debian.net">amd64-pull184</a>
+ </h1>
+ <h3>
+ running https://github.com/kpcyrd/rebuilderd/pull/184
+ </h3>
+ <a href="stats/rb.png"><img src="stats/rb.png" align="right"></a>
+ <h3>
+ <a href="https://amd64-pull184.reproduce.debian.net/trixie.html">trixie</a>,
+ <a href="https://amd64-pull184.reproduce.debian.net/forky.html">forky</a>,
+ unstable
+ (arch:amd64)
+ </h3>
+ <code>
+ unstable (arch:amd64)
+ </code>
+
+ <div id="stats">Loading stats...</div>
+
+ <div>
+ <h3>Binary package search</h3>
+ <form id="search">
+ <input type="text" id="search-query" placeholder="2ping">
+ <input type="submit" value="Search">
+ </form>
+ </div>
+ <div id="search-results">
+ </div>
+
+ <footer>
+ <br/>
+ <a href="stats/">Statistics about BAD packages</a> on amd64.
+ <br/>
+ <hr/>
+ 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>
+ <a href="https://reproduce.debian.net/">This setup</a> 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.
+ <!--#config timefmt="%Y-%m-%d" --><br/>Static content last modified: <!--#echo var="date_gmt" -->
+ </br>
+ contact: IRC preferred: #debian-reproducible on OFTC or mail to holger at d.o
+ </small>
+ </footer>
+ </body>
+</html>
View it on GitLab: https://salsa.debian.org/qa/jenkins.debian.net/-/commit/063dea8d0e87ef09015c38bff53921deafa93054
--
View it on GitLab: https://salsa.debian.org/qa/jenkins.debian.net/-/commit/063dea8d0e87ef09015c38bff53921deafa93054
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/20250822/1d004242/attachment-0001.htm>
More information about the Qa-jenkins-scm
mailing list