[Git][qa/jenkins.debian.net][master] rdn: Add basic excuses page
Holger Levsen (@holger)
gitlab at salsa.debian.org
Fri Sep 26 09:12:57 BST 2025
Holger Levsen pushed to branch master at Debian QA / jenkins.debian.net
Commits:
0bbb057c by Jochen Sprickerhof at 2025-09-26T10:12:45+02:00
rdn: Add basic excuses page
(cherry picked from commit c21af623b5b5f3cabe049de9ea21dd9c680f1a55)
Signed-off-by: Holger Levsen <holger at layer-acht.org>
- - - - -
1 changed file:
- + hosts/osuosl5-amd64/var/www/html/excuses.html
Changes:
=====================================
hosts/osuosl5-amd64/var/www/html/excuses.html
=====================================
@@ -0,0 +1,151 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <title>
+ reproduce.debian.net - Excuses
+ </title>
+ <style>
+ body {
+ font-family: sans-serif;
+ font-size: 14pt;
+ }
+ h1 {
+ font-size: 24pt;
+ }
+ pre {
+ margin: 0;
+ }
+
+ .status {
+ font-weight: bold;
+ }
+
+ .good {
+ color: green;
+ }
+
+ .fail {
+ color: yellow;
+ }
+
+ .bad {
+ color: red;
+ }
+
+ .unknown {
+ color: #957fff;
+ }
+
+ footer {
+ font-size: 12pt;
+ }
+ </style>
+ <script>
+ document.addEventListener('DOMContentLoaded', function() {
+ 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(div, query, arch) {
+ let a = document.createElement('pre');
+ a.appendChild(spanWith(`${arch}`));
+ div.appendChild(a);
+
+ let url = `/${arch}/api/v1/packages/binary?` + new URLSearchParams({
+ name: query,
+ distro: 'debian',
+ release: 'unstable',
+ seen_only: 'true',
+ });
+ fetch(url)
+ .then(response => response.json())
+ .then(data => {
+ let result = data['records'];
+
+ result.map(pkg => {
+ let build_id = pkg.build_id;
+ let artifact_id = pkg.artifact_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 == 'FAIL') {
+ statusSpan.className += ' fail';
+ } 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(`/${arch}/api/v1/builds/${build_id}/log`, 'log'));
+ r.appendChild(spanWith(']'));
+ }
+
+ if (pkg.attestation_log_id) {
+ r.appendChild(spanWith(' ['));
+ r.appendChild(linkTo(`/${arch}/api/v1/builds/${build_id}/artifacts/${artifact_id}/attestation`, 'attestation'));
+ r.appendChild(spanWith(']'));
+ }
+
+ if (pkg.diffoscope_log_id) {
+ r.appendChild(spanWith(' ['));
+ r.appendChild(linkTo(`/${arch}/api/v1/builds/${build_id}/artifacts/${artifact_id}/diffoscope`, 'diffoscope'));
+ r.appendChild(spanWith(']'));
+ }
+
+ a.appendChild(r);
+ });
+ });
+ }
+
+ function fetchStats() {
+ let div = document.getElementById('search-results');
+ // clear children
+ div.innerHTML = '';
+ const archs = ["all", "amd64", "arm64", "armel", "armhf", "i386", "ppc64el", "riscv64"];
+ let query = location.hash.substr(1);
+ archs.forEach(arch => searchPkgs(div, query, arch));
+ }
+
+ fetchStats();
+ });
+ </script>
+ </head>
+ <body>
+ <h1>reproduce.debian.net</h1>
+ </div>
+ <div id="search-results">
+ </div>
+
+ <footer>
+ <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/0bbb057c1bc76f94a42434e6b5d6dd849f95b4ca
--
View it on GitLab: https://salsa.debian.org/qa/jenkins.debian.net/-/commit/0bbb057c1bc76f94a42434e6b5d6dd849f95b4ca
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/20250926/f2a2389d/attachment-0001.htm>
More information about the Qa-jenkins-scm
mailing list