[Git][qa/jenkins.debian.net][master] r.d.n: prepare https://all.r.d.n

Holger Levsen (@holger) gitlab at salsa.debian.org
Mon Feb 10 13:29:21 GMT 2025



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


Commits:
4f8de2a5 by Holger Levsen at 2025-02-10T14:29:09+01:00
r.d.n: prepare https://all.r.d.n

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

- - - - -


2 changed files:

- hosts/osuosl5-amd64/etc/nginx/nginx.conf
- + hosts/osuosl5-amd64/var/www/html/index_all.html


Changes:

=====================================
hosts/osuosl5-amd64/etc/nginx/nginx.conf
=====================================
@@ -257,6 +257,55 @@ http {
 
     }
 
+    server {
+        server_name     all.reproduce.debian.net;
+        ssi on;
+        index index_all.html;
+        root /var/www/html;
+
+        listen 443 ssl;
+        ssl_certificate /var/lib/dehydrated/certs/all.reproduce.debian.net/fullchain.pem;
+        ssl_certificate_key /var/lib/dehydrated/certs/all.reproduce.debian.net/privkey.pem;
+
+        ssl_session_cache shared:le_nginx_SSL:10m;
+        ssl_session_timeout 1440m;
+        ssl_session_tickets off;
+        ssl_protocols TLSv1.2 TLSv1.3;
+        ssl_prefer_server_ciphers off;
+        ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-C
+        HACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";
+
+        location /.well-known/acme-challenge/ {
+            alias /var/lib/dehydrated/acme-challenges/;
+            disable_symlinks off;
+            autoindex off;
+        }
+
+        location / {
+            # First attempt to serve request as file, then
+            # as directory, then fall back to displaying a 404.
+            try_files $uri $uri/ =404;
+        }
+
+        location /api/ {
+            proxy_set_header    X-Real-IP          $remote_addr;
+            proxy_pass http://127.0.0.1:8489;
+        }
+        location = /api/v0/build/report {
+            client_max_body_size 200M;
+            proxy_set_header    X-Real-IP          $remote_addr;
+            proxy_pass http://127.0.0.1:8489;
+        }
+
+	location /stats/ {
+            alias /srv/rebuilderd/all/stats/ ;
+            disable_symlinks off;
+            autoindex on;
+            index index.html;
+        }
+
+    }
+
     server {
         server_name     reproduce.debian.net;
         ssi on;


=====================================
hosts/osuosl5-amd64/var/www/html/index_all.html
=====================================
@@ -0,0 +1,226 @@
+<!DOCTYPE html>
+<html lang="en">
+    <head>
+        <meta charset="utf-8">
+        <title>
+		all.reproduce.debian.net - trixie (arch:all)
+        </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;
+        }
+
+        #search-results pre {
+            margin: 12pt 0;
+        }
+
+        .status {
+            font-weight: bold;
+        }
+
+        .good {
+            color: green;
+        }
+
+        .bad {
+            color: red;
+        }
+
+        .unknown {
+            color: #957fff;
+        }
+
+        footer {
+            font-size: 12pt;
+            margin: 30pt 0;
+        }
+        </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 = '/api/v0/pkgs/list?' + new URLSearchParams({
+                    name: query,
+                    distro: 'debian',
+                });
+                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(`/api/v0/builds/${build_id}/log`, 'log'));
+                                r.appendChild(spanWith(']'));
+                            }
+
+                            if (pkg.has_attestation) {
+                                r.appendChild(spanWith(' ['));
+                                r.appendChild(linkTo(`/api/v0/builds/${build_id}/attestation`, 'attestation'));
+                                r.appendChild(spanWith(']'));
+                            }
+
+                            if (pkg.has_diffoscope) {
+                                r.appendChild(spanWith(' ['));
+                                r.appendChild(linkTo(`/api/v0/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(20) + row[1];
+                    div.appendChild(r);
+                });
+            }
+
+            function fetchStats() {
+                fetch('/api/v0/dashboard')
+                    .then(response => response.json())
+                    .then(data => {
+                        let div = document.getElementById('stats');
+                        let main = data['suites']['main'];
+
+                        let good = main['good'];
+                        let bad = main['bad'];
+                        let unknown = main['unknown'];
+
+                        updateStats([
+                            ['good', good],
+                            ['bad', bad],
+                            ['unknown', unknown],
+                            ['build progress', (100 / (good + unknown + bad) * (good + bad)).toFixed(2) + '%'],
+                            ['repro', (100 / (good + bad) * good).toFixed(2) + '%'],
+                        ]);
+                    });
+            }
+
+            setInterval(fetchStats, 60 * 1000);
+            fetchStats();
+        });
+        </script>
+    </head>
+    <body>
+        <img src="/stats/rb.png" align="right">
+        <h1>
+		all.reproduce.debian.net
+        </h1>
+        <h3>
+		trixie (arch:all)
+        </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>
+            pew pew, <a href="https://github.com/kpcyrd/rebuilderd">rebuilderd</a> using <a href="https://tracker.debian.org/pkg/devscripts">debrebuild</a> (with <a href="https://tracker.debian.org/pkg/sbuild">sbuild+unshare</a> as backend) to reproduce what Debian distributes via <code><a href="https://deb.debian.org/debian/dists/">deb.debian.org</a></code>. ♥️
+	    <br/>
+	    <a href="https://reproduce.debian.net">https://reproduce.debian.net</a>
+		/ all
+		/ <a href="https://arm64.reproduce.debian.net">amd64</a>
+		/ <a href="https://arm64.reproduce.debian.net">arm64</a>
+		/ <a href="https://armhf.reproduce.debian.net">armhf</a>
+		/ <a href="https://i386.reproduce.debian.net">i386</a>
+		/ <a href="https://riscv64.reproduce.debian.net">riscv64</a>
+	    <br/>
+	    <a href="/stats/">Statistics about BAD packages</a> on all.
+	    <br/>
+	    <a href="/api/v0/pkgs/list">/api/v0/pkgs/list</a> (JSON)
+	    / <a href="/stats/db-backup/">rebuilderd database backups</a>
+	    <br/>
+	    <code>
+		# How to judge your own systen:
+		<br/>
+		sudo apt install <a href="https://tracker.debian.org/rust-debian-repro-status">debian-repro-status</a> ; debian-repro-status
+	    </code>
+	    <br/>
+	    <small>
+		<hr/>
+		This setup is in it's infancy, though by now everything except rebuilderd itself 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/4f8de2a570cfe77795ed52186b7aef1cc21395c4

-- 
View it on GitLab: https://salsa.debian.org/qa/jenkins.debian.net/-/commit/4f8de2a570cfe77795ed52186b7aef1cc21395c4
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/20250210/3ba03d35/attachment-0001.htm>


More information about the Qa-jenkins-scm mailing list