pipeline { agent any environment { BUILD_ENV = "pcb_rev_1-4_serial" PIO_HOME_DIR = "${WORKSPACE}/.pio" } 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('🧹 Cleanup') { steps { deleteDir() } } // Kein Checkout nötig – SCM ist über UI definiert stage('🧰 Setup PlatformIO') { steps { dir('Software') { sh ''' python3 -m venv .venv . .venv/bin/activate 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 ''' . .venv/bin/activate platformio run -e ${params.BUILD_ENV} ''' } } } stage('📦 Archive Firmware') { steps { archiveArtifacts artifacts: "Software/.pio/build/${params.BUILD_ENV}/firmware.bin", fingerprint: true } } stage('🔌 Flash Hardware (Dummy)') { steps { echo "TODO: Flashen mit z.B. esptool oder PySerial in Hardware/flash.py" } } stage('🧠 Run Tests (Dummy)') { steps { dir('Testing') { echo "TODO: Starte Tests mit Testing/test_runner.py oder pytest" } } } } post { success { echo "✅ CI abgeschlossen – Firmware gebaut, Tests vorbereitet" } failure { echo "❌ Fehler im Build – schau in die Logs, Commander" } } }