From af550857843f25321203d46570b63c6571a4d742 Mon Sep 17 00:00:00 2001 From: "Dustin C. Hatch" Date: Sun, 17 Aug 2025 21:53:24 -0500 Subject: [PATCH] ci: Begin Jenkins pipeline --- ci/Jenkinsfile | 68 +++++++++++++++++++++++++++++++++++++++++++++ ci/podTemplate.yaml | 19 +++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 ci/Jenkinsfile create mode 100644 ci/podTemplate.yaml diff --git a/ci/Jenkinsfile b/ci/Jenkinsfile new file mode 100644 index 0000000..7a04e6f --- /dev/null +++ b/ci/Jenkinsfile @@ -0,0 +1,68 @@ +pipeline { + parameters { + booleanParam 'CLEAN_BUILD' + } + + options { + disableConcurrentBuilds() + } + + agent { + kubernetes { + yamlFile 'ci/podTemplate.yaml' + yamlMergeStrategy merge() + workspaceVolume persistentVolumeClaimWorkspaceVolume( + claimName: 'buildroot-airplaypi' + ) + defaultContainer 'build' + } + } + + environment { + BR2_CCACHE_DIR = "${env.JENKINS_AGENT_WORKDIR}/br2-ccache" + } + + stages { + stage('Clean') { + when { + expression { + return params.CLEAN_BUILD + } + } + steps { + sh 'git clean -fdx' + } + } + + stage('Prepare') { + steps { + container('jnlp') { + sh 'git submodule update --remote aimee-os' + } + } + } + + stage('Build') { + steps { + sh 'make config && make update-config' + sh 'make all' + } + post { + success { + dir('_build') { + archiveArtifacts('.config') + } + dir('_build/images') { + sh 'zstd -f firmware.img' + sh 'zstd -f sdcard.img' + archiveArtifacts([ + 'firmware.img.zst', + 'rootfs.squashfs', + 'sdcard.img.zst', + ].join(',')) + } + } + } + } + } +} diff --git a/ci/podTemplate.yaml b/ci/podTemplate.yaml new file mode 100644 index 0000000..a15cc3b --- /dev/null +++ b/ci/podTemplate.yaml @@ -0,0 +1,19 @@ +spec: + containers: + - name: build + image: git.pyrocufflink.net/containerimages/buildroot + resources: + limits: &resources + cpu: 6 + memory: 12Gi + requests: *resources + volumeMounts: + - mountPath: /etc/ssh/ssh_known_hosts + name: ssh-known-hosts + subPath: ssh_known_hosts + securityContext: + fsGroupChangePolicy: OnRootMismatch + volumes: + - name: ssh-known-hosts + configMap: + name: ssh-known-hosts