diff --git a/Jenkinsfile b/Jenkinsfile index 7e16d77..8e52d5b 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,6 +1,8 @@ pipeline { agent { kubernetes { + // Keep build I/O off the node's runtime USB drive. + workspaceVolume dynamicPVC(accessModes: 'ReadWriteOnce', requestsSize: '40Gi', storageClassName: 'ci-scratch') defaultContainer 'builder' yaml """ apiVersion: v1 @@ -9,6 +11,9 @@ metadata: labels: app: ariadne spec: + securityContext: + fsGroup: 1000 + fsGroupChangePolicy: OnRootMismatch nodeSelector: kubernetes.io/arch: arm64 affinity: @@ -86,8 +91,9 @@ spec: - --host=tcp://0.0.0.0:2375 - --tls=false volumeMounts: - - name: dind-storage + - name: workspace-volume mountPath: /var/lib/docker + subPath: .cache/docker - name: builder image: registry.bstein.dev/bstein/docker:27 resources: @@ -142,12 +148,8 @@ spec: - name: workspace-volume mountPath: /home/jenkins/agent volumes: - - name: workspace-volume - emptyDir: {} - name: docker-config-writable emptyDir: {} - - name: dind-storage - emptyDir: {} - name: harbor-config secret: secretName: harbor-robot-pipeline @@ -158,6 +160,10 @@ spec: } } environment { + PIP_CACHE_DIR = '/home/jenkins/agent/.cache/pip' + NPM_CONFIG_CACHE = '/home/jenkins/agent/.cache/npm' + SONAR_USER_HOME = '/home/jenkins/agent/.cache/sonar' + TMPDIR = '/home/jenkins/agent/.cache/tmp' REGISTRY = 'registry.bstein.dev/bstein' IMAGE = "${REGISTRY}/ariadne" VERSION_TAG = 'dev' @@ -182,6 +188,11 @@ spec: pollSCM('H/2 * * * *') } stages { + stage('Prepare build scratch') { + steps { + sh 'mkdir -p /home/jenkins/agent/.cache/tmp /home/jenkins/agent/.cache/go-tmp' + } + } stage('Checkout') { steps { checkout scm