mirror of
https://github.com/mysensors/MySensors.git
synced 2026-02-19 17:11:28 +01:00
Update CI pipeline (#1584)
This commit is contained in:
@@ -1,64 +1,82 @@
|
||||
#!groovy
|
||||
|
||||
def buildArduino(config, String buildFlags, String sketch, String key) {
|
||||
def root = '/opt/arduino-1.8.19/'
|
||||
def build_path = 'build'
|
||||
def build_path_cmd = ' -build-path '+build_path+' '
|
||||
if (config.nightly_arduino_ide)
|
||||
{
|
||||
root = '/opt/arduino-nightly/'
|
||||
// patch for nightly arduino-builder
|
||||
}
|
||||
def jenkins_root = '/var/lib/jenkins/'
|
||||
def builder = root+'arduino-builder'
|
||||
def standard_args = ' -warnings=all' //-verbose=true
|
||||
def builder_specifics = ' -hardware '+root+'hardware -tools '+root+'hardware/tools/avr -tools '+
|
||||
root+'tools-builder -built-in-libraries '+root+'libraries'
|
||||
def jenkins_packages = jenkins_root+'.arduino15/packages'
|
||||
def site_specifics = ' -hardware '+jenkins_packages+' -tools '+jenkins_packages
|
||||
def repo_specifics = ' -hardware hardware -libraries . '
|
||||
def build_cmd = builder+standard_args+builder_specifics+site_specifics+repo_specifics+build_path_cmd+buildFlags
|
||||
sh """#!/bin/bash
|
||||
printf "\\e[1m\\e[32mBuilding \\e[34m${sketch} \\e[0musing \\e[1m\\e[36m${build_cmd}\\e[0m\\n"
|
||||
if [ -d ${build_path} ]; then rm -r ${build_path}; fi
|
||||
mkdir ${build_path}
|
||||
${build_cmd} ${sketch} 2>> compiler_${key}.log"""
|
||||
def cli = config.arduino_cli ?: 'arduino-cli'
|
||||
|
||||
// Per-key build dir (so different boards don’t step on each other)
|
||||
def build_path = "build/${key}"
|
||||
def build_path_cmd = "--build-path ${build_path}"
|
||||
|
||||
// Optional parallel jobs (defaults to 4 if nothing is set)
|
||||
def jobs = config.arduino_jobs ?: '4'
|
||||
def jobsOpt = jobs ? "--jobs ${jobs}" : ""
|
||||
|
||||
// If the board-specific flags already contain --warnings, don't add another one
|
||||
def hasWarnings = (buildFlags =~ /--warnings\b/).find()
|
||||
def warningsOpt = hasWarnings ? '' : '--warnings all'
|
||||
|
||||
def libOpt = ""
|
||||
if (config.library_root) {
|
||||
libOpt = "--library \"${config.library_root}\""
|
||||
}
|
||||
|
||||
def build_cmd = "${cli} compile ${buildFlags} ${build_path_cmd} ${warningsOpt} ${libOpt} ${jobsOpt}"
|
||||
|
||||
sh """#!/bin/bash
|
||||
set -e
|
||||
|
||||
printf "\\e[1m\\e[32mBuilding \\e[34m${sketch} \\e[0musing \\e[1m\\e[36m${build_cmd}\\e[0m\\n"
|
||||
|
||||
mkdir -p "${build_path}"
|
||||
|
||||
${build_cmd} "${sketch}" 2>> compiler_${key}.log
|
||||
"""
|
||||
}
|
||||
|
||||
def parseWarnings(String key) {
|
||||
warnings canResolveRelativePaths: false, canRunOnFailed: true, categoriesPattern: '',
|
||||
defaultEncoding: '',
|
||||
excludePattern: '''.*/EEPROM\\.h,.*/Dns\\.cpp,.*/socket\\.cpp,.*/util\\.h,.*/Servo\\.cpp,
|
||||
.*/Adafruit_NeoPixel\\.cpp,.*/UIPEthernet.*,.*/SoftwareSerial\\.cpp,.*/PJON/.*,
|
||||
.*/pins_arduino\\.h,.*/Stream\\.cpp,.*/USBCore\\.cpp,.*/libraries/Wire/.*,
|
||||
.*/hardware/avr.*,.*/hardware/STM32F1.*,.*/hardware/esp8266.*,.*/hardware/esp32.*,
|
||||
.*/libraries/SD/.*,.*/libraries/Ethernet/.*''',
|
||||
def logFile = "compiler_${key}.log"
|
||||
|
||||
healthy: '', includePattern: '', messagesPattern: '',
|
||||
parserConfigurations: [[parserName: 'Arduino/AVR', pattern: 'compiler_'+key+'.log']],
|
||||
unHealthy: '', unstableNewAll: '0', unstableTotalAll: '0'
|
||||
sh """#!/bin/bash
|
||||
echo "Compiler warnings/errors:"
|
||||
printf "\\e[101m"
|
||||
cat compiler_${key}.log
|
||||
printf "\\e[0m"
|
||||
rm compiler_${key}.log"""
|
||||
warnings canResolveRelativePaths: false, canRunOnFailed: true, categoriesPattern: '',
|
||||
defaultEncoding: '',
|
||||
excludePattern: '''.*/EEPROM\\.h,.*/Dns\\.cpp,.*/socket\\.cpp,.*/util\\.h,.*/Servo\\.cpp,
|
||||
.*/Adafruit_NeoPixel\\.cpp,.*/UIPEthernet.*,.*/SoftwareSerial\\.cpp,.*/PJON/.*,
|
||||
.*/pins_arduino\\.h,.*/Stream\\.cpp,.*/USBCore\\.cpp,.*/hardware/.*,.*/libraries/.*''',
|
||||
healthy: '', includePattern: '', messagesPattern: '',
|
||||
parserConfigurations: [[parserName: 'Arduino/AVR', pattern: logFile]],
|
||||
unHealthy: '', unstableNewAll: '0', unstableTotalAll: '0'
|
||||
|
||||
sh """#!/bin/bash
|
||||
echo "Compiler warnings/errors:"
|
||||
printf "\\e[101m"
|
||||
if [ -f "${logFile}" ]; then
|
||||
cat "${logFile}"
|
||||
rm "${logFile}"
|
||||
else
|
||||
echo "Log file ${logFile} not found (build may have failed before compilation)."
|
||||
fi
|
||||
printf "\\e[0m"
|
||||
"""
|
||||
}
|
||||
|
||||
// ---------------------------
|
||||
// Board-specific wrappers
|
||||
// ---------------------------
|
||||
|
||||
def buildMySensorsMicro(config, sketches, String key) {
|
||||
def fqbn = '-fqbn=MySensors:avr:MysensorsMicro:cpu=1Mhz'
|
||||
def fqbn = '--fqbn MySensors:avr:MysensorsMicro:cpu=1Mhz'
|
||||
config.pr.setBuildStatus(config, 'PENDING', 'Toll gate (MySensorsMicro - '+key+')', 'Building...', '${BUILD_URL}flowGraphTable/')
|
||||
try {
|
||||
for (sketch = 0; sketch < sketches.size(); sketch++) {
|
||||
if (sketches[sketch].path != config.library_root+'examples/GatewayESP8266/GatewayESP8266.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP8266MQTTClient/GatewayESP8266MQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP8266SecureMQTTClient/GatewayESP8266SecureMQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP8266OTA/GatewayESP8266OTA.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayGSMMQTTClient/GatewayGSMMQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP32/GatewayESP32.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP32OTA/GatewayESP32OTA.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP32MQTTClient/GatewayESP32MQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/SensebenderGatewaySerial/SensebenderGatewaySerial.ino') {
|
||||
buildArduino(config, fqbn, sketches[sketch].path, key+'_MySensorsMicro')
|
||||
sketches.each { sketch ->
|
||||
if (sketch.path != config.library_root+'examples/GatewayESP8266/GatewayESP8266.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP8266MQTTClient/GatewayESP8266MQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP8266SecureMQTTClient/GatewayESP8266SecureMQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP8266OTA/GatewayESP8266OTA.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayGSMMQTTClient/GatewayGSMMQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP32/GatewayESP32.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP32OTA/GatewayESP32OTA.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP32MQTTClient/GatewayESP32MQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/SensebenderGatewaySerial/SensebenderGatewaySerial.ino') {
|
||||
buildArduino(config, fqbn, sketch.path, key+'_MySensorsMicro')
|
||||
}
|
||||
}
|
||||
} catch (ex) {
|
||||
@@ -81,22 +99,22 @@ def buildMySensorsMicro(config, sketches, String key) {
|
||||
}
|
||||
|
||||
def buildMySensorsGw(config, sketches, String key) {
|
||||
def fqbn = '-fqbn MySensors:samd:mysensors_gw_native'
|
||||
def fqbn = '--fqbn MySensors:samd:mysensors_gw_native'
|
||||
config.pr.setBuildStatus(config, 'PENDING', 'Toll gate (MySensorsGW - '+key+')', 'Building...', '${BUILD_URL}flowGraphTable/')
|
||||
try {
|
||||
for (sketch = 0; sketch < sketches.size(); sketch++) {
|
||||
if (sketches[sketch].path != config.library_root+'examples/BatteryPoweredSensor/BatteryPoweredSensor.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP8266/GatewayESP8266.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP8266MQTTClient/GatewayESP8266MQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP8266SecureMQTTClient/GatewayESP8266SecureMQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP8266OTA/GatewayESP8266OTA.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayGSMMQTTClient/GatewayGSMMQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP32/GatewayESP32.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP32OTA/GatewayESP32OTA.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP32MQTTClient/GatewayESP32MQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewaySerialRS485/GatewaySerialRS485.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/MotionSensorRS485/MotionSensorRS485.ino') {
|
||||
buildArduino(config, fqbn, sketches[sketch].path, key+'_MySensorsGW')
|
||||
sketches.each { sketch ->
|
||||
if (sketch.path != config.library_root+'examples/BatteryPoweredSensor/BatteryPoweredSensor.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP8266/GatewayESP8266.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP8266MQTTClient/GatewayESP8266MQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP8266SecureMQTTClient/GatewayESP8266SecureMQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP8266OTA/GatewayESP8266OTA.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayGSMMQTTClient/GatewayGSMMQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP32/GatewayESP32.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP32OTA/GatewayESP32OTA.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP32MQTTClient/GatewayESP32MQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewaySerialRS485/GatewaySerialRS485.ino' &&
|
||||
sketch.path != config.library_root+'examples/MotionSensorRS485/MotionSensorRS485.ino') {
|
||||
buildArduino(config, fqbn, sketch.path, key+'_MySensorsGW')
|
||||
}
|
||||
}
|
||||
} catch (ex) {
|
||||
@@ -119,19 +137,19 @@ def buildMySensorsGw(config, sketches, String key) {
|
||||
}
|
||||
|
||||
def buildArduinoUno(config, sketches, String key) {
|
||||
def fqbn = '-fqbn arduino:avr:uno'
|
||||
def fqbn = '--fqbn arduino:avr:uno'
|
||||
config.pr.setBuildStatus(config, 'PENDING', 'Toll gate (Arduino Uno - '+key+')', 'Building...', '${BUILD_URL}flowGraphTable/')
|
||||
try {
|
||||
for (sketch = 0; sketch < sketches.size(); sketch++) {
|
||||
if (sketches[sketch].path != config.library_root+'examples/GatewayESP8266/GatewayESP8266.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP8266MQTTClient/GatewayESP8266MQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP8266SecureMQTTClient/GatewayESP8266SecureMQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP8266OTA/GatewayESP8266OTA.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP32/GatewayESP32.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP32OTA/GatewayESP32OTA.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP32MQTTClient/GatewayESP32MQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/SensebenderGatewaySerial/SensebenderGatewaySerial.ino') {
|
||||
buildArduino(config, fqbn, sketches[sketch].path, key+'_ArduinoUno')
|
||||
sketches.each { sketch ->
|
||||
if (sketch.path != config.library_root+'examples/GatewayESP8266/GatewayESP8266.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP8266MQTTClient/GatewayESP8266MQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP8266SecureMQTTClient/GatewayESP8266SecureMQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP8266OTA/GatewayESP8266OTA.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP32/GatewayESP32.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP32OTA/GatewayESP32OTA.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP32MQTTClient/GatewayESP32MQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/SensebenderGatewaySerial/SensebenderGatewaySerial.ino') {
|
||||
buildArduino(config, fqbn, sketch.path, key+'_ArduinoUno')
|
||||
}
|
||||
}
|
||||
} catch (ex) {
|
||||
@@ -154,19 +172,19 @@ def buildArduinoUno(config, sketches, String key) {
|
||||
}
|
||||
|
||||
def buildArduinoMega(config, sketches, String key) {
|
||||
def fqbn = '-fqbn arduino:avr:mega:cpu=atmega2560'
|
||||
def fqbn = '--fqbn arduino:avr:mega:cpu=atmega2560'
|
||||
config.pr.setBuildStatus(config, 'PENDING', 'Toll gate (Arduino Mega - '+key+')', 'Building...', '${BUILD_URL}flowGraphTable/')
|
||||
try {
|
||||
for (sketch = 0; sketch < sketches.size(); sketch++) {
|
||||
if (sketches[sketch].path != config.library_root+'examples/GatewayESP8266/GatewayESP8266.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP8266MQTTClient/GatewayESP8266MQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP8266SecureMQTTClient/GatewayESP8266SecureMQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP8266OTA/GatewayESP8266OTA.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP32/GatewayESP32.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP32OTA/GatewayESP32OTA.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP32MQTTClient/GatewayESP32MQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/SensebenderGatewaySerial/SensebenderGatewaySerial.ino') {
|
||||
buildArduino(config, fqbn, sketches[sketch].path, key+'_ArduinoMega')
|
||||
sketches.each { sketch ->
|
||||
if (sketch.path != config.library_root+'examples/GatewayESP8266/GatewayESP8266.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP8266MQTTClient/GatewayESP8266MQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP8266SecureMQTTClient/GatewayESP8266SecureMQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP8266OTA/GatewayESP8266OTA.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP32/GatewayESP32.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP32OTA/GatewayESP32OTA.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP32MQTTClient/GatewayESP32MQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/SensebenderGatewaySerial/SensebenderGatewaySerial.ino') {
|
||||
buildArduino(config, fqbn, sketch.path, key+'_ArduinoMega')
|
||||
}
|
||||
}
|
||||
} catch (ex) {
|
||||
@@ -177,7 +195,8 @@ def buildArduinoMega(config, sketches, String key) {
|
||||
parseWarnings(key+'_ArduinoMega')
|
||||
}
|
||||
if (currentBuild.currentResult == 'UNSTABLE') {
|
||||
config.pr.setBuildStatus(config, config, 'ERROR', 'Toll gate (Arduino Mega - '+key+')', 'Warnings found', '${BUILD_URL}warnings2Result/new')
|
||||
// fixed: removed duplicate config argument
|
||||
config.pr.setBuildStatus(config, 'ERROR', 'Toll gate (Arduino Mega - '+key+')', 'Warnings found', '${BUILD_URL}warnings2Result/new')
|
||||
if (config.is_pull_request) {
|
||||
error 'Terminated due to warnings found'
|
||||
}
|
||||
@@ -189,19 +208,19 @@ def buildArduinoMega(config, sketches, String key) {
|
||||
}
|
||||
|
||||
def buildSTM32F1(config, sketches, String key) {
|
||||
def fqbn = '-fqbn STMicroelectronics:stm32:GenF1:pnum=BLUEPILL_F103C8,upload_method=swdMethod,xserial=generic,usb=none,xusb=FS,opt=osstd,dbg=none,rtlib=nano'
|
||||
def fqbn = '--fqbn STMicroelectronics:stm32:GenF1:pnum=BLUEPILL_F103C8,upload_method=swdMethod,xserial=generic,usb=none,xusb=FS,opt=osstd,dbg=none,rtlib=nano'
|
||||
config.pr.setBuildStatus(config, 'PENDING', 'Toll gate (STM32F1 - '+key+')', 'Building...', '${BUILD_URL}flowGraphTable/')
|
||||
try {
|
||||
for (sketch = 0; sketch < sketches.size(); sketch++) {
|
||||
if (sketches[sketch].path != config.library_root+'examples/GatewayESP8266/GatewayESP8266.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP8266MQTTClient/GatewayESP8266MQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP8266SecureMQTTClient/GatewayESP8266SecureMQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP8266OTA/GatewayESP8266OTA.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP32/GatewayESP32.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP32OTA/GatewayESP32OTA.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP32MQTTClient/GatewayESP32MQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/SensebenderGatewaySerial/SensebenderGatewaySerial.ino') {
|
||||
buildArduino(config, fqbn, sketches[sketch].path, key+'_STM32F1')
|
||||
sketches.each { sketch ->
|
||||
if (sketch.path != config.library_root+'examples/GatewayESP8266/GatewayESP8266.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP8266MQTTClient/GatewayESP8266MQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP8266SecureMQTTClient/GatewayESP8266SecureMQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP8266OTA/GatewayESP8266OTA.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP32/GatewayESP32.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP32OTA/GatewayESP32OTA.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP32MQTTClient/GatewayESP32MQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/SensebenderGatewaySerial/SensebenderGatewaySerial.ino') {
|
||||
buildArduino(config, fqbn, sketch.path, key+'_STM32F1')
|
||||
}
|
||||
}
|
||||
} catch (ex) {
|
||||
@@ -224,19 +243,19 @@ def buildSTM32F1(config, sketches, String key) {
|
||||
}
|
||||
|
||||
def buildSTM32F4(config, sketches, String key) {
|
||||
def fqbn = '-fqbn STMicroelectronics:stm32:GenF4:pnum=BLACKPILL_F411CE,upload_method=swdMethod,xserial=generic,usb=none,xusb=FS,opt=osstd,dbg=none,rtlib=nano'
|
||||
def fqbn = '--fqbn STMicroelectronics:stm32:GenF4:pnum=BLACKPILL_F411CE,upload_method=swdMethod,xserial=generic,usb=none,xusb=FS,opt=osstd,dbg=none,rtlib=nano'
|
||||
config.pr.setBuildStatus(config, 'PENDING', 'Toll gate (STM32F4 - '+key+')', 'Building...', '${BUILD_URL}flowGraphTable/')
|
||||
try {
|
||||
for (sketch = 0; sketch < sketches.size(); sketch++) {
|
||||
if (sketches[sketch].path != config.library_root+'examples/GatewayESP8266/GatewayESP8266.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP8266MQTTClient/GatewayESP8266MQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP8266SecureMQTTClient/GatewayESP8266SecureMQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP8266OTA/GatewayESP8266OTA.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP32/GatewayESP32.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP32OTA/GatewayESP32OTA.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP32MQTTClient/GatewayESP32MQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/SensebenderGatewaySerial/SensebenderGatewaySerial.ino') {
|
||||
buildArduino(config, fqbn, sketches[sketch].path, key+'_STM32F4')
|
||||
sketches.each { sketch ->
|
||||
if (sketch.path != config.library_root+'examples/GatewayESP8266/GatewayESP8266.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP8266MQTTClient/GatewayESP8266MQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP8266SecureMQTTClient/GatewayESP8266SecureMQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP8266OTA/GatewayESP8266OTA.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP32/GatewayESP32.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP32OTA/GatewayESP32OTA.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP32MQTTClient/GatewayESP32MQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/SensebenderGatewaySerial/SensebenderGatewaySerial.ino') {
|
||||
buildArduino(config, fqbn, sketch.path, key+'_STM32F4')
|
||||
}
|
||||
}
|
||||
} catch (ex) {
|
||||
@@ -259,24 +278,24 @@ def buildSTM32F4(config, sketches, String key) {
|
||||
}
|
||||
|
||||
def buildESP8266(config, sketches, String key) {
|
||||
def fqbn = '-fqbn=esp8266:esp8266:generic:xtal=80,vt=flash,exception=disabled,ResetMethod=ck,CrystalFreq=26,FlashFreq=40,FlashMode=dout,eesz=512K,led=2,ip=lm2f,dbg=Disabled,lvl=None____,wipe=none,baud=115200'
|
||||
def fqbn = '--fqbn esp8266:esp8266:generic:xtal=80,vt=flash,exception=disabled,ResetMethod=ck,CrystalFreq=26,FlashFreq=40,FlashMode=dout,eesz=512K,led=2,ip=lm2f,dbg=Disabled,lvl=None____,wipe=none,baud=115200'
|
||||
config.pr.setBuildStatus(config, 'PENDING', 'Toll gate (ESP8266 - '+key+')', 'Building...', '${BUILD_URL}flowGraphTable/')
|
||||
try {
|
||||
for (sketch = 0; sketch < sketches.size(); sketch++) {
|
||||
if (sketches[sketch].path != config.library_root+'examples/BatteryPoweredSensor/BatteryPoweredSensor.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/CO2Sensor/CO2Sensor.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/DustSensorDSM/DustSensorDSM.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewaySerialRS485/GatewaySerialRS485.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayW5100/GatewayW5100.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayW5100MQTTClient/GatewayW5100MQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayGSMMQTTClient/GatewayGSMMQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP32/GatewayESP32.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP32OTA/GatewayESP32OTA.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP32MQTTClient/GatewayESP32MQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/MotionSensorRS485/MotionSensorRS485.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/SensebenderGatewaySerial/SensebenderGatewaySerial.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/SoilMoistSensor/SoilMoistSensor.ino') {
|
||||
buildArduino(config, fqbn, sketches[sketch].path, key+'_ESP8266')
|
||||
sketches.each { sketch ->
|
||||
if (sketch.path != config.library_root+'examples/BatteryPoweredSensor/BatteryPoweredSensor.ino' &&
|
||||
sketch.path != config.library_root+'examples/CO2Sensor/CO2Sensor.ino' &&
|
||||
sketch.path != config.library_root+'examples/DustSensorDSM/DustSensorDSM.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewaySerialRS485/GatewaySerialRS485.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayW5100/GatewayW5100.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayW5100MQTTClient/GatewayW5100MQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayGSMMQTTClient/GatewayGSMMQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP32/GatewayESP32.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP32OTA/GatewayESP32OTA.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP32MQTTClient/GatewayESP32MQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/MotionSensorRS485/MotionSensorRS485.ino' &&
|
||||
sketch.path != config.library_root+'examples/SensebenderGatewaySerial/SensebenderGatewaySerial.ino' &&
|
||||
sketch.path != config.library_root+'examples/SoilMoistSensor/SoilMoistSensor.ino') {
|
||||
buildArduino(config, fqbn, sketch.path, key+'_ESP8266')
|
||||
}
|
||||
}
|
||||
} catch (ex) {
|
||||
@@ -299,33 +318,34 @@ def buildESP8266(config, sketches, String key) {
|
||||
}
|
||||
|
||||
def buildESP32(config, sketches, String key) {
|
||||
def fqbn = '-fqbn esp32:esp32:esp32:PartitionScheme=default,FlashMode=qio,FlashFreq=80,FlashSize=4M,UploadSpeed=921600,DebugLevel=none -warnings=default'
|
||||
// Note: override global --warnings with "default" for ESP32
|
||||
def fqbn = '--fqbn esp32:esp32:esp32:PartitionScheme=default,FlashMode=qio,FlashFreq=80,FlashSize=4M,UploadSpeed=921600,DebugLevel=none --warnings default'
|
||||
config.pr.setBuildStatus(config, 'PENDING', 'Toll gate (ESP32 - '+key+')', 'Building...', '${BUILD_URL}flowGraphTable/')
|
||||
try {
|
||||
for (sketch = 0; sketch < sketches.size(); sketch++) {
|
||||
if (sketches[sketch].path != config.library_root+'examples/BatteryPoweredSensor/BatteryPoweredSensor.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/BinarySwitchSleepSensor/BinarySwitchSleepSensor.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/CO2Sensor/CO2Sensor.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/DustSensor/DustSensor.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/DustSensorDSM/DustSensorDSM.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/EnergyMeterPulseSensor/EnergyMeterPulseSensor.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/LightSensor/LightSensor.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/LogOTANode/LogOTANode.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/MotionSensor/MotionSensor.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/MotionSensorRS485/MotionSensorRS485.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/PassiveNode/PassiveNode.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewaySerialRS485/GatewaySerialRS485.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayW5100/GatewayW5100.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayW5100MQTTClient/GatewayW5100MQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayGSMMQTTClient/GatewayGSMMQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP8266/GatewayESP8266.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP8266MQTTClient/GatewayESP8266MQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP8266SecureMQTTClient/GatewayESP8266SecureMQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP8266OTA/GatewayESP8266OTA.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/SensebenderGatewaySerial/SensebenderGatewaySerial.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/MotionSensorRS485/MotionSensorRS485.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/SoilMoistSensor/SoilMoistSensor.ino') {
|
||||
buildArduino(config, fqbn, sketches[sketch].path, key+'_ESP32')
|
||||
sketches.each { sketch ->
|
||||
if (sketch.path != config.library_root+'examples/BatteryPoweredSensor/BatteryPoweredSensor.ino' &&
|
||||
sketch.path != config.library_root+'examples/BinarySwitchSleepSensor/BinarySwitchSleepSensor.ino' &&
|
||||
sketch.path != config.library_root+'examples/CO2Sensor/CO2Sensor.ino' &&
|
||||
sketch.path != config.library_root+'examples/DustSensor/DustSensor.ino' &&
|
||||
sketch.path != config.library_root+'examples/DustSensorDSM/DustSensorDSM.ino' &&
|
||||
sketch.path != config.library_root+'examples/EnergyMeterPulseSensor/EnergyMeterPulseSensor.ino' &&
|
||||
sketch.path != config.library_root+'examples/LightSensor/LightSensor.ino' &&
|
||||
sketch.path != config.library_root+'examples/LogOTANode/LogOTANode.ino' &&
|
||||
sketch.path != config.library_root+'examples/MotionSensor/MotionSensor.ino' &&
|
||||
sketch.path != config.library_root+'examples/MotionSensorRS485/MotionSensorRS485.ino' &&
|
||||
sketch.path != config.library_root+'examples/PassiveNode/PassiveNode.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewaySerialRS485/GatewaySerialRS485.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayW5100/GatewayW5100.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayW5100MQTTClient/GatewayW5100MQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayGSMMQTTClient/GatewayGSMMQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP8266/GatewayESP8266.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP8266MQTTClient/GatewayESP8266MQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP8266SecureMQTTClient/GatewayESP8266SecureMQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP8266OTA/GatewayESP8266OTA.ino' &&
|
||||
sketch.path != config.library_root+'examples/SensebenderGatewaySerial/SensebenderGatewaySerial.ino' &&
|
||||
sketch.path != config.library_root+'examples/MotionSensorRS485/MotionSensorRS485.ino' &&
|
||||
sketch.path != config.library_root+'examples/SoilMoistSensor/SoilMoistSensor.ino') {
|
||||
buildArduino(config, fqbn, sketch.path, key+'_ESP32')
|
||||
}
|
||||
}
|
||||
} catch (ex) {
|
||||
@@ -345,53 +365,53 @@ def buildESP32(config, sketches, String key) {
|
||||
} else {
|
||||
config.pr.setBuildStatus(config, 'SUCCESS', 'Toll gate (ESP32 - '+key+')', 'Pass', '')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def buildnRF5(config, sketches, String key) {
|
||||
def fqbn = '-fqbn sandeepmistry:nRF5:Generic_nRF52832:softdevice=none,lfclk=lfxo'
|
||||
def buildnRF52(config, sketches, String key) {
|
||||
def fqbn = '--fqbn sandeepmistry:nRF5:Generic_nRF52832:softdevice=none,lfclk=lfxo'
|
||||
config.pr.setBuildStatus(config, 'PENDING', 'Toll gate (nRF5 - '+key+')', 'Building...', '${BUILD_URL}flowGraphTable/')
|
||||
try {
|
||||
for (sketch = 0; sketch < sketches.size(); sketch++) {
|
||||
if (sketches[sketch].path != config.library_root+'examples/BatteryPoweredSensor/BatteryPoweredSensor.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/CO2Sensor/CO2Sensor.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/DustSensorDSM/DustSensorDSM.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP8266/GatewayESP8266.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP8266MQTTClient/GatewayESP8266MQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP8266SecureMQTTClient/GatewayESP8266SecureMQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayGSMMQTTClient/GatewayGSMMQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP8266OTA/GatewayESP8266OTA.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP32/GatewayESP32.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP32OTA/GatewayESP32OTA.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayESP32MQTTClient/GatewayESP32MQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewaySerialRS485/GatewaySerialRS485.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayW5100/GatewayW5100.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/GatewayW5100MQTTClient/GatewayW5100MQTTClient.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/MotionSensorRS485/MotionSensorRS485.ino' &&
|
||||
sketches[sketch].path != config.library_root+'examples/SensebenderGatewaySerial/SensebenderGatewaySerial.ino') {
|
||||
buildArduino(config, fqbn, sketches[sketch].path, key+'_nRF5')
|
||||
sketches.each { sketch ->
|
||||
if (sketch.path != config.library_root+'examples/BatteryPoweredSensor/BatteryPoweredSensor.ino' &&
|
||||
sketch.path != config.library_root+'examples/CO2Sensor/CO2Sensor.ino' &&
|
||||
sketch.path != config.library_root+'examples/DustSensorDSM/DustSensorDSM.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP8266/GatewayESP8266.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP8266MQTTClient/GatewayESP8266MQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP8266SecureMQTTClient/GatewayESP8266SecureMQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayGSMMQTTClient/GatewayGSMMQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP8266OTA/GatewayESP8266OTA.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP32/GatewayESP32.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP32OTA/GatewayESP32OTA.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayESP32MQTTClient/GatewayESP32MQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewaySerialRS485/GatewaySerialRS485.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayW5100/GatewayW5100.ino' &&
|
||||
sketch.path != config.library_root+'examples/GatewayW5100MQTTClient/GatewayW5100MQTTClient.ino' &&
|
||||
sketch.path != config.library_root+'examples/MotionSensorRS485/MotionSensorRS485.ino' &&
|
||||
sketch.path != config.library_root+'examples/SensebenderGatewaySerial/SensebenderGatewaySerial.ino') {
|
||||
buildArduino(config, fqbn, sketch.path, key+'_nRF52')
|
||||
}
|
||||
}
|
||||
} catch (ex) {
|
||||
echo "Build failed with: "+ ex.toString()
|
||||
config.pr.setBuildStatus(config, 'FAILURE', 'Toll gate (nRF5 - '+key+')', 'Build error', '${BUILD_URL}')
|
||||
config.pr.setBuildStatus(config, 'FAILURE', 'Toll gate (nRF52 - '+key+')', 'Build error', '${BUILD_URL}')
|
||||
throw ex
|
||||
} finally {
|
||||
parseWarnings(key+'_nRF5')
|
||||
parseWarnings(key+'_nRF52')
|
||||
}
|
||||
if (currentBuild.currentResult == 'UNSTABLE') {
|
||||
config.pr.setBuildStatus(config, 'ERROR', 'Toll gate (nRF5 - '+key+')', 'Warnings found', '${BUILD_URL}warnings2Result/new')
|
||||
config.pr.setBuildStatus(config, 'ERROR', 'Toll gate (nRF52 - '+key+')', 'Warnings found', '${BUILD_URL}warnings2Result/new')
|
||||
if (config.is_pull_request) {
|
||||
error 'Terminated due to warnings found'
|
||||
}
|
||||
} else if (currentBuild.currentResult == 'FAILURE') {
|
||||
config.pr.setBuildStatus(config, 'FAILURE', 'Toll gate (nRF5 - '+key+')', 'Build error', '${BUILD_URL}')
|
||||
config.pr.setBuildStatus(config, 'FAILURE', 'Toll gate (nRF52 - '+key+')', 'Build error', '${BUILD_URL}')
|
||||
} else {
|
||||
config.pr.setBuildStatus(config, 'SUCCESS', 'Toll gate (nRF5 - '+key+')', 'Pass', '')
|
||||
config.pr.setBuildStatus(config, 'SUCCESS', 'Toll gate (nRF52 - '+key+')', 'Pass', '')
|
||||
}
|
||||
}
|
||||
|
||||
def buildnRF52832(config, sketches, String key) {
|
||||
def fqbn = '-fqbn=MySensors:nRF5:MyBoard_nRF52832:bootcode=none,lfclk=lfxo,reset=notenable'
|
||||
def fqbn = '--fqbn MySensors:nRF5:MyBoard_nRF52832:bootcode=none,lfclk=lfxo,reset=notenable'
|
||||
config.pr.setBuildStatus(config, 'PENDING', 'Toll gate (nRF52832 - '+key+')', 'Building...', '${BUILD_URL}flowGraphTable/')
|
||||
try {
|
||||
buildArduino(config, fqbn, 'hardware/MySensors/nRF5/libraries/MyBoardNRF5/examples/MyBoardNRF5/MyBoardNRF5.ino', key+'_nRF52832')
|
||||
@@ -415,7 +435,7 @@ def buildnRF52832(config, sketches, String key) {
|
||||
}
|
||||
|
||||
def buildnRF51822(config, sketches, String key) {
|
||||
def fqbn = '-fqbn=MySensors:nRF5:MyBoard_nRF51822:chip=xxaa,bootcode=none,lfclk=lfxo'
|
||||
def fqbn = '--fqbn MySensors:nRF5:MyBoard_nRF51822:chip=xxaa,bootcode=none,lfclk=lfxo'
|
||||
config.pr.setBuildStatus(config, 'PENDING', 'Toll gate (nRF51822 - '+key+')', 'Building...', '${BUILD_URL}flowGraphTable/')
|
||||
try {
|
||||
buildArduino(config, fqbn, 'hardware/MySensors/nRF5/libraries/MyBoardNRF5/examples/MyBoardNRF5/MyBoardNRF5.ino', key+'_nRF51822')
|
||||
|
||||
@@ -16,13 +16,13 @@ def call(config) {
|
||||
dir(config.repository_root) {
|
||||
step([$class: 'GitChangelogRecorder', config: [configFile: 'git-changelog-settings.json',
|
||||
createFileTemplateContent: '''
|
||||
# Changelog
|
||||
{{#commits}}
|
||||
### {{{messageTitle}}}
|
||||
{{{messageBody}}}
|
||||
[{{hash}}](https://github.com/mysensors/MySensors/commit/{{hash}}) by {{authorName}} at *{{commitTime}}*
|
||||
{{/commits}}
|
||||
''',
|
||||
# Changelog
|
||||
{{#commits}}
|
||||
### {{{messageTitle}}}
|
||||
{{{messageBody}}}
|
||||
[{{hash}}](https://github.com/mysensors/MySensors/commit/{{hash}}) by {{authorName}} at *{{commitTime}}*
|
||||
{{/commits}}
|
||||
''',
|
||||
createFileTemplateFile: '', createFileUseTemplateContent: true,
|
||||
createFileUseTemplateFile: false, customIssues: [[link: '', name: '', pattern: '', title: ''],
|
||||
[link: '', name: '', pattern: '', title: '']], dateFormat: 'YYYY-MM-dd HH:mm:ss',
|
||||
@@ -54,10 +54,10 @@ def call(config) {
|
||||
dir(config.repository_root) {
|
||||
step([$class: 'GitChangelogRecorder', config: [configFile: 'git-changelog-settings.json',
|
||||
createFileTemplateContent: '''
|
||||
{{#commits}}
|
||||
{{{messageTitle}}}
|
||||
{{/commits}}
|
||||
''',
|
||||
{{#commits}}
|
||||
{{{messageTitle}}}
|
||||
{{/commits}}
|
||||
''',
|
||||
createFileTemplateFile: '', createFileUseTemplateContent: true,
|
||||
createFileUseTemplateFile: false, customIssues: [[link: '', name: '', pattern: '', title: ''],
|
||||
[link: '', name: '', pattern: '', title: '']], dateFormat: 'YYYY-MM-dd HH:mm:ss',
|
||||
@@ -81,12 +81,12 @@ def call(config) {
|
||||
])
|
||||
step([$class: 'GitChangelogRecorder', config: [configFile: 'git-changelog-settings.json',
|
||||
createFileTemplateContent: '''
|
||||
{{#commits}}
|
||||
{{#messageBodyItems}}
|
||||
{{.}}
|
||||
{{/messageBodyItems}}
|
||||
{{/commits}}
|
||||
''',
|
||||
{{#commits}}
|
||||
{{#messageBodyItems}}
|
||||
{{.}}
|
||||
{{/messageBodyItems}}
|
||||
{{/commits}}
|
||||
''',
|
||||
createFileTemplateFile: '', createFileUseTemplateContent: true,
|
||||
createFileUseTemplateFile: false, customIssues: [[link: '', name: '', pattern: '', title: ''],
|
||||
[link: '', name: '', pattern: '', title: '']], dateFormat: 'YYYY-MM-dd HH:mm:ss',
|
||||
|
||||
@@ -15,9 +15,9 @@ def buildLinux(config, String configuration, String key) {
|
||||
warnings canComputeNew: false, canResolveRelativePaths: false,
|
||||
defaultEncoding: '',
|
||||
excludePattern: '''.*/EEPROM\\.h,.*/Dns\\.cpp,.*/socket\\.cpp,.*/util\\.h,.*/Servo\\.cpp,
|
||||
.*/Adafruit_NeoPixel\\.cpp,.*/UIPEthernet.*,.*/SoftwareSerial\\.cpp,
|
||||
.*/pins_arduino\\.h,.*/Stream\\.cpp,.*/USBCore\\.cpp,.*/Wire\\.cpp,
|
||||
.*/hardware/esp8266.*,.*/libraries/SD/.*''',
|
||||
.*/Adafruit_NeoPixel\\.cpp,.*/UIPEthernet.*,.*/SoftwareSerial\\.cpp,
|
||||
.*/pins_arduino\\.h,.*/Stream\\.cpp,.*/USBCore\\.cpp,.*/Wire\\.cpp,
|
||||
.*/hardware/.*,.*/libraries/.*''',
|
||||
failedTotalAll: '', healthy: '', includePattern: '', messagesPattern: '',
|
||||
parserConfigurations: [[parserName: 'GNU Make + GNU C Compiler (gcc)', pattern: config.library_root+'compiler_'+key+'.log']],
|
||||
unHealthy: '', unstableTotalAll: '0'
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
#!groovy
|
||||
|
||||
def call(Closure body) {
|
||||
def config = [:]
|
||||
def config = [
|
||||
arduino_cli: '/opt/arduino-cli/arduino-cli',
|
||||
]
|
||||
body.resolveStrategy = Closure.DELEGATE_FIRST
|
||||
body.delegate = config
|
||||
body()
|
||||
@@ -30,20 +32,19 @@ def call(Closure body) {
|
||||
cfg.pr.setBuildStatus(cfg, 'PENDING', 'Toll gate (Arduino Uno - Examples)', 'Not run yet...', '')
|
||||
cfg.pr.setBuildStatus(cfg, 'PENDING', 'Toll gate (ESP32 - Tests)', 'Not run yet...', '')
|
||||
cfg.pr.setBuildStatus(cfg, 'PENDING', 'Toll gate (ESP8266 - Tests)', 'Not run yet...', '')
|
||||
cfg.pr.setBuildStatus(cfg, 'PENDING', 'Toll gate (nRF52832 - Tests)', 'Not run yet...', '')
|
||||
cfg.pr.setBuildStatus(cfg, 'PENDING', 'Toll gate (nRF52 - Tests)', 'Not run yet...', '')
|
||||
cfg.pr.setBuildStatus(cfg, 'PENDING', 'Toll gate (STM32F1 - Tests)', 'Not run yet...', '')
|
||||
cfg.pr.setBuildStatus(cfg, 'PENDING', 'Toll gate (STM32F4 - Tests)', 'Not run yet...', '')
|
||||
|
||||
// cfg.pr.setBuildStatus(cfg, 'PENDING', 'Toll gate (MySensorsMicro - Tests)', 'Not run yet...', '')
|
||||
// cfg.pr.setBuildStatus(cfg, 'PENDING', 'Toll gate (MySensorsGW - Tests)', 'Not run yet...', '')
|
||||
// cfg.pr.setBuildStatus(cfg, 'PENDING', 'Toll gate (nRF51822 - Tests)', 'Not run yet...', '')
|
||||
// cfg.pr.setBuildStatus(cfg, 'PENDING', 'Toll gate (nRF5 - Tests)', 'Not run yet...', '')
|
||||
// cfg.pr.setBuildStatus(cfg, 'PENDING', 'Toll gate (Arduino Mega - Tests)', 'Not run yet...', '')
|
||||
// cfg.pr.setBuildStatus(cfg, 'PENDING', 'Toll gate (MySensorsMicro - Examples)', 'Not run yet...', '')
|
||||
// cfg.pr.setBuildStatus(cfg, 'PENDING', 'Toll gate (MySensorsGW - Examples)', 'Not run yet...', '')
|
||||
// cfg.pr.setBuildStatus(cfg, 'PENDING', 'Toll gate (nRF52832 - Examples)', 'Not run yet...', '')
|
||||
// cfg.pr.setBuildStatus(cfg, 'PENDING', 'Toll gate (nRF51822 - Examples)', 'Not run yet...', '')
|
||||
// cfg.pr.setBuildStatus(cfg, 'PENDING', 'Toll gate (nRF5 - Examples)', 'Not run yet...', '')
|
||||
// cfg.pr.setBuildStatus(cfg, 'PENDING', 'Toll gate (nRF52 - Examples)', 'Not run yet...', '')
|
||||
// cfg.pr.setBuildStatus(cfg, 'PENDING', 'Toll gate (STM32F1 - Examples)', 'Not run yet...', '')
|
||||
// cfg.pr.setBuildStatus(cfg, 'PENDING', 'Toll gate (STM32F4 - Examples)', 'Not run yet...', '')
|
||||
}
|
||||
@@ -146,7 +147,8 @@ def call(Closure body) {
|
||||
)
|
||||
}
|
||||
|
||||
config.tests = findFiles(glob: "${config.library_root}tests/**/*.ino")
|
||||
config.tests_fast = findFiles(glob: "${config.library_root}tests/fast/**/*.ino")
|
||||
config.tests_nightly = findFiles(glob: "${config.library_root}tests/nightly/**/*.ino")
|
||||
config.examples = findFiles(glob: "${config.library_root}examples/**/*.ino")
|
||||
}
|
||||
|
||||
@@ -177,75 +179,120 @@ def call(Closure body) {
|
||||
}
|
||||
}
|
||||
}, ArduinoBuilds: {
|
||||
lock(quantity: 1, resource: 'arduinoEnv') {
|
||||
stage('ArduinoUno (Tests)') {
|
||||
arduino.buildArduinoUno(config, config.tests, 'Tests')
|
||||
stage('ArduinoBuilds') {
|
||||
// Run all Arduino builds in parallel
|
||||
def arduinoBranches = [:]
|
||||
|
||||
arduinoBranches['ArduinoUno (Tests)'] = {
|
||||
stage('ArduinoUno (Tests)') {
|
||||
arduino.buildArduinoUno(config, config.tests_fast, 'Tests')
|
||||
}
|
||||
}
|
||||
stage('ArduinoUno (Examples)') {
|
||||
arduino.buildArduinoUno(config, config.examples, 'Examples')
|
||||
arduinoBranches['ArduinoUno (Examples)'] = {
|
||||
stage('ArduinoUno (Examples)') {
|
||||
arduino.buildArduinoUno(config, config.examples, 'Examples')
|
||||
}
|
||||
}
|
||||
stage('ESP32 (Tests)') {
|
||||
arduino.buildESP32(config, config.tests, 'Tests')
|
||||
arduinoBranches['nRF52 (Tests)'] = {
|
||||
stage('nRF52 (Tests)') {
|
||||
arduino.buildnRF52(config, config.tests_fast, 'Tests')
|
||||
}
|
||||
}
|
||||
stage('nRF52832 (Tests)') {
|
||||
arduino.buildnRF52832(config, config.tests, 'Tests')
|
||||
arduinoBranches['STM32F1 (Tests)'] = {
|
||||
stage('STM32F1 (Tests)') {
|
||||
arduino.buildSTM32F1(config, config.tests_fast, 'Tests')
|
||||
}
|
||||
}
|
||||
stage('ESP8266 (Tests)') {
|
||||
arduino.buildESP8266(config, config.tests, 'Tests')
|
||||
arduinoBranches['STM32F4 (Tests)'] = {
|
||||
stage('STM32F4 (Tests)') {
|
||||
arduino.buildSTM32F4(config, config.tests_fast, 'Tests')
|
||||
}
|
||||
}
|
||||
stage('nRF5 (Tests)') {
|
||||
arduino.buildnRF5(config, config.tests, 'Tests')
|
||||
arduinoBranches['ESP32 (Tests)'] = {
|
||||
stage('ESP32 (Tests)') {
|
||||
arduino.buildESP32(config, config.tests_fast, 'Tests')
|
||||
}
|
||||
}
|
||||
stage('STM32F1 (Tests)') {
|
||||
arduino.buildSTM32F1(config, config.tests, 'Tests')
|
||||
}
|
||||
stage('STM32F4 (Tests)') {
|
||||
arduino.buildSTM32F4(config, config.tests, 'Tests')
|
||||
arduinoBranches['ESP8266 (Tests)'] = {
|
||||
stage('ESP8266 (Tests)') {
|
||||
arduino.buildESP8266(config, config.tests_fast, 'Tests')
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
stage('MySensorsMicro (tests)') {
|
||||
arduino.buildMySensorsMicro(config, config.tests, 'Tests')
|
||||
arduinoBranches['MySensorsMicro (tests)'] = {
|
||||
stage('MySensorsMicro (tests)') {
|
||||
arduino.buildMySensorsMicro(config, config.tests_fast, 'Tests')
|
||||
}
|
||||
}
|
||||
stage('MySensorsGW (tests)') {
|
||||
arduino.buildMySensorsGw(config, config.tests, 'Tests')
|
||||
arduinoBranches['MySensorsGW (tests)'] = {
|
||||
stage('MySensorsGW (tests)') {
|
||||
arduino.buildMySensorsGw(config, config.tests_fast, 'Tests')
|
||||
}
|
||||
}
|
||||
stage('nRF51822 (tests)') {
|
||||
arduino.buildnRF51822(config, config.tests, 'Tests')
|
||||
arduinoBranches['nRF51822 (tests)'] = {
|
||||
stage('nRF51822 (tests)') {
|
||||
arduino.buildnRF51822(config, config.tests_fast, 'Tests')
|
||||
}
|
||||
}
|
||||
stage('ArduinoMega (tests)') {
|
||||
arduino.buildArduinoMega(config, config.tests, 'Tests')
|
||||
arduinoBranches['ArduinoMega (tests)'] = {
|
||||
stage('ArduinoMega (tests)') {
|
||||
arduino.buildArduinoMega(config, config.tests_fast, 'Tests')
|
||||
}
|
||||
}
|
||||
stage('MySensorsMicro (examples)') {
|
||||
arduino.buildMySensorsMicro(config, config.examples, 'Examples')
|
||||
arduinoBranches['MySensorsMicro (examples)'] = {
|
||||
stage('MySensorsMicro (examples)') {
|
||||
arduino.buildMySensorsMicro(config, config.examples, 'Examples')
|
||||
}
|
||||
}
|
||||
stage('MySensorsGW (examples)') {
|
||||
arduino.buildMySensorsGw(config, config.examples, 'Examples')
|
||||
arduinoBranches['MySensorsGW (examples)'] = {
|
||||
stage('MySensorsGW (examples)') {
|
||||
arduino.buildMySensorsGw(config, config.examples, 'Examples')
|
||||
}
|
||||
}
|
||||
stage('nRF52832 (examples)') {
|
||||
arduino.buildnRF52832(config, config.examples, 'Examples')
|
||||
arduinoBranches['nRF52832 (examples)'] = {
|
||||
stage('nRF52832 (examples)') {
|
||||
arduino.buildnRF52832(config, config.examples, 'Examples')
|
||||
}
|
||||
}
|
||||
stage('nRF51822 (examples)') {
|
||||
arduino.buildnRF51822(config, config.examples, 'Examples')
|
||||
arduinoBranches['nRF51822 (examples)'] = {
|
||||
stage('nRF51822 (examples)') {
|
||||
arduino.buildnRF51822(config, config.examples, 'Examples')
|
||||
}
|
||||
}
|
||||
stage('nRF5 (examples)') {
|
||||
arduino.buildnRF5(config, config.examples, 'Examples')
|
||||
arduinoBranches['nRF5 (examples)'] = {
|
||||
stage('nRF5 (examples)') {
|
||||
arduino.buildnRF5(config, config.examples, 'Examples')
|
||||
}
|
||||
}
|
||||
stage('ESP8266 (examples)') {
|
||||
arduino.buildESP8266(config, config.examples, 'Examples')
|
||||
arduinoBranches['ESP8266 (examples)'] = {
|
||||
stage('ESP8266 (examples)') {
|
||||
arduino.buildESP8266(config, config.examples, 'Examples')
|
||||
}
|
||||
}
|
||||
stage('ESP32 (examples)') {
|
||||
arduino.buildESP32(config, config.examples, 'Examples')
|
||||
arduinoBranches['ESP32 (examples)'] = {
|
||||
stage('ESP32 (examples)') {
|
||||
arduino.buildESP32(config, config.examples, 'Examples')
|
||||
}
|
||||
}
|
||||
stage('STM32F1 (Examples)') {
|
||||
arduino.buildSTM32F1(config, config.tests, 'Examples')
|
||||
arduinoBranches['STM32F1 (Examples)'] = {
|
||||
stage('STM32F1 (Examples)') {
|
||||
arduino.buildSTM32F1(config, config.examples, 'Examples')
|
||||
}
|
||||
}
|
||||
stage('STM32F4 (Examples)') {
|
||||
arduino.buildSTM32F4(config, config.tests, 'Examples')
|
||||
arduinoBranches['STM32F4 (Examples)'] = {
|
||||
stage('STM32F4 (Examples)') {
|
||||
arduino.buildSTM32F4(config, config.examples, 'Examples')
|
||||
}
|
||||
}
|
||||
stage('ArduinoMega (examples)') {
|
||||
arduino.buildArduinoMega(config, config.examples, 'Examples')
|
||||
arduinoBranches['ArduinoMega (examples)'] = {
|
||||
stage('ArduinoMega (examples)') {
|
||||
arduino.buildArduinoMega(config, config.examples, 'Examples')
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
parallel arduinoBranches
|
||||
}
|
||||
}, failFast: true
|
||||
}
|
||||
|
||||
27
tests/fast/Arduino/sketches/rf24_driver/rf24_driver.ino
Normal file
27
tests/fast/Arduino/sketches/rf24_driver/rf24_driver.ino
Normal file
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* The MySensors Arduino library handles the wireless radio link and protocol
|
||||
* between your home built sensors/actuators and HA controller of choice.
|
||||
* The sensors forms a self healing radio network with optional repeaters. Each
|
||||
* repeater and gateway builds a routing tables in EEPROM which keeps track of the
|
||||
* network topology allowing messages to be routed to nodes.
|
||||
*
|
||||
* Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
|
||||
* Copyright (C) 2013-2025 Sensnology AB
|
||||
* Full contributor list: https://github.com/mysensors/MySensors/graphs/contributors
|
||||
*
|
||||
* Documentation: http://www.mysensors.org
|
||||
* Support Forum: http://forum.mysensors.org
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* version 2 as published by the Free Software Foundation.
|
||||
*
|
||||
*******************************
|
||||
*/
|
||||
#define MY_DEBUG
|
||||
#define MY_RADIO_RF24
|
||||
|
||||
#include <MySensors.h>
|
||||
|
||||
void setup() {}
|
||||
void loop() {}
|
||||
29
tests/fast/Arduino/sketches/rfm95_driver/rfm95_driver.ino
Normal file
29
tests/fast/Arduino/sketches/rfm95_driver/rfm95_driver.ino
Normal file
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* The MySensors Arduino library handles the wireless radio link and protocol
|
||||
* between your home built sensors/actuators and HA controller of choice.
|
||||
* The sensors forms a self healing radio network with optional repeaters. Each
|
||||
* repeater and gateway builds a routing tables in EEPROM which keeps track of the
|
||||
* network topology allowing messages to be routed to nodes.
|
||||
*
|
||||
* Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
|
||||
* Copyright (C) 2013-2025 Sensnology AB
|
||||
* Full contributor list: https://github.com/mysensors/MySensors/graphs/contributors
|
||||
*
|
||||
* Documentation: http://www.mysensors.org
|
||||
* Support Forum: http://forum.mysensors.org
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* version 2 as published by the Free Software Foundation.
|
||||
*
|
||||
*******************************
|
||||
*/
|
||||
#define MY_DEBUG
|
||||
#define MY_RADIO_RFM95
|
||||
#define MY_RFM95_ENABLE_ENCRYPTION
|
||||
#define MY_DEBUG_VERBOSE_RFM95
|
||||
|
||||
#include <MySensors.h>
|
||||
|
||||
void setup() {}
|
||||
void loop() {}
|
||||
27
tests/fast/Arduino/sketches/serial_gw/serial_gw.ino
Normal file
27
tests/fast/Arduino/sketches/serial_gw/serial_gw.ino
Normal file
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* The MySensors Arduino library handles the wireless radio link and protocol
|
||||
* between your home built sensors/actuators and HA controller of choice.
|
||||
* The sensors forms a self healing radio network with optional repeaters. Each
|
||||
* repeater and gateway builds a routing tables in EEPROM which keeps track of the
|
||||
* network topology allowing messages to be routed to nodes.
|
||||
*
|
||||
* Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
|
||||
* Copyright (C) 2013-2025 Sensnology AB
|
||||
* Full contributor list: https://github.com/mysensors/MySensors/graphs/contributors
|
||||
*
|
||||
* Documentation: http://www.mysensors.org
|
||||
* Support Forum: http://forum.mysensors.org
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* version 2 as published by the Free Software Foundation.
|
||||
*
|
||||
*******************************
|
||||
*/
|
||||
#define MY_DEBUG
|
||||
#define MY_GATEWAY_SERIAL
|
||||
|
||||
#include <MySensors.h>
|
||||
|
||||
void setup() {}
|
||||
void loop() {}
|
||||
Reference in New Issue
Block a user