V3 of the fire detector project

Dependencies:   BSP_B-L475E-IOT01

Committer:
cadix_ach
Date:
Tue Oct 13 13:17:26 2020 +0000
Revision:
2:e64b4470877a
Parent:
0:e84b46bbec77
V3 of the fire detector project

Who changed what in which revision?

UserRevisionLine numberNew contents of line
GuilhermeLubk 0:e84b46bbec77 1 properties ([[$class: 'ParametersDefinitionProperty', parameterDefinitions: [
GuilhermeLubk 0:e84b46bbec77 2 [$class: 'StringParameterDefinition', name: 'mbed_os_revision', defaultValue: '', description: 'Revision of mbed-os to build. Use format "pull/PR-NUMBER/head" to access mbed-os PR']
GuilhermeLubk 0:e84b46bbec77 3 ]]])
GuilhermeLubk 0:e84b46bbec77 4
GuilhermeLubk 0:e84b46bbec77 5 if (params.mbed_os_revision == '') {
GuilhermeLubk 0:e84b46bbec77 6 echo 'Use mbed OS revision from mbed-os.lib'
GuilhermeLubk 0:e84b46bbec77 7 } else {
GuilhermeLubk 0:e84b46bbec77 8 echo "Use mbed OS revisiong ${params.mbed_os_revision}"
GuilhermeLubk 0:e84b46bbec77 9 if (params.mbed_os_revision.matches('pull/\\d+/head')) {
GuilhermeLubk 0:e84b46bbec77 10 echo "Revision is a Pull Request"
GuilhermeLubk 0:e84b46bbec77 11 }
GuilhermeLubk 0:e84b46bbec77 12 }
GuilhermeLubk 0:e84b46bbec77 13
GuilhermeLubk 0:e84b46bbec77 14 // List of targets with supported RF shields to compile
GuilhermeLubk 0:e84b46bbec77 15 def targets = [
GuilhermeLubk 0:e84b46bbec77 16 "UBLOX_EVK_ODIN_W2": ["builtin"],
GuilhermeLubk 0:e84b46bbec77 17 "NUCLEO_F401RE": ["WIFI_IDW0XX1"],
GuilhermeLubk 0:e84b46bbec77 18 "DISCO_L475VG_IOT01A": ["WIFI_ISM43362"],
GuilhermeLubk 0:e84b46bbec77 19 "DISCO_F413ZH": ["WIFI_ISM43362"]
GuilhermeLubk 0:e84b46bbec77 20 ]
GuilhermeLubk 0:e84b46bbec77 21
GuilhermeLubk 0:e84b46bbec77 22 // Map toolchains to compilers
GuilhermeLubk 0:e84b46bbec77 23 def toolchains = [
GuilhermeLubk 0:e84b46bbec77 24 ARM: "armcc",
GuilhermeLubk 0:e84b46bbec77 25 GCC_ARM: "arm-none-eabi-gcc",
GuilhermeLubk 0:e84b46bbec77 26 IAR: "IAR-linux"
GuilhermeLubk 0:e84b46bbec77 27 ]
GuilhermeLubk 0:e84b46bbec77 28
GuilhermeLubk 0:e84b46bbec77 29 // Supported RF shields
GuilhermeLubk 0:e84b46bbec77 30 def radioshields = [
GuilhermeLubk 0:e84b46bbec77 31 "builtin",
GuilhermeLubk 0:e84b46bbec77 32 "WIFI_IDW0XX1"
GuilhermeLubk 0:e84b46bbec77 33 ]
GuilhermeLubk 0:e84b46bbec77 34
GuilhermeLubk 0:e84b46bbec77 35 def stepsForParallel = [:]
GuilhermeLubk 0:e84b46bbec77 36
GuilhermeLubk 0:e84b46bbec77 37 // Jenkins pipeline does not support map.each, we need to use oldschool for loop
GuilhermeLubk 0:e84b46bbec77 38 for (int i = 0; i < targets.size(); i++) {
GuilhermeLubk 0:e84b46bbec77 39 for(int j = 0; j < toolchains.size(); j++) {
GuilhermeLubk 0:e84b46bbec77 40 for(int k = 0; k < radioshields.size(); k++) {
GuilhermeLubk 0:e84b46bbec77 41 def target = targets.keySet().asList().get(i)
GuilhermeLubk 0:e84b46bbec77 42 def allowed_shields = targets.get(target)
GuilhermeLubk 0:e84b46bbec77 43 def toolchain = toolchains.keySet().asList().get(j)
GuilhermeLubk 0:e84b46bbec77 44 def compilerLabel = toolchains.get(toolchain)
GuilhermeLubk 0:e84b46bbec77 45 def radioshield = radioshields.get(k)
GuilhermeLubk 0:e84b46bbec77 46
GuilhermeLubk 0:e84b46bbec77 47 def stepName = "${target} ${toolchain} ${radioshield}"
GuilhermeLubk 0:e84b46bbec77 48 if(allowed_shields.contains(radioshield)) {
GuilhermeLubk 0:e84b46bbec77 49 stepsForParallel[stepName] = buildStep(target, compilerLabel, toolchain, radioshield)
GuilhermeLubk 0:e84b46bbec77 50 }
GuilhermeLubk 0:e84b46bbec77 51 }
GuilhermeLubk 0:e84b46bbec77 52 }
GuilhermeLubk 0:e84b46bbec77 53 }
GuilhermeLubk 0:e84b46bbec77 54
GuilhermeLubk 0:e84b46bbec77 55 timestamps {
GuilhermeLubk 0:e84b46bbec77 56 parallel stepsForParallel
GuilhermeLubk 0:e84b46bbec77 57 }
GuilhermeLubk 0:e84b46bbec77 58
GuilhermeLubk 0:e84b46bbec77 59 def buildStep(target, compilerLabel, toolchain, radioShield) {
GuilhermeLubk 0:e84b46bbec77 60 return {
GuilhermeLubk 0:e84b46bbec77 61 stage ("${target}_${compilerLabel}_${radioShield}") {
GuilhermeLubk 0:e84b46bbec77 62 node ("${compilerLabel}") {
GuilhermeLubk 0:e84b46bbec77 63 deleteDir()
GuilhermeLubk 0:e84b46bbec77 64 dir("mbed-os-example-wifi") {
GuilhermeLubk 0:e84b46bbec77 65 checkout scm
GuilhermeLubk 0:e84b46bbec77 66 def config_file = "mbed_app.json"
GuilhermeLubk 0:e84b46bbec77 67
GuilhermeLubk 0:e84b46bbec77 68 if ("${radioShield}" != "internal") {
GuilhermeLubk 0:e84b46bbec77 69 // Replace default rf shield
GuilhermeLubk 0:e84b46bbec77 70 execute("sed -i 's/\"value\": \"internal\"/\"value\": \"${radioShield}\"/' ${config_file}")
GuilhermeLubk 0:e84b46bbec77 71 }
GuilhermeLubk 0:e84b46bbec77 72
GuilhermeLubk 0:e84b46bbec77 73 // Set mbed-os to revision received as parameter
GuilhermeLubk 0:e84b46bbec77 74 execute ("mbed deploy --protocol ssh")
GuilhermeLubk 0:e84b46bbec77 75 if (params.mbed_os_revision != '') {
GuilhermeLubk 0:e84b46bbec77 76 dir ("mbed-os") {
GuilhermeLubk 0:e84b46bbec77 77 if (params.mbed_os_revision.matches('pull/\\d+/head')) {
GuilhermeLubk 0:e84b46bbec77 78 execute("git fetch origin ${params.mbed_os_revision}:PR")
GuilhermeLubk 0:e84b46bbec77 79 execute("git checkout PR")
GuilhermeLubk 0:e84b46bbec77 80 } else {
GuilhermeLubk 0:e84b46bbec77 81 execute ("git checkout ${params.mbed_os_revision}")
GuilhermeLubk 0:e84b46bbec77 82 }
GuilhermeLubk 0:e84b46bbec77 83 }
GuilhermeLubk 0:e84b46bbec77 84 }
GuilhermeLubk 0:e84b46bbec77 85 execute("mbed new .")
GuilhermeLubk 0:e84b46bbec77 86 execute ("mbed compile --build out/${target}_${toolchain}_${radioShield}/ -m ${target} -t ${toolchain} -c --app-config ${config_file}")
GuilhermeLubk 0:e84b46bbec77 87 }
GuilhermeLubk 0:e84b46bbec77 88 stash name: "${target}_${toolchain}_${radioShield}", includes: '**/mbed-os-example-wifi.bin'
GuilhermeLubk 0:e84b46bbec77 89 archive '**/mbed-os-example-wifi.bin'
GuilhermeLubk 0:e84b46bbec77 90 step([$class: 'WsCleanup'])
GuilhermeLubk 0:e84b46bbec77 91 }
GuilhermeLubk 0:e84b46bbec77 92 }
GuilhermeLubk 0:e84b46bbec77 93 }
GuilhermeLubk 0:e84b46bbec77 94 }