ci: Use persistent volumes for portage, binpkgs

Recompiling the entire OS for every build takes way too long for
development purposes.  Since we build binary packages anyway, let's keep
them around between builds by storing them on a Kubernetes persistent
volume.

Eventually, I want add a build parameter to wipe out the binary package
storage to force a from-scratch build.  We'll use that option for robust
periodic builds, once development has slowed down.
main
Dustin 2024-12-22 20:29:33 -06:00
parent 4ded67f1f4
commit 735600a31f
3 changed files with 27 additions and 4 deletions

6
ci/Jenkinsfile vendored
View File

@ -9,6 +9,12 @@ pipeline {
}
stages {
stage('Prepare') {
steps {
sh '. ./prepare.sh'
}
}
stage('Build') {
steps {
sh 'env -i PATH="${PATH}" make -C aimee-os CONFIGDIR=${PWD} O=/build'

View File

@ -21,12 +21,21 @@ spec:
name: workspace-volume
subPath: gentoo
- mountPath: /usr/aarch64-unknown-linux-gnu/var/cache/binpkgs
name: workspace-volume
subPath: binpkgs
name: binpkgs
subPath: photoframe2
- mountPath: /var/cache/binpkgs
name: workspace-volume
subPath: binpkgs
name: binpkgs
subPath: photoframe2
- mountPath: /var/cache/distfiles
name: workspace-volume
subPath: distfiles
- mountPath: /var/db/repos/gentoo
name: portage
hostUsers: false
volumes:
- name: binpkgs
persistentVolumeClaim:
claimName: binpkgs
- name: portage
persistentVolumeClaim:
claimName: portage

8
prepare.sh Normal file
View File

@ -0,0 +1,8 @@
#!/bin/sh
if [ ! -f /var/db/repos/gentoo/metadata/timestamp ]; then
emerge-webrsync
fi
if [ "$(find /var/db/repos/gentoo/metadata -newermt '-24 hours' | wc -l)" -eq 0 ]; then
emaint sync
fi