11def buildVersion
2- def boards_to_build_1 = [" LOPY_868" , " WIPY" ]
3- def boards_to_build_2 = [" LOPY_915" , " SIPY" ]
4- def boards_to_test = [" LOPY_868" , " WIPY" ]
2+ def boards_to_build_1 = [" LoPy_868" , " WiPy" ]
3+ def boards_to_build_2 = [" LopY_915" , " SiPy" ]
4+ def boards_to_build_3 = [" FiPy_868" , " GPy" ]
5+ def boards_to_build_4 = [" FiPy_915" ]
6+ def boards_to_test = [" GPy" ]
7+ def remote_node = " UDOO"
58
69node {
7- stage(' Checkout' ) { // get source
10+ // get pycom-esp-idf source
11+ stage(' Checkout' ) {
812 checkout scm
913 sh ' rm -rf esp-idf'
1014 sh ' git clone --depth=1 --recursive -b master https://github.com/pycom/pycom-esp-idf.git esp-idf'
1115 }
1216
13- // build the primary boards that we test
14- stage(' Build1' ) {
17+ stage(' mpy-cross' ) {
1518 // build the cross compiler first
1619 sh ''' cd mpy-cross;
20+ make clean;
1721 make all'''
22+ }
23+
24+ // build the boards in four cycles
25+ // Todo: run in a loop if possible
1826
27+ stage(' Build1' ) {
1928 def parallelSteps = [:]
2029 for (x in boards_to_build_1) {
21- def name = x
22- def name_short = " LOPY"
23- def lora_band = " "
24- if (name == " LOPY_868" ) {
25- lora_band = " LORA_BAND=USE_BAND_868"
26- } else if (name == " LOPY_915" ) {
27- lora_band = " LORA_BAND=USE_BAND_915"
28- } else {
29- name_short = name
30- }
31- parallelSteps[name] = boardBuild(name, name_short, lora_band)
30+ def name = x
31+ parallelSteps[name] = boardBuild(name)
3232 }
3333 parallel parallelSteps
34-
35- stash includes : ' **/*.bin' , name : ' binary'
36- stash includes : ' tests/**' , name : ' tests'
37- stash includes : ' esp-idf/components/esptool_py/**' , name : ' esp-idfTools'
38- stash includes : ' tools/**' , name : ' tools'
39- stash includes : ' esp32/tools/**' , name : ' esp32Tools'
4034 }
4135
42- // build the secondary boards just used for the release
4336 stage(' Build2' ) {
44-
4537 def parallelSteps = [:]
4638 for (x in boards_to_build_2) {
47- def name = x
48- def name_short = " LOPY"
49- def lora_band = " "
50- if (name == " LOPY_868" ) {
51- lora_band = " LORA_BAND=USE_BAND_868"
52- } else if (name == " LOPY_915" ) {
53- lora_band = " LORA_BAND=USE_BAND_915"
54- } else {
55- name_short = name
56- }
57- parallelSteps[name] = boardBuild(name, name_short, lora_band)
39+ def name = x
40+ parallelSteps[name] = boardBuild(name)
5841 }
5942 parallel parallelSteps
43+ }
6044
61- stash includes : ' **/*.bin' , name : ' binary'
62- stash includes : ' tests/**' , name : ' tests'
63- stash includes : ' esp-idf/components/esptool_py/**' , name : ' esp-idfTools'
64- stash includes : ' tools/**' , name : ' tools'
65- stash includes : ' esp32/tools/**' , name : ' esp32Tools'
45+ stage(' Build3' ) {
46+ def parallelSteps = [:]
47+ for (x in boards_to_build_3) {
48+ def name = x
49+ parallelSteps[name] = boardBuild(name)
50+ }
51+ parallel parallelSteps
6652 }
53+
54+ stage(' Build4' ) {
55+ def parallelSteps = [:]
56+ for (x in boards_to_build_4) {
57+ def name = x
58+ parallelSteps[name] = boardBuild(name)
59+ }
60+ parallel parallelSteps
61+ }
62+
63+ stash includes : ' **/*.bin' , name : ' binary'
64+ stash includes : ' tests/**' , name : ' tests'
65+ stash includes : ' esp-idf/components/esptool_py/**' , name : ' esp-idfTools'
66+ stash includes : ' tools/**' , name : ' tools'
67+ stash includes : ' esp32/tools/**' , name : ' esp32Tools'
6768}
6869
69- stage (' Flash' ) {
70- def parallelFlash = [:]
71- for (x in boards_to_test) {
72- def name = x
70+ stage (' Flash' ) {
71+ def parallelFlash = [:]
72+ for (x in boards_to_test) {
73+ def name = x. toUpperCase()
7374 parallelFlash[name] = flashBuild(name)
74- }
75+ }
7576 parallel parallelFlash
76- }
77+ }
7778
78- stage (' Test' ){
79- def parallelTests = [:]
80- for (x in boards_to_test) {
79+ stage (' Test' ){
80+ def parallelTests = [:]
81+ for (x in boards_to_test) {
8182 def name = x
82- def board_name = name
83- if (name == " LOPY_868" || name == " LOPY_915" ) {
83+ def board_name = name. toUpperCase()
84+ if (board_name == " LOPY_868" || board_name == " LOPY_915" ) {
8485 board_name = " LOPY"
8586 }
87+ if (board_name == " FIPY_868" || board_name == " FIPY_915" ) {
88+ board_name = " FIPY"
89+ }
8690 parallelTests[board_name] = testBuild(board_name)
87- }
91+ }
8892 parallel parallelTests
89- }
93+ }
9094
91- def testBuild (name ) {
92- return {
93- node(name) {
94- sleep(5 ) // Delay to skip all bootlog
95- dir(' tests' ) {
96- timeout(30 ) {
97- sh ''' ./run-tests --target=esp32-''' + name + ''' --device /dev/ttyUSB0'''
98- }
95+ def testBuild (name ) {
96+ return {
97+ node(" UDOO" ) {
98+ sleep(5 ) // Delay to skip all bootlog
99+ dir(' tests' ) {
100+ timeout(30 ) {
101+ sh ''' ./run-tests --target=esp32-''' + name + ''' --device /dev/ttyACM1'''
99102 }
100- sh ' python esp32/tools/resetBoard.py reset'
101- sh ' python esp32/tools/resetBoard.py releasePins'
103+ }
104+ sh ' python esp32/tools/pypic.py --port /dev/ttyACM1 --enter'
105+ sh ' python esp32/tools/pypic.py --port /dev/ttyACM1 --exit'
102106 }
107+ }
103108 }
104- }
105109
106110def flashBuild (name ) {
107- def node_name = name
108- if (name != " WIPY" ) {
109- node_name = " LOPY"
110- }
111- return {
112- node(node_name) {
113- sh ' rm -rf *'
114- unstash ' binary'
115- unstash ' esp-idfTools'
116- unstash ' esp32Tools'
117- unstash ' tests'
118- unstash ' tools'
119- sh ' python esp32/tools/resetBoard.py bootloader'
120- sh ' esp-idf/components/esptool_py/esptool/esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 921600 erase_flash'
121- sh ' python esp32/tools/resetBoard.py bootloader'
122- sh ' esp-idf/components/esptool_py/esptool/esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 40m --flash_size detect 0x1000 esp32/build/' + name + ' /release/bootloader/bootloader.bin 0x8000 esp32/build/' + name + ' /release/lib/partitions.bin 0x10000 esp32/build/' + name + ' /release/appimg.bin'
123- sh ' python esp32/tools/resetBoard.py reset'
124- sh ' python esp32/tools/resetBoard.py releasePins'
125- }
111+ return {
112+ node(" UDOO" ) {
113+ sh ' rm -rf *'
114+ unstash ' binary'
115+ unstash ' esp-idfTools'
116+ unstash ' esp32Tools'
117+ unstash ' tests'
118+ unstash ' tools'
119+ sh ' python esp32/tools/pypic.py --port /dev/ttyACM1 --enter'
120+ sh ' esp-idf/components/esptool_py/esptool/esptool.py --chip esp32 --port /dev/ttyACM1 --baud 921600 erase_flash'
121+ sh ' python esp32/tools/pypic.py --port /dev/ttyACM1 --enter'
122+ sh ' esp-idf/components/esptool_py/esptool/esptool.py --chip esp32 --port /dev/ttyACM1 --baud 921600 --before no_reset --after no_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size detect 0x1000 esp32/build/' + name + ' /release/bootloader/bootloader.bin 0x8000 esp32/build/' + name + ' /release/lib/partitions.bin 0x10000 esp32/build/' + name + ' /release/appimg.bin'
123+ sh ' python esp32/tools/pypic.py --port /dev/ttyACM1 --exit'
126124 }
125+ }
127126}
128127
129- def boardBuild (name , name_short , lora_band ) {
128+ def boardBuild (name ) {
129+ def name_u = name. toUpperCase()
130+ def name_short = name_u. split(' _' )[0 ]
131+ def lora_band = " "
132+ if (name_u == " LOPY_868" || name_u == " FIPY_868" ) {
133+ lora_band = " LORA_BAND=USE_BAND_868"
134+ }
135+ else if (name_u == " LOPY_915" || name_u == " FIPY_915" ) {
136+ lora_band = " LORA_BAND=USE_BAND_915"
137+ }
130138 def app_bin = name. toLowerCase() + ' .bin'
131139 return {
140+ sh ''' export PATH=$PATH:/opt/xtensa-esp32-elf/bin;
141+ export IDF_PATH=${WORKSPACE}/esp-idf;
142+ cd esp32;
143+ make clean BOARD=''' + name_short + lora_band
144+
132145 sh ''' export PATH=$PATH:/opt/xtensa-esp32-elf/bin;
133146 export IDF_PATH=${WORKSPACE}/esp-idf;
134147 cd esp32;
@@ -139,15 +152,16 @@ def boardBuild(name, name_short, lora_band) {
139152 cd esp32;
140153 make TARGET=app -j2 BOARD=''' + name_short + lora_band
141154
142- sh ''' cd esp32/build/''' + name + ''' /release;
143- rm -rf firmware_package;
144- mkdir -p firmware_package;
155+ sh ''' cd esp32/build/''' + name_u + ''' /release;
156+ mkdir -p firmware_package;
145157 cd firmware_package;
146158 cp ../bootloader/bootloader.bin .;
159+ mv ../application.elf /var/lib/jenkins/release/''' + name + ''' -$(cat ../../../../pycom_version.h |grep SW_VERSION_NUMBER|cut -d\\ " -f2)-application.elf;
160+ cp ../appimg.bin .;
147161 cp ../lib/partitions.bin .;
148- cp ../../../../boards/''' + name_short + ''' /''' + name + ''' /script .;
162+ cp ../../../../boards/''' + name_short + ''' /''' + name_u + ''' /script .;
149163 cp ../''' + app_bin + ''' .;
150- tar -cvzf ''' + name + ''' . tar.gz bootloader.bin partitions.bin script ''' + app_bin
164+ tar -cvzf /var/lib/jenkins/release/ ''' + name + ''' -$(cat ../../../../pycom_version.h |grep SW_VERSION_NUMBER|cut -d \\ " -f2). tar.gz appimg.bin bootloader.bin partitions.bin script ''' + app_bin
151165 }
152166}
153167
0 commit comments