ci: Enable ccache for buildroot
I wanted to use a persistent volume for the workspace volume of this Jenkins pipeline in order to speed up subsequent builds. Unfortunately, this feature does not really work well in Jenkins. Since the agent is removed when the build completes, and therefore the volume is not mounted anywhere, Jenkins cannot delete workspaces for deleted jobs. This means that when feature branches/pull requests are merged, their workspaces remain on disk forever. Using the *dynamicPVC* option deletes the entire volume when the job finishes. This avoids wasting space, but does not allow subsequent builds to reuse the workspace. As a compromise, we can use a persistent volume for the compiler cache and share it between builds. Using the compiler cache is not as effective as keeping the whole build directory, but it still saves some time. Also, it works across branches, too.master
parent
5f0d0cade4
commit
4f4fd0d6bf
|
@ -5,9 +5,7 @@ pipeline {
|
|||
kubernetes {
|
||||
yamlFile 'ci/podTemplate.yaml'
|
||||
defaultContainer 'buildroot'
|
||||
workspaceVolume persistentVolumeClaimWorkspaceVolume(
|
||||
claimName: 'jenkins-ws-pythonctnr'
|
||||
)
|
||||
workspaceVolume dynamicPVC()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -16,20 +14,9 @@ pipeline {
|
|||
disableConcurrentBuilds()
|
||||
}
|
||||
|
||||
parameters {
|
||||
booleanParam \
|
||||
name: 'Clean',
|
||||
description: 'Clean the workspace and perform a full rebuild'
|
||||
}
|
||||
|
||||
stages {
|
||||
stage('Prepare') {
|
||||
steps {
|
||||
script {
|
||||
if (params.Clean) {
|
||||
sh 'rm -rf _build'
|
||||
}
|
||||
}
|
||||
checkout poll: false, scm: [
|
||||
$class: 'GitSCM',
|
||||
branches: [[name: '2022.05.x']],
|
||||
|
|
|
@ -7,9 +7,14 @@ spec:
|
|||
command:
|
||||
- sleep
|
||||
- infinity
|
||||
env:
|
||||
- name: HOME
|
||||
value: /home/jenkins
|
||||
volumeMounts:
|
||||
- name: tmp
|
||||
mountPath: /tmp
|
||||
- name: br2-ccache
|
||||
mountPath: /home/jenkins/.buildroot-ccache
|
||||
securityContext:
|
||||
readOnlyRootFilesystem: true
|
||||
runAsUser: 1000
|
||||
|
@ -25,3 +30,6 @@ spec:
|
|||
emptyDir:
|
||||
medium: Memory
|
||||
sizeLimit: 100Mi
|
||||
- name: br2-ccache
|
||||
persistentVolumeClaim:
|
||||
claimName: jenkins-br2-ccache
|
||||
|
|
|
@ -5,10 +5,10 @@
|
|||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: jenkins-ws-pythonctnr
|
||||
name: jenkins-br2-ccache
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 10Gi
|
||||
storage: 20Gi
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
BR2_x86_64=y
|
||||
BR2_CCACHE=y
|
||||
BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
|
||||
BR2_TARGET_GENERIC_HOSTNAME="pythonctnr"
|
||||
BR2_TARGET_GENERIC_ISSUE=""
|
||||
|
|
Loading…
Reference in New Issue