11def buildVersion
22def boards_to_build = [" WiPy" , " LoPy" , " SiPy" , " GPy" , " FiPy" , " LoPy4" ]
3- def boards_to_test = [" Pycom_Expansion3_Py00ec5f" , " Pycom_Expansion3_Py9f8bf5" ]
3+ def variants_to_build = [ " BASE" , " PYBYTES" ]
4+ def boards_to_test = [" 1b6fa1" ]
45
56node {
67 // get pycom-esp-idf source
78 stage(' Checkout' ) {
89 checkout scm
910 sh ' rm -rf esp-idf'
10- sh ' git clone --depth=1 --recursive -b idf_dev https://github.com/pycom/pycom-esp-idf.git esp-idf'
11+ sh ' git clone --depth=1 --recursive -b idf_v3.1 https://github.com/pycom/pycom-esp-idf.git esp-idf'
1112 }
1213
13- PYCOM_VERSION = get_version()
14- GIT_TAG = sh (script : ' git rev-parse --short HEAD' , returnStdout : true ). trim()
14+ stage(' git-tag' ) {
15+ PYCOM_VERSION = get_version()
16+ GIT_TAG = sh (script : ' git rev-parse --short HEAD' , returnStdout : true ). trim()
17+ sh ' git tag -fa v1.9.4-' + GIT_TAG + ' -m \\ "v1.9.4-' + GIT_TAG + ' \\ "'
18+ }
19+
20+ stage(' wifi_scan' ) {
21+ sh ''' export PATH=$PATH:/opt/xtensa-esp32-elf/bin;
22+ export IDF_PATH=${WORKSPACE}/esp-idf;
23+ make -C esp-idf/examples/wifi/scan bootloader all'''
24+ }
1525
1626 stage(' mpy-cross' ) {
1727 // build the cross compiler first
18- sh ' git tag -fa v1.9.4-' + GIT_TAG + ' -m \\ "v1.9.4-' + GIT_TAG + ''' \\ ";
19- cd mpy-cross;
20- make clean;
21- make all'''
28+ sh ' make -C mpy-cross clean all'
2229 }
2330
2431 for (board in boards_to_build) {
25- stage(board) {
26- def parallelSteps = [:]
27- parallelSteps[board] = boardBuild(board)
28- parallel parallelSteps
29- }
30- }
32+ stage(board) {
33+ def parallelSteps = [:]
34+ for (variant in variants_to_build) {
35+ board_variant = board + " _" + variant
36+ parallelSteps[board_variant] = boardBuild(board, variant)
37+ }
38+ parallel parallelSteps
39+ }
40+ }
3141
3242 stash includes : ' **/*.bin' , name : ' binary'
3343 stash includes : ' tests/**' , name : ' tests'
@@ -36,44 +46,44 @@ node {
3646 stash includes : ' esp32/tools/**' , name : ' esp32Tools'
3747}
3848
39- stage (' Flash' ) {
40- def parallelFlash = [:]
41- for (board in boards_to_test) {
42- parallelFlash[board] = flashBuild(board)
43- }
44- parallel parallelFlash
45- }
49+ for (variant in variants_to_build) {
4650
47- stage (' Test ' ) {
48- def parallelTests = [:]
49- for (board in boards_to_test) {
50- parallelTests [board] = testBuild (board)
51- }
52- parallel parallelTests
53- }
51+ stage (' Flash- ' + variant) {
52+ def parallelFlash = [:]
53+ for (board in boards_to_test) {
54+ parallelFlash [board] = flashBuild (board, variant )
55+ }
56+ parallel parallelFlash
57+ }
5458
59+ stage (' Test-' + variant){
60+ def parallelTests = [:]
61+ for (board in boards_to_test) {
62+ parallelTests[board] = testBuild(board)
63+ }
64+ parallel parallelTests
65+ }
66+ }
5567
56- def boardBuild (name ) {
68+ def boardBuild (name , variant ) {
5769 def name_u = name. toUpperCase()
5870 def name_short = name_u. split(' _' )[0 ]
5971 def app_bin = name. toLowerCase() + ' .bin'
6072 return {
61- release_dir = " ${ JENKINS_HOME} /release/${ JOB_NAME} /" + PYCOM_VERSION + " /" + GIT_TAG + " /"
73+ release_dir = " ${ JENKINS_HOME} /release/${ JOB_NAME} /" + PYCOM_VERSION + " /" + GIT_TAG + " /"
6274 sh ''' export PATH=$PATH:/opt/xtensa-esp32-elf/bin;
6375 export IDF_PATH=${WORKSPACE}/esp-idf;
64- cd esp32;
65- make clean BOARD=''' + name_short
76+ make -C esp32 clean BOARD=''' + name_short + ' VARIANT=' + variant
6677
6778 sh ''' export PATH=$PATH:/opt/xtensa-esp32-elf/bin;
6879 export IDF_PATH=${WORKSPACE}/esp-idf;
69- cd esp32;
70- make -j3 release BOARD=''' + name_short + ' RELEASE_DIR=' + release_dir
80+ make -C esp32 -j2 release BOARD=''' + name_short + ' BUILD_DIR=build-' + variant + ' RELEASE_DIR=' + release_dir + variant + ' /' + ' VARIANT=' + variant
7181
72- sh ' mv esp32/build/' + name_u + ' /release/application.elf ' + release_dir + name + " -" + PYCOM_VERSION + ' -application.elf'
82+ sh ' mv esp32/build- ' + variant + ' /' + name_u + ' /release/application.elf ' + release_dir + variant + ' / ' + name + " -" + PYCOM_VERSION + ' -application.elf'
7383 }
7484}
7585
76- def flashBuild (short_name ) {
86+ def flashBuild (short_name , variant ) {
7787 return {
7888 String device_name = get_device_name(short_name)
7989 String board_name_u = get_firmware_name(short_name)
@@ -87,7 +97,7 @@ def flashBuild(short_name) {
8797 sh ' python esp32/tools/pypic.py --port ' + device_name + ' --enter'
8898 sh ' esp-idf/components/esptool_py/esptool/esptool.py --chip esp32 --port ' + device_name + ' --baud 921600 --before no_reset --after no_reset erase_flash'
8999 sh ' python esp32/tools/pypic.py --port ' + device_name + ' --enter'
90- sh ' esp-idf/components/esptool_py/esptool/esptool.py --chip esp32 --port ' + device_name + ' --baud 921600 --before no_reset --after no_reset write_flash -pz --flash_mode dio --flash_freq 80m --flash_size detect 0x1000 esp32/build/ ' + board_name_u + ' /release/bootloader/bootloader.bin 0x8000 esp32/build/ ' + board_name_u + ' /release/lib/partitions.bin 0x10000 esp32/build/ ' + board_name_u + ' /release/' + board_name_u. toLowerCase() + ' .bin'
100+ sh ' esp-idf/components/esptool_py/esptool/esptool.py --chip esp32 --port ' + device_name + ' --baud 921600 --before no_reset --after no_reset write_flash -pz --flash_mode dio --flash_freq 80m --flash_size detect 0x1000 esp32/build- ' + variant + ' / ' + board_name_u + ' /release/bootloader/bootloader.bin 0x8000 esp32/build- ' + variant + ' / ' + board_name_u + ' /release/lib/partitions.bin 0x10000 esp32/build- ' + variant + ' / ' + board_name_u + ' /release/' + board_name_u. toLowerCase() + ' .bin'
91101 sh ' python esp32/tools/pypic.py --port ' + device_name + ' --exit'
92102 }
93103 }
@@ -97,16 +107,17 @@ def testBuild(short_name) {
97107 return {
98108 String device_name = get_device_name(short_name)
99109 String board_name_u = get_firmware_name(short_name)
100- node(get_remote_name(short_name)) {
101- sleep(5 ) // Delay to skip all bootlog
102- dir(' tests' ) {
103- timeout(30 ) {
104- // As some tests are randomly failing... enforce script always returns 0 (OK)
105- sh ' ./run-tests --target=esp32-' + board_name_u + ' --device ' + device_name + ' || exit 0'
106- }
107- }
108- sh ' python esp32/tools/pypic.py --port ' + device_name + ' --enter'
109- sh ' python esp32/tools/pypic.py --port ' + device_name + ' --exit'
110+ node(get_remote_name(short_name)) {
111+ sleep(5 ) // Delay to skip all bootlog
112+ dir(' tests' ) {
113+ timeout(30 ) {
114+ // As some tests are randomly failing... enforce script always returns 0 (OK)
115+ sh ''' export PATH=$PATH:/usr/local/bin;
116+ ./run-tests --target=esp32-''' + board_name_u + ' --device ' + device_name + ' || exit 0'
117+ }
118+ }
119+ sh ' python esp32/tools/pypic.py --port ' + device_name + ' --enter'
120+ sh ' python esp32/tools/pypic.py --port ' + device_name + ' --exit'
110121 }
111122 }
112123}
@@ -133,6 +144,6 @@ def get_remote_name(short_name) {
133144}
134145
135146def get_device_name (short_name ) {
136- return " /dev/serial/by-id/usb- " + short_name + " -if00 "
147+ return " /dev/tty.usbmodemPy " + short_name + " "
137148}
138149
0 commit comments