[Git][qa/jenkins.debian.net][master] 2 commits: r.d.n.: no /srv/workspace on ppc64el-rdn nodes
Holger Levsen (@holger)
gitlab at salsa.debian.org
Fri Apr 11 19:25:14 BST 2025
Holger Levsen pushed to branch master at Debian QA / jenkins.debian.net
Commits:
89165627 by Holger Levsen at 2025-04-11T18:44:25+02:00
r.d.n.: no /srv/workspace on ppc64el-rdn nodes
Signed-off-by: Holger Levsen <holger at layer-acht.org>
- - - - -
699789a5 by Holger Levsen at 2025-04-11T19:30:48+02:00
r.d.n.: add ppc64el.reproduce.debian.net
Signed-off-by: Holger Levsen <holger at layer-acht.org>
- - - - -
14 changed files:
- bin/debrebuild_cache_limiter.sh
- bin/djm
- bin/rebuilderd_manual_scheduler.sh
- bin/rebuilderd_pkgsync.sh
- bin/reproducible_maintenance.sh
- bin/reproducible_system_health.sh
- hosts/osuosl5-amd64/etc/cron.d/rebuilderd
- hosts/osuosl5-amd64/etc/dehydrated/domains.txt
- hosts/osuosl5-amd64/etc/nginx/nginx.conf
- + hosts/osuosl5-amd64/opt/etc/rebuilderd-sync-ppc64el.conf
- hosts/osuosl5-amd64/var/www/html/index.html
- + hosts/osuosl5-amd64/var/www/html/ppc64el/index.html
- hosts/osuosl5-amd64/var/www/html/rebuilderd-setup.html
- update_jdn.sh
Changes:
=====================================
bin/debrebuild_cache_limiter.sh
=====================================
@@ -11,12 +11,13 @@ if [ ! -d $CACHE ] ; then
fi
case $HOSTNAME in
- ionos17*) LIMIT=50 ;;
- codethink*) LIMIT=20 ;;
- osuosl*) LIMIT=333 ;;
- infom07*) LIMIT=200 ;; # FIXME: drop extra partition again?
- infom08*) LIMIT=100 ;;
- riscv64*) LIMIT=180 ;;
+ ionos17*) LIMIT=50 ;;
+ codethink*) LIMIT=20 ;;
+ osuosl*-amd64) LIMIT=333 ;;
+ osuosl*-ppc64el) LIMIT=100 ;;
+ infom07*) LIMIT=200 ;; # FIXME: drop extra partition again?
+ infom08*) LIMIT=100 ;;
+ riscv64*) LIMIT=180 ;;
*) echo "Limit for $HOSTNAME not defined."
exit 1 ;;
esac
=====================================
bin/djm
=====================================
@@ -446,6 +446,7 @@ get_arch_color() {
*arm64*) BG=orange ;;
*armhf*) BG=lightyellow ;;
*riscv64*) BG=purple ;;
+ *ppc64el*) BG=brown ;;
*jenkins.debian.*) BG=yellow ;;
rb-mail*) BG=pink ;;
*) BG=white ;;
=====================================
bin/rebuilderd_manual_scheduler.sh
=====================================
@@ -21,6 +21,8 @@ case $1 in
;;
riscv64) PORT=8488
;;
+ ppc64el) PORT=8490
+ ;;
*) echo "need a valid architecture."
exit 1
;;
=====================================
bin/rebuilderd_pkgsync.sh
=====================================
@@ -25,6 +25,8 @@ case $ARCH in
;;
riscv64) PORT=8488
;;
+ ppc64el) PORT=8490
+ ;;
*) echo "need a valid architecture."
exit 1
;;
=====================================
bin/reproducible_maintenance.sh
=====================================
@@ -502,6 +502,7 @@ if [ "$HOSTNAME" = "$MAINNODE" ] ; then
arm64) NODE="codethink${NODE_ALIAS#codethink}-arm64.debian.net" ;;
armhf) NODE="${NODE_ALIAS}-armhf-rb.debian.net" ;;
riscv64) NODE="${NODE_ALIAS}.debian.net" ;;
+ ppc64el) NODE="${NODE_ALIAS}.debian.net" ;;
esac
case "$NODE" in
ionos9-amd64.debian.net|ionos10-amd64.debian.net)
=====================================
bin/reproducible_system_health.sh
=====================================
@@ -1,7 +1,7 @@
#!/bin/bash
# vim: set noexpandtab:
-# Copyright 2021-2024 Holger Levsen <holger at layer-acht.org>
+# Copyright 2021-2025 Holger Levsen <holger at layer-acht.org>
# released under the GPLv2
###
@@ -101,6 +101,7 @@ for JOB_NAME in $(ls -1d reproducible_* | sort ) ; do
case $NODE_ARCH in
armhf) NODE="$NODE_ALIAS-armhf-rb.debian.net" ;;
riscv64) NODE="${NODE_ALIAS}.debian.net" ;;
+ ppc64el) NODE="${NODE_ALIAS}.debian.net" ;;
*) NODE="${NODE_ALIAS}-${NODE_ARCH}.debian.net" ;;
esac
# ignore jobs on known bad nodes:
=====================================
hosts/osuosl5-amd64/etc/cron.d/rebuilderd
=====================================
@@ -1,3 +1,3 @@
MAILTO=root
-42 */3 * * * rebuilderd for arch in all amd64 i386 arm64 armhf riscv64 ; do mkdir -p /srv/rebuilderd/$arch/stats/ && /srv/jenkins/bin/rebuilderd_stats.py $arch /srv/rebuilderd/$arch/rebuilderd.db > /srv/rebuilderd/$arch/stats/index.html.tmp && mv /srv/rebuilderd/$arch/stats/index.html.tmp /srv/rebuilderd/$arch/stats/index.html ; done
-23 0,6,12,18 * * * rebuilderd for arch in all amd64 i386 arm64 armhf riscv64 ; do /srv/jenkins/bin/rebuilderd_graph.sh $arch ; done
+42 */3 * * * rebuilderd for arch in all amd64 i386 arm64 armhf riscv64 ppc64el; do mkdir -p /srv/rebuilderd/$arch/stats/ && /srv/jenkins/bin/rebuilderd_stats.py $arch /srv/rebuilderd/$arch/rebuilderd.db > /srv/rebuilderd/$arch/stats/index.html.tmp && mv /srv/rebuilderd/$arch/stats/index.html.tmp /srv/rebuilderd/$arch/stats/index.html ; done
+23 0,6,12,18 * * * rebuilderd for arch in all amd64 i386 arm64 armhf riscv64 ppc64el ; do /srv/jenkins/bin/rebuilderd_graph.sh $arch ; done
=====================================
hosts/osuosl5-amd64/etc/dehydrated/domains.txt
=====================================
@@ -4,4 +4,5 @@ i386.reproduce.debian.net
arm64.reproduce.debian.net
armhf.reproduce.debian.net
riscv64.reproduce.debian.net
+ppc64el.reproduce.debian.net
all.reproduce.debian.net
=====================================
hosts/osuosl5-amd64/etc/nginx/nginx.conf
=====================================
@@ -21,6 +21,7 @@ http {
server_name arm64.reproduce.debian.net;
server_name armhf.reproduce.debian.net;
server_name riscv64.reproduce.debian.net;
+ server_name ppc64el.reproduce.debian.net;
location /.well-known/acme-challenge/ {
alias /var/lib/dehydrated/acme-challenges/;
disable_symlinks off;
@@ -139,6 +140,20 @@ http {
alias /srv/rebuilderd/riscv64/stats/ ;
disable_symlinks off;
}
+ # ppc64el
+ location /ppc64el/api/ {
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_pass http://127.0.0.1:8490/api/;
+ }
+ location = /ppc64el/api/v0/build/report {
+ client_max_body_size 200M;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_pass http://127.0.0.1:8490/api/v0/build/report;
+ }
+ location /ppc64el/stats/ {
+ alias /srv/rebuilderd/ppc64el/stats/ ;
+ disable_symlinks off;
+ }
}
server {
@@ -287,5 +302,28 @@ http {
}
}
+ server {
+ server_name ppc64el.reproduce.debian.net;
+ ssi on;
+ root /var/www/html;
+ listen 443 ssl;
+ ssl_certificate /var/lib/dehydrated/certs/ppc64el.reproduce.debian.net/fullchain.pem;
+ ssl_certificate_key /var/lib/dehydrated/certs/ppc64el.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 / {
+ return 301 https://reproduce.debian.net/ppc64el$request_uri;
+ }
+ }
}
=====================================
hosts/osuosl5-amd64/opt/etc/rebuilderd-sync-ppc64el.conf
=====================================
@@ -0,0 +1,9 @@
+[profile."debian-main"]
+distro = "debian"
+suite = "main"
+architectures = ["ppc64el"]
+#releases = ["buster", "sid"]
+releases = ["trixie"]
+source = "http://deb.debian.org/debian"
+#excludes = ["tensorflow*"]
+#pkgs = ["anarchism"]
=====================================
hosts/osuosl5-amd64/var/www/html/index.html
=====================================
@@ -28,11 +28,11 @@
display: inline;
}
- #stats-all, #stats-amd64, #stats-arm64, #stats-armhf, #stats-i386, #stats-riscv64{
+ #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{
+ #worker, #progress-all, #progress-amd64, #progress-arm64, #progress-armhf, #progress-i386, #progress-riscv64, #progress-ppc64el{
font-size: 10pt;
}
@@ -95,6 +95,7 @@
fetchArchStats("armhf");
fetchArchStats("i386");
fetchArchStats("riscv64");
+ fetchArchStats("ppc64el");
}
function fetchArchStats(arch) {
@@ -168,7 +169,7 @@
</td><td>
<div id="progress-amd64">Loading progress...</div>
</td><td id="worker">
- osuosl4
+ osuosl4-amd64
</td></tr><tr><td>
<a href="https://reproduce.debian.net/arm64/">
trixie/arm64
@@ -225,6 +226,20 @@
<div id="progress-riscv64">Loading progress...</div>
</td><td id="worker">
riscv64-0(1|2|6|7)
+ </td></tr><tr><td>
+ <a href="https://reproduce.debian.net/ppc64el/">
+ trixie/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/rb.png">
+ </a>
+ </td><td>
+ <div id="progress-ppc64el">Loading progress...</div>
+ </td><td id="worker">
+ osuosl(6|7)-ppc64el
</td></tr>
</table>
<br/>
=====================================
hosts/osuosl5-amd64/var/www/html/ppc64el/index.html
=====================================
@@ -0,0 +1,220 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <title>
+ reproduce.debian.net/ppc64el - trixie (arch:ppc64el)
+ </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 = '/ppc64el/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(`/ppc64el/api/v0/builds/${build_id}/log`, 'log'));
+ r.appendChild(spanWith(']'));
+ }
+
+ if (pkg.has_attestation) {
+ r.appendChild(spanWith(' ['));
+ r.appendChild(linkTo(`/ppc64el/api/v0/builds/${build_id}/attestation`, 'attestation'));
+ r.appendChild(spanWith(']'));
+ }
+
+ if (pkg.has_diffoscope) {
+ r.appendChild(spanWith(' ['));
+ r.appendChild(linkTo(`/ppc64el/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(25) + row[1];
+ div.appendChild(r);
+ });
+ }
+
+ function fetchStats() {
+ fetch('/ppc64el/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'];
+
+ 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/ppc64el
+ </h1>
+ <a href="stats/rb.png"><img src="stats/rb.png" align="right"></a>
+ <h3>
+ trixie (arch:ppc64el)
+ </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 ppc64el.
+ <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 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>
=====================================
hosts/osuosl5-amd64/var/www/html/rebuilderd-setup.html
=====================================
@@ -155,6 +155,8 @@ while true ; do env REBUILDERD_COOKIE_PATH=~/.local/share/rebuilderd-auth-cookie
cd ; mkdir -p riscv64 ; cd riscv64 ; /opt/usr/bin/rebuilderd -c /opt/etc/rebuilderd-riscv64.conf
while true ; do env REBUILDERD_COOKIE_PATH=~/.local/share/rebuilderd-auth-cookie rebuildctl -H http://127.0.0.1:8488 pkgs sync-profile --sync-config /opt/etc/rebuilderd-sync-riscv64.conf debian-main --print-json | jq '.[] | select(.architecture != "all")' | jq -s | env REBUILDERD_COOKIE_PATH=~/.local/share/rebuilderd-auth-cookie rebuildctl -H http://127.0.0.1:8488 pkgs sync-stdin debian main ; ST=$(shuf -i 150-210 -n 1) ; echo sleeping ${ST}m now ; sleep ${ST}m ; done
+cd ; mkdir -p ppc64el ; cd ppc64el ; /opt/usr/bin/rebuilderd -c /opt/etc/rebuilderd-ppc64el.conf
+while true ; do env REBUILDERD_COOKIE_PATH=~/.local/share/rebuilderd-auth-cookie rebuildctl -H http://127.0.0.1:8490 pkgs sync-profile --sync-config /opt/etc/rebuilderd-sync-ppc64el.conf debian-main --print-json | jq '.[] | select(.architecture != "all")' | jq -s | env REBUILDERD_COOKIE_PATH=~/.local/share/rebuilderd-auth-cookie rebuildctl -H http://127.0.0.1:8490 pkgs sync-stdin debian main ; ST=$(shuf -i 150-210 -n 1) ; echo sleeping ${ST}m now ; sleep ${ST}m ; done
# with rebuilderd-worker from trixie:
rebuilderd-worker -c /opt/etc/rebuilderd-worker.conf connect
=====================================
update_jdn.sh
=====================================
@@ -227,13 +227,13 @@ case $HOSTNAME in
exit 1
fi
;;
- osuosl*)
+ osuosl*-amd64)
if ! grep -q '/srv/workspace' /etc/fstab; then
echo "Warning: you need to manually create a /srv/workspace partition on OSUOSL nodes, exiting."
exit 1
fi
;;
- infom07*|infom08*)
+ infom07*|infom08*|*ppc64el)
# runs rebuilderd and we want /tmp on disk
:
;;
View it on GitLab: https://salsa.debian.org/qa/jenkins.debian.net/-/compare/fdbd776ee6d8d60dcad723d7d16cba35cf3f04a2...699789a54142da588172713f733452d3fea37b05
--
View it on GitLab: https://salsa.debian.org/qa/jenkins.debian.net/-/compare/fdbd776ee6d8d60dcad723d7d16cba35cf3f04a2...699789a54142da588172713f733452d3fea37b05
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/20250411/59ed5e10/attachment-0001.htm>
More information about the Qa-jenkins-scm
mailing list