110 lines
3.2 KiB
Groovy
110 lines
3.2 KiB
Groovy
pipeline {
|
||
agent any
|
||
|
||
environment {
|
||
BUILD_ENV = "pcb_rev_1-4_serial"
|
||
PIO_HOME_DIR = "${WORKSPACE}/.pio"
|
||
VENV_PATH = "${WORKSPACE}/Software/.venv"
|
||
}
|
||
|
||
parameters {
|
||
choice(
|
||
name: 'BUILD_ENV',
|
||
choices: ['pcb_rev_1-2_serial', 'pcb_rev_1-3_serial', 'pcb_rev_1-4_serial'],
|
||
description: 'Firmware-Umgebung auswählen'
|
||
)
|
||
}
|
||
|
||
stages {
|
||
|
||
stage('🧰 Setup PlatformIO') {
|
||
steps {
|
||
dir('Software') {
|
||
sh """
|
||
[ -d .venv ] || python3 -m venv .venv
|
||
${env.VENV_PATH}/bin/pip install --upgrade pip platformio
|
||
"""
|
||
}
|
||
}
|
||
}
|
||
|
||
stage('📄 Dummy WiFi-Creds') {
|
||
steps {
|
||
dir('Software') {
|
||
writeFile file: 'wifi_credentials.ini', text: '''
|
||
[wifi_cred]
|
||
wifi_ssid_client = DummySSID
|
||
wifi_password_client = DummyPass
|
||
admin_password = Admin123
|
||
wifi_ap_password = DummyAP
|
||
'''.stripIndent()
|
||
}
|
||
}
|
||
}
|
||
|
||
stage('🧪 Build Firmware') {
|
||
steps {
|
||
dir('Software') {
|
||
sh """
|
||
${env.VENV_PATH}/bin/platformio run -e ${params.BUILD_ENV}
|
||
"""
|
||
}
|
||
}
|
||
}
|
||
|
||
stage('📦 Find & Archive Firmware') {
|
||
steps {
|
||
dir('Software') {
|
||
script {
|
||
echo "🔍 Suche nach Firmware (.fw.bin) und Filesystem (.fs.gz) Artefakten..."
|
||
|
||
def firmwareFiles = findFiles(glob: '.pio/build/**/*.fw.bin')
|
||
def fsFiles = findFiles(glob: '.pio/build/**/*.fs.gz')
|
||
|
||
if (firmwareFiles.length == 0 && fsFiles.length == 0) {
|
||
echo "⚠️ Keine passenden Artefakte (.fw.bin / .fs.gz) gefunden – nichts zu archivieren."
|
||
} else {
|
||
firmwareFiles.each { echo "📦 Firmware: ${it.path}" }
|
||
fsFiles.each { echo "📦 Filesystem: ${it.path}" }
|
||
|
||
def allArtifacts = (firmwareFiles + fsFiles).collect { it.path }
|
||
archiveArtifacts artifacts: allArtifacts.join(', ')
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
stage('🔌 Flash Hardware (Dummy)') {
|
||
steps {
|
||
echo "TODO: Flash-Script aufrufen, z. B.: python3 Hardware/flash.py /dev/ttyUSB0"
|
||
}
|
||
}
|
||
|
||
stage('🧠 Run Tests (Dummy)') {
|
||
steps {
|
||
dir('Testing') {
|
||
echo "TODO: Testing mit z. B.: python3 test_runner.py oder pytest starten"
|
||
}
|
||
}
|
||
}
|
||
|
||
stage('🧹 Cleanup Build Output') {
|
||
steps {
|
||
dir('Software') {
|
||
sh "rm -rf .pio"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
post {
|
||
success {
|
||
echo "✅ CI abgeschlossen – Firmware gebaut, Dummy-Stages bereit"
|
||
}
|
||
failure {
|
||
echo "❌ Fehler im Build – Logs checken, Commander Seraphon"
|
||
}
|
||
}
|
||
}
|