Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
arduino-esp32
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
xpstem
arduino-esp32
Commits
caa391ab
Unverified
Commit
caa391ab
authored
Sep 30, 2019
by
Me No Dev
Committed by
GitHub
Sep 30, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
More efficient CI builds (#3303)
* More efficient CI builds * Update main.yml
parent
3b71e136
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
103 additions
and
66 deletions
+103
-66
.github/workflows/main.yml
.github/workflows/main.yml
+12
-21
tools/ci/install-arduino-core-esp32.sh
tools/ci/install-arduino-core-esp32.sh
+4
-3
tools/ci/install-arduino-ide.sh
tools/ci/install-arduino-ide.sh
+28
-14
tools/ci/install-platformio-esp32.sh
tools/ci/install-platformio-esp32.sh
+25
-6
tools/ci/on-push.sh
tools/ci/on-push.sh
+34
-22
No files found.
.github/workflows/main.yml
View file @
caa391ab
...
@@ -9,42 +9,33 @@ on:
...
@@ -9,42 +9,33 @@ on:
jobs
:
jobs
:
# Ubuntu
build-arduino-linux
:
build-arduino-linux
:
name
:
Arduino ${{ matrix.chunk }} on ubuntu-latest
name
:
Arduino ${{ matrix.chunk }} on ubuntu-latest
runs-on
:
ubuntu-latest
runs-on
:
ubuntu-latest
strategy
:
strategy
:
matrix
:
matrix
:
chunk
:
[
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
]
chunk
:
[
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
]
steps
:
steps
:
-
uses
:
actions/checkout@v1
-
uses
:
actions/checkout@v1
-
name
:
Build Sketches
-
name
:
Build Sketches
run
:
bash ./tools/ci/on-push.sh ${{ matrix.chunk }}
1
2
run
:
bash ./tools/ci/on-push.sh ${{ matrix.chunk }}
1
5
build-arduino-mac
:
# Windows and MacOS
name
:
Arduino ${{ matrix.chunk }} on macOS-latest
build-arduino-win-mac
:
runs-on
:
macOS-latest
name
:
Arduino on ${{ matrix.os }}
strategy
:
runs-on
:
${{ matrix.os }}
matrix
:
chunk
:
[
3
,
6
]
steps
:
-
uses
:
actions/checkout@v1
-
name
:
Build Sketches
run
:
bash ./tools/ci/on-push.sh ${{ matrix.chunk }}
12
build-arduino-win
:
name
:
Arduino ${{ matrix.chunk }} on windows-latest
runs-on
:
windows-latest
strategy
:
strategy
:
matrix
:
matrix
:
chunk
:
[
5
,
15
,
25
]
os
:
[
windows-latest
,
macOS-latest
]
steps
:
steps
:
-
uses
:
actions/checkout@v1
-
uses
:
actions/checkout@v1
-
name
:
Build Sketches
-
name
:
Build Sketches
run
:
bash ./tools/ci/on-push.sh
${{ matrix.chunk }}
30
run
:
bash ./tools/ci/on-push.sh
# PlatformIO on Windows, Ubuntu and Mac
build-platformio
:
build-platformio
:
name
:
PlatformIO on ${{ matrix.os }}
name
:
PlatformIO on ${{ matrix.os }}
runs-on
:
${{ matrix.os }}
runs-on
:
${{ matrix.os }}
...
@@ -55,4 +46,4 @@ jobs:
...
@@ -55,4 +46,4 @@ jobs:
steps
:
steps
:
-
uses
:
actions/checkout@v1
-
uses
:
actions/checkout@v1
-
name
:
Build Sketches
-
name
:
Build Sketches
run
:
bash ./tools/ci/on-push.sh 1
1
run
:
bash ./tools/ci/on-push.sh 1
1
#equal and non-zero to trigger PIO
tools/ci/install-arduino-core-esp32.sh
View file @
caa391ab
#!/bin/bash
#!/bin/bash
if
[
!
-d
"
$ARDUINO_USR_PATH
/hardware/espressif/esp32"
]
;
then
export
ARDUINO_ESP32_PATH
=
"
$ARDUINO_USR_PATH
/hardware/espressif/esp32"
echo
"Installing ESP32 Arduino Core in '
$ARDUINO_USR_PATH
/hardware/espressif/esp32'..."
if
[
!
-d
"
$ARDUINO_ESP32_PATH
"
]
;
then
echo
"Installing ESP32 Arduino Core in '
$ARDUINO_ESP32_PATH
'..."
script_init_path
=
"
$PWD
"
script_init_path
=
"
$PWD
"
mkdir
-p
"
$ARDUINO_USR_PATH
/hardware/espressif"
&&
\
mkdir
-p
"
$ARDUINO_USR_PATH
/hardware/espressif"
&&
\
cd
"
$ARDUINO_USR_PATH
/hardware/espressif"
cd
"
$ARDUINO_USR_PATH
/hardware/espressif"
...
@@ -36,6 +37,6 @@ if [ ! -d "$ARDUINO_USR_PATH/hardware/espressif/esp32" ]; then
...
@@ -36,6 +37,6 @@ if [ ! -d "$ARDUINO_USR_PATH/hardware/espressif/esp32" ]; then
if
[
$?
-ne
0
]
;
then
echo
"ERROR: Download failed"
;
exit
1
;
fi
if
[
$?
-ne
0
]
;
then
echo
"ERROR: Download failed"
;
exit
1
;
fi
cd
$script_init_path
cd
$script_init_path
echo
"ESP32 Arduino has been installed in '
$ARDUINO_
USR_PATH
/hardware/espressif/esp32
'"
echo
"ESP32 Arduino has been installed in '
$ARDUINO_
ESP32_PATH
'"
echo
""
echo
""
fi
fi
tools/ci/install-arduino-ide.sh
View file @
caa391ab
...
@@ -45,9 +45,8 @@ else
...
@@ -45,9 +45,8 @@ else
export
ARDUINO_USR_PATH
=
"
$HOME
/Arduino"
export
ARDUINO_USR_PATH
=
"
$HOME
/Arduino"
fi
fi
echo
"Installing Arduino IDE on
$OS_NAME
..."
if
[
!
-d
"
$ARDUINO_IDE_PATH
"
]
;
then
if
[
!
-d
"
$ARDUINO_IDE_PATH
"
]
;
then
echo
"Installing Arduino IDE on
$OS_NAME
..."
echo
"Downloading 'arduino-nightly-
$OS_NAME
.
$ARCHIVE_FORMAT
' to 'arduino.
$ARCHIVE_FORMAT
'..."
echo
"Downloading 'arduino-nightly-
$OS_NAME
.
$ARCHIVE_FORMAT
' to 'arduino.
$ARCHIVE_FORMAT
'..."
if
[
"
$OS_IS_LINUX
"
==
"1"
]
;
then
if
[
"
$OS_IS_LINUX
"
==
"1"
]
;
then
wget
-O
"arduino.
$ARCHIVE_FORMAT
"
"https://www.arduino.cc/download.php?f=/arduino-nightly-
$OS_NAME
.
$ARCHIVE_FORMAT
"
>
/dev/null 2>&1
wget
-O
"arduino.
$ARCHIVE_FORMAT
"
"https://www.arduino.cc/download.php?f=/arduino-nightly-
$OS_NAME
.
$ARCHIVE_FORMAT
"
>
/dev/null 2>&1
...
@@ -70,12 +69,21 @@ if [ ! -d "$ARDUINO_IDE_PATH" ]; then
...
@@ -70,12 +69,21 @@ if [ ! -d "$ARDUINO_IDE_PATH" ]; then
fi
fi
if
[
$?
-ne
0
]
;
then
exit
1
;
fi
if
[
$?
-ne
0
]
;
then
exit
1
;
fi
rm
-rf
"arduino.
$ARCHIVE_FORMAT
"
rm
-rf
"arduino.
$ARCHIVE_FORMAT
"
fi
mkdir
-p
"
$ARDUINO_USR_PATH
/libraries"
mkdir
-p
"
$ARDUINO_USR_PATH
/libraries"
mkdir
-p
"
$ARDUINO_USR_PATH
/hardware"
mkdir
-p
"
$ARDUINO_USR_PATH
/hardware"
echo
"Arduino IDE Installed in '
$ARDUINO_IDE_PATH
'"
echo
""
fi
function
build_sketch
(){
# build_sketch <fqbn> <path-to-ino> [extra-options]
function
build_sketch
(){
# build_sketch <fqbn> <path-to-ino> [extra-options]
if
[
"$#"
-lt
2
]
;
then
echo
"ERROR: Illegal number of parameters"
echo
"USAGE: build_sketch <fqbn> <path-to-ino> [extra-options]"
return
1
fi
local
fqbn
=
"
$1
"
local
fqbn
=
"
$1
"
local
sketch
=
"
$2
"
local
sketch
=
"
$2
"
local
xtra_opts
=
"
$3
"
local
xtra_opts
=
"
$3
"
...
@@ -126,14 +134,26 @@ function count_sketches() # count_sketches <examples-path>
...
@@ -126,14 +134,26 @@ function count_sketches() # count_sketches <examples-path>
return
$sketchnum
return
$sketchnum
}
}
function
build_sketches
()
# build_sketches <
examples-path> <fqbn
> <chunk> <total-chunks> [extra-options]
function
build_sketches
()
# build_sketches <
fqbn> <examples-path
> <chunk> <total-chunks> [extra-options]
{
{
local
examples
=
$1
local
fqbn
=
$1
local
fqbn
=
$2
local
examples
=
$2
local
chunk_idex
=
$3
local
chunk_idex
=
$3
local
chunks_num
=
$4
local
chunks_num
=
$4
local
xtra_opts
=
$5
local
xtra_opts
=
$5
if
[
"$#"
-lt
2
]
;
then
echo
"ERROR: Illegal number of parameters"
echo
"USAGE: build_sketches <fqbn> <examples-path> [<chunk> <total-chunks>] [extra-options]"
return
1
fi
if
[
"$#"
-lt
4
]
;
then
chunk_idex
=
"0"
chunks_num
=
"1"
xtra_opts
=
$3
fi
if
[
"
$chunks_num
"
-le
0
]
;
then
if
[
"
$chunks_num
"
-le
0
]
;
then
echo
"ERROR: Chunks count must be positive number"
echo
"ERROR: Chunks count must be positive number"
return
1
return
1
...
@@ -195,9 +215,3 @@ function build_sketches() # build_sketches <examples-path> <fqbn> <chunk> <total
...
@@ -195,9 +215,3 @@ function build_sketches() # build_sketches <examples-path> <fqbn> <chunk> <total
return
0
return
0
}
}
echo
"Arduino IDE Installed in '
$ARDUINO_IDE_PATH
'"
# echo "You can install boards in '$ARDUINO_IDE_PATH/hardware' or in '$ARDUINO_USR_PATH/hardware'"
# echo "User libraries should be installed in '$ARDUINO_USR_PATH/libraries'"
# echo "Then you can call 'build_sketch <fqbn> <path-to-ino> [extra-options]' to build your sketches"
echo
""
tools/ci/install-platformio-esp32.sh
View file @
caa391ab
#!/bin/bash
#!/bin/bash
export
PLATFORMIO_ESP32_PATH
=
"
$HOME
/.platformio/packages/framework-arduinoespressif32"
echo
"Installing Python Wheel..."
echo
"Installing Python Wheel..."
pip
install
wheel
>
/dev/null 2>&1
pip
install
wheel
>
/dev/null 2>&1
if
[
$?
-ne
0
]
;
then
echo
"ERROR: Install failed"
;
exit
1
;
fi
if
[
$?
-ne
0
]
;
then
echo
"ERROR: Install failed"
;
exit
1
;
fi
...
@@ -23,10 +25,10 @@ if [ $? -ne 0 ]; then echo "ERROR: Replace failed"; exit 1; fi
...
@@ -23,10 +25,10 @@ if [ $? -ne 0 ]; then echo "ERROR: Replace failed"; exit 1; fi
if
[
"
$GITHUB_REPOSITORY
"
==
"espressif/arduino-esp32"
]
;
then
if
[
"
$GITHUB_REPOSITORY
"
==
"espressif/arduino-esp32"
]
;
then
echo
"Linking Core..."
&&
\
echo
"Linking Core..."
&&
\
ln
-s
$GITHUB_WORKSPACE
"
$
HOME
/.platformio/packages/framework-arduinoespressif32
"
ln
-s
$GITHUB_WORKSPACE
"
$
PLATFORMIO_ESP32_PATH
"
else
else
echo
"Cloning Core Repository..."
&&
\
echo
"Cloning Core Repository..."
&&
\
git clone https://github.com/espressif/arduino-esp32.git
"
$
HOME
/.platformio/packages/framework-arduinoespressif32
"
>
/dev/null 2>&1
git clone https://github.com/espressif/arduino-esp32.git
"
$
PLATFORMIO_ESP32_PATH
"
>
/dev/null 2>&1
if
[
$?
-ne
0
]
;
then
echo
"ERROR: GIT clone failed"
;
exit
1
;
fi
if
[
$?
-ne
0
]
;
then
echo
"ERROR: GIT clone failed"
;
exit
1
;
fi
fi
fi
...
@@ -34,7 +36,13 @@ echo "PlatformIO for ESP32 has been installed"
...
@@ -34,7 +36,13 @@ echo "PlatformIO for ESP32 has been installed"
echo
""
echo
""
function
build_pio_sketch
(){
# build_pio_sketch <board> <path-to-ino> [extra-options]
function
build_pio_sketch
(){
# build_pio_sketch <board> <path-to-ino>
if
[
"$#"
-lt
2
]
;
then
echo
"ERROR: Illegal number of parameters"
echo
"USAGE: build_pio_sketch <board> <path-to-ino>"
return
1
fi
local
board
=
"
$1
"
local
board
=
"
$1
"
local
sketch
=
"
$2
"
local
sketch
=
"
$2
"
local
sketch_dir
=
$(
dirname
"
$sketch
"
)
local
sketch_dir
=
$(
dirname
"
$sketch
"
)
...
@@ -65,13 +73,24 @@ function count_sketches() # count_sketches <examples-path>
...
@@ -65,13 +73,24 @@ function count_sketches() # count_sketches <examples-path>
return
$sketchnum
return
$sketchnum
}
}
function
build_pio_sketches
()
# build_pio_sketches <
examples-path> <board
> <chunk> <total-chunks>
function
build_pio_sketches
()
# build_pio_sketches <
board> <examples-path
> <chunk> <total-chunks>
{
{
local
examples
=
$1
if
[
"$#"
-lt
2
]
;
then
local
board
=
$2
echo
"ERROR: Illegal number of parameters"
echo
"USAGE: build_pio_sketches <board> <examples-path> [<chunk> <total-chunks>]"
return
1
fi
local
board
=
$1
local
examples
=
$2
local
chunk_idex
=
$3
local
chunk_idex
=
$3
local
chunks_num
=
$4
local
chunks_num
=
$4
if
[
"$#"
-lt
4
]
;
then
chunk_idex
=
"0"
chunks_num
=
"1"
fi
if
[
"
$chunks_num
"
-le
0
]
;
then
if
[
"
$chunks_num
"
-le
0
]
;
then
echo
"ERROR: Chunks count must be positive number"
echo
"ERROR: Chunks count must be positive number"
return
1
return
1
...
...
tools/ci/on-push.sh
View file @
caa391ab
...
@@ -20,37 +20,49 @@ CHUNK_INDEX=$1
...
@@ -20,37 +20,49 @@ CHUNK_INDEX=$1
CHUNKS_CNT
=
$2
CHUNKS_CNT
=
$2
BUILD_PIO
=
0
BUILD_PIO
=
0
if
[
"$#"
-lt
2
]
||
[
"
$CHUNKS_CNT
"
-le
0
]
;
then
if
[
"$#"
-lt
2
]
||
[
"
$CHUNKS_CNT
"
-le
0
]
;
then
echo
"Building all sketches"
CHUNK_INDEX
=
0
CHUNK_INDEX
=
0
CHUNKS_CNT
=
1
CHUNKS_CNT
=
1
fi
elif
[
"
$CHUNK_INDEX
"
-gt
"
$CHUNKS_CNT
"
]
;
then
if
[
"
$CHUNK_INDEX
"
-gt
"
$CHUNKS_CNT
"
]
;
then
CHUNK_INDEX
=
$CHUNKS_CNT
CHUNK_INDEX
=
$CHUNKS_CNT
fi
elif
[
"
$CHUNK_INDEX
"
-eq
"
$CHUNKS_CNT
"
]
;
then
if
[
"
$CHUNK_INDEX
"
-eq
"
$CHUNKS_CNT
"
]
;
then
BUILD_PIO
=
1
BUILD_PIO
=
1
fi
fi
# CMake Test
if
[
"
$CHUNK_INDEX
"
-eq
0
]
;
then
bash ./tools/ci/check-cmakelists.sh
if
[
$?
-ne
0
]
;
then
exit
1
;
fi
fi
if
[
"
$BUILD_PIO
"
-eq
0
]
;
then
if
[
"
$BUILD_PIO
"
-eq
0
]
;
then
# ArduinoIDE Test
# ArduinoIDE Test
FQBN
=
"espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=huge_app"
source
./tools/ci/install-arduino-ide.sh
source
./tools/ci/install-arduino-ide.sh
source
./tools/ci/install-arduino-core-esp32.sh
source
./tools/ci/install-arduino-core-esp32.sh
build_sketches
"
$GITHUB_WORKSPACE
/libraries"
"espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=huge_app"
"
$CHUNK_INDEX
"
"
$CHUNKS_CNT
"
if
[
"
$OS_IS_WINDOWS
"
==
"1"
]
;
then
build_sketch
"
$FQBN
"
"
$ARDUINO_ESP32_PATH
/libraries/WiFiClientSecure/examples/WiFiClientSecure/WiFiClientSecure.ino"
&&
\
build_sketch
"
$FQBN
"
"
$ARDUINO_ESP32_PATH
/libraries/BLE/examples/BLE_server/BLE_server.ino"
&&
\
build_sketch
"
$FQBN
"
"
$ARDUINO_ESP32_PATH
/libraries/AzureIoT/examples/GetStarted/GetStarted.ino"
&&
\
build_sketch
"
$FQBN
"
"
$ARDUINO_ESP32_PATH
/libraries/ESP32/examples/Camera/CameraWebServer/CameraWebServer.ino"
elif
[
"
$OS_IS_MACOS
"
==
"1"
]
;
then
build_sketch
"
$FQBN
"
"
$ARDUINO_ESP32_PATH
/libraries/WiFi/examples/WiFiClient/WiFiClient.ino"
&&
\
build_sketch
"
$FQBN
"
"
$ARDUINO_ESP32_PATH
/libraries/WiFiClientSecure/examples/WiFiClientSecure/WiFiClientSecure.ino"
&&
\
build_sketch
"
$FQBN
"
"
$ARDUINO_ESP32_PATH
/libraries/BluetoothSerial/examples/SerialToSerialBT/SerialToSerialBT.ino"
&&
\
build_sketch
"
$FQBN
"
"
$ARDUINO_ESP32_PATH
/libraries/BLE/examples/BLE_server/BLE_server.ino"
&&
\
build_sketch
"
$FQBN
"
"
$ARDUINO_ESP32_PATH
/libraries/AzureIoT/examples/GetStarted/GetStarted.ino"
&&
\
build_sketch
"
$FQBN
"
"
$ARDUINO_ESP32_PATH
/libraries/ESP32/examples/Camera/CameraWebServer/CameraWebServer.ino"
else
# CMake Test
if
[
"
$CHUNK_INDEX
"
-eq
0
]
;
then
bash
"
$ARDUINO_ESP32_PATH
/tools/ci/check-cmakelists.sh"
if
[
$?
-ne
0
]
;
then
exit
1
;
fi
fi
build_sketches
"
$FQBN
"
"
$ARDUINO_ESP32_PATH
/libraries"
"
$CHUNK_INDEX
"
"
$CHUNKS_CNT
"
fi
else
else
# PlatformIO Test
# PlatformIO Test
source
./tools/ci/install-platformio-esp32.sh
source
./tools/ci/install-platformio-esp32.sh
python
-m
platformio ci
--board
esp32dev libraries/WiFi/examples/WiFiClient
&&
\
BOARD
=
"esp32dev"
python
-m
platformio ci
--board
esp32dev libraries/WiFiClientSecure/examples/WiFiClientSecure
&&
\
build_pio_sketch
"
$BOARD
"
"
$PLATFORMIO_ESP32_PATH
/libraries/WiFi/examples/WiFiClient/WiFiClient.ino"
&&
\
python
-m
platformio ci
--board
esp32dev libraries/BluetoothSerial/examples/SerialToSerialBT
&&
\
build_pio_sketch
"
$BOARD
"
"
$PLATFORMIO_ESP32_PATH
/libraries/WiFiClientSecure/examples/WiFiClientSecure/WiFiClientSecure.ino"
&&
\
python
-m
platformio ci
--board
esp32dev libraries/BLE/examples/BLE_server
&&
\
build_pio_sketch
"
$BOARD
"
"
$PLATFORMIO_ESP32_PATH
/libraries/BluetoothSerial/examples/SerialToSerialBT/SerialToSerialBT.ino"
&&
\
python
-m
platformio ci
--board
esp32dev libraries/AzureIoT/examples/GetStarted
&&
\
build_pio_sketch
"
$BOARD
"
"
$PLATFORMIO_ESP32_PATH
/libraries/BLE/examples/BLE_server/BLE_server.ino"
&&
\
python
-m
platformio ci
--board
esp32dev libraries/ESP32/examples/Camera/CameraWebServer
--project-option
=
"board_build.partitions = huge_app.csv"
build_pio_sketch
"
$BOARD
"
"
$PLATFORMIO_ESP32_PATH
/libraries/AzureIoT/examples/GetStarted/GetStarted.ino"
&&
\
#build_pio_sketches libraries esp32dev $CHUNK_INDEX $CHUNKS_CNT
build_pio_sketch
"
$BOARD
"
"
$PLATFORMIO_ESP32_PATH
/libraries/ESP32/examples/Camera/CameraWebServer/CameraWebServer.ino"
if
[
$?
-ne
0
]
;
then
exit
1
;
fi
#build_pio_sketches esp32dev "$PLATFORMIO_ESP32_PATH/libraries"
fi
fi
if
[
$?
-ne
0
]
;
then
exit
1
;
fi
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment