Skip to content
This repository was archived by the owner on Feb 4, 2023. It is now read-only.

Commit 4eb4064

Browse files
authoredOct 2, 2019
Ci update (me-no-dev#127)
* Update scripts * Update and rename main.yml to push.yml * make pio build the web server examples as well * Skip web server tests on windows * Update on-push.sh
1 parent b4f18df commit 4eb4064

9 files changed

+469
-276
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#!/bin/bash
2+
3+
echo "Installing ESP8266 Arduino Core ..."
4+
script_init_path="$PWD"
5+
mkdir -p "$ARDUINO_USR_PATH/hardware/esp8266com"
6+
cd "$ARDUINO_USR_PATH/hardware/esp8266com"
7+
8+
echo "Installing Python Serial ..."
9+
pip install pyserial > /dev/null
10+
11+
if [ "$OS_IS_WINDOWS" == "1" ]; then
12+
echo "Installing Python Requests ..."
13+
pip install requests > /dev/null
14+
fi
15+
16+
echo "Cloning Core Repository ..."
17+
git clone https://github.com/esp8266/Arduino.git esp8266 > /dev/null 2>&1
18+
19+
echo "Updating submodules ..."
20+
cd esp8266
21+
git submodule update --init --recursive > /dev/null 2>&1
22+
23+
echo "Installing Platform Tools ..."
24+
cd tools
25+
python get.py > /dev/null
26+
cd $script_init_path
27+
28+
echo "ESP8266 Arduino has been installed in '$ARDUINO_USR_PATH/hardware/esp8266com'"
29+
echo ""
+213
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,213 @@
1+
#!/bin/bash
2+
3+
#OSTYPE: 'linux-gnu', ARCH: 'x86_64' => linux64
4+
#OSTYPE: 'msys', ARCH: 'x86_64' => win32
5+
#OSTYPE: 'darwin18', ARCH: 'i386' => macos
6+
7+
OSBITS=`arch`
8+
if [[ "$OSTYPE" == "linux"* ]]; then
9+
export OS_IS_LINUX="1"
10+
ARCHIVE_FORMAT="tar.xz"
11+
if [[ "$OSBITS" == "i686" ]]; then
12+
OS_NAME="linux32"
13+
elif [[ "$OSBITS" == "x86_64" ]]; then
14+
OS_NAME="linux64"
15+
elif [[ "$OSBITS" == "armv7l" || "$OSBITS" == "aarch64" ]]; then
16+
OS_NAME="linuxarm"
17+
else
18+
OS_NAME="$OSTYPE-$OSBITS"
19+
echo "Unknown OS '$OS_NAME'"
20+
exit 1
21+
fi
22+
elif [[ "$OSTYPE" == "darwin"* ]]; then
23+
export OS_IS_MACOS="1"
24+
ARCHIVE_FORMAT="zip"
25+
OS_NAME="macosx"
26+
elif [[ "$OSTYPE" == "cygwin" ]] || [[ "$OSTYPE" == "msys" ]] || [[ "$OSTYPE" == "win32" ]]; then
27+
export OS_IS_WINDOWS="1"
28+
ARCHIVE_FORMAT="zip"
29+
OS_NAME="windows"
30+
else
31+
OS_NAME="$OSTYPE-$OSBITS"
32+
echo "Unknown OS '$OS_NAME'"
33+
exit 1
34+
fi
35+
export OS_NAME
36+
37+
ARDUINO_BUILD_DIR="$HOME/.arduino/build.tmp"
38+
ARDUINO_CACHE_DIR="$HOME/.arduino/cache.tmp"
39+
40+
if [ "$OS_IS_MACOS" == "1" ]; then
41+
export ARDUINO_IDE_PATH="/Applications/Arduino.app/Contents/Java"
42+
export ARDUINO_USR_PATH="$HOME/Documents/Arduino"
43+
else
44+
export ARDUINO_IDE_PATH="$HOME/arduino_ide"
45+
export ARDUINO_USR_PATH="$HOME/Arduino"
46+
fi
47+
48+
if [ ! -d "$ARDUINO_IDE_PATH" ]; then
49+
echo "Installing Arduino IDE on $OS_NAME ..."
50+
echo "Downloading 'arduino-nightly-$OS_NAME.$ARCHIVE_FORMAT' to 'arduino.$ARCHIVE_FORMAT' ..."
51+
if [ "$OS_IS_LINUX" == "1" ]; then
52+
wget -O "arduino.$ARCHIVE_FORMAT" "https://www.arduino.cc/download.php?f=/arduino-nightly-$OS_NAME.$ARCHIVE_FORMAT" > /dev/null 2>&1
53+
echo "Extracting 'arduino.$ARCHIVE_FORMAT' ..."
54+
tar xf "arduino.$ARCHIVE_FORMAT" > /dev/null
55+
mv arduino-nightly "$ARDUINO_IDE_PATH"
56+
else
57+
curl -o "arduino.$ARCHIVE_FORMAT" -L "https://www.arduino.cc/download.php?f=/arduino-nightly-$OS_NAME.$ARCHIVE_FORMAT" > /dev/null 2>&1
58+
echo "Extracting 'arduino.$ARCHIVE_FORMAT' ..."
59+
unzip "arduino.$ARCHIVE_FORMAT" > /dev/null
60+
if [ "$OS_IS_MACOS" == "1" ]; then
61+
mv "Arduino.app" "/Applications/Arduino.app"
62+
else
63+
mv arduino-nightly "$ARDUINO_IDE_PATH"
64+
fi
65+
fi
66+
rm -rf "arduino.$ARCHIVE_FORMAT"
67+
68+
mkdir -p "$ARDUINO_USR_PATH/libraries"
69+
mkdir -p "$ARDUINO_USR_PATH/hardware"
70+
71+
echo "Arduino IDE Installed in '$ARDUINO_IDE_PATH'"
72+
echo ""
73+
fi
74+
75+
function build_sketch(){ # build_sketch <fqbn> <path-to-ino> [extra-options]
76+
if [ "$#" -lt 2 ]; then
77+
echo "ERROR: Illegal number of parameters"
78+
echo "USAGE: build_sketch <fqbn> <path-to-ino> [extra-options]"
79+
return 1
80+
fi
81+
82+
local fqbn="$1"
83+
local sketch="$2"
84+
local xtra_opts="$3"
85+
local win_opts=""
86+
if [ "$OS_IS_WINDOWS" == "1" ]; then
87+
local ctags_version=`ls "$ARDUINO_IDE_PATH/tools-builder/ctags/"`
88+
local preprocessor_version=`ls "$ARDUINO_IDE_PATH/tools-builder/arduino-preprocessor/"`
89+
win_opts="-prefs=runtime.tools.ctags.path=$ARDUINO_IDE_PATH/tools-builder/ctags/$ctags_version -prefs=runtime.tools.arduino-preprocessor.path=$ARDUINO_IDE_PATH/tools-builder/arduino-preprocessor/$preprocessor_version"
90+
fi
91+
92+
echo ""
93+
echo "Compiling '"$(basename "$sketch")"' ..."
94+
mkdir -p "$ARDUINO_BUILD_DIR"
95+
mkdir -p "$ARDUINO_CACHE_DIR"
96+
$ARDUINO_IDE_PATH/arduino-builder -compile -logger=human -core-api-version=10810 \
97+
-fqbn=$fqbn \
98+
-warnings="all" \
99+
-tools "$ARDUINO_IDE_PATH/tools-builder" \
100+
-tools "$ARDUINO_IDE_PATH/tools" \
101+
-built-in-libraries "$ARDUINO_IDE_PATH/libraries" \
102+
-hardware "$ARDUINO_IDE_PATH/hardware" \
103+
-hardware "$ARDUINO_USR_PATH/hardware" \
104+
-libraries "$ARDUINO_USR_PATH/libraries" \
105+
-build-cache "$ARDUINO_CACHE_DIR" \
106+
-build-path "$ARDUINO_BUILD_DIR" \
107+
$win_opts $xtra_opts "$sketch"
108+
}
109+
110+
function count_sketches() # count_sketches <examples-path>
111+
{
112+
local examples="$1"
113+
local sketches=$(find $examples -name *.ino)
114+
local sketchnum=0
115+
rm -rf sketches.txt
116+
for sketch in $sketches; do
117+
local sketchdir=$(dirname $sketch)
118+
local sketchdirname=$(basename $sketchdir)
119+
local sketchname=$(basename $sketch)
120+
if [[ "${sketchdirname}.ino" != "$sketchname" ]]; then
121+
continue
122+
fi;
123+
if [[ -f "$sketchdir/.test.skip" ]]; then
124+
continue
125+
fi
126+
echo $sketch >> sketches.txt
127+
sketchnum=$(($sketchnum + 1))
128+
done
129+
return $sketchnum
130+
}
131+
132+
function build_sketches() # build_sketches <fqbn> <examples-path> <chunk> <total-chunks> [extra-options]
133+
{
134+
local fqbn=$1
135+
local examples=$2
136+
local chunk_idex=$3
137+
local chunks_num=$4
138+
local xtra_opts=$5
139+
140+
if [ "$#" -lt 2 ]; then
141+
echo "ERROR: Illegal number of parameters"
142+
echo "USAGE: build_sketches <fqbn> <examples-path> [<chunk> <total-chunks>] [extra-options]"
143+
return 1
144+
fi
145+
146+
if [ "$#" -lt 4 ]; then
147+
chunk_idex="0"
148+
chunks_num="1"
149+
xtra_opts=$3
150+
fi
151+
152+
if [ "$chunks_num" -le 0 ]; then
153+
echo "ERROR: Chunks count must be positive number"
154+
return 1
155+
fi
156+
if [ "$chunk_idex" -ge "$chunks_num" ]; then
157+
echo "ERROR: Chunk index must be less than chunks count"
158+
return 1
159+
fi
160+
161+
set +e
162+
count_sketches "$examples"
163+
local sketchcount=$?
164+
set -e
165+
local sketches=$(cat sketches.txt)
166+
rm -rf sketches.txt
167+
168+
local chunk_size=$(( $sketchcount / $chunks_num ))
169+
local all_chunks=$(( $chunks_num * $chunk_size ))
170+
if [ "$all_chunks" -lt "$sketchcount" ]; then
171+
chunk_size=$(( $chunk_size + 1 ))
172+
fi
173+
174+
local start_index=$(( $chunk_idex * $chunk_size ))
175+
if [ "$sketchcount" -le "$start_index" ]; then
176+
echo "Skipping job"
177+
return 0
178+
fi
179+
180+
local end_index=$(( $(( $chunk_idex + 1 )) * $chunk_size ))
181+
if [ "$end_index" -gt "$sketchcount" ]; then
182+
end_index=$sketchcount
183+
fi
184+
185+
local start_num=$(( $start_index + 1 ))
186+
echo "Found $sketchcount Sketches";
187+
echo "Chunk Count : $chunks_num"
188+
echo "Chunk Size : $chunk_size"
189+
echo "Start Sketch: $start_num"
190+
echo "End Sketch : $end_index"
191+
192+
local sketchnum=0
193+
for sketch in $sketches; do
194+
local sketchdir=$(dirname $sketch)
195+
local sketchdirname=$(basename $sketchdir)
196+
local sketchname=$(basename $sketch)
197+
if [ "${sketchdirname}.ino" != "$sketchname" ] \
198+
|| [ -f "$sketchdir/.test.skip" ]; then
199+
continue
200+
fi
201+
sketchnum=$(($sketchnum + 1))
202+
if [ "$sketchnum" -le "$start_index" ] \
203+
|| [ "$sketchnum" -gt "$end_index" ]; then
204+
continue
205+
fi
206+
build_sketch "$fqbn" "$sketch" "$xtra_opts"
207+
local result=$?
208+
if [ $result -ne 0 ]; then
209+
return $result
210+
fi
211+
done
212+
return 0
213+
}

‎.github/scripts/install-platformio.sh

+129
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
#!/bin/bash
2+
3+
echo "Installing Python Wheel ..."
4+
pip install wheel > /dev/null 2>&1
5+
6+
echo "Installing PlatformIO ..."
7+
pip install -U platformio > /dev/null 2>&1
8+
9+
echo "PlatformIO has been installed"
10+
echo ""
11+
12+
13+
function build_pio_sketch(){ # build_pio_sketch <board> <path-to-ino>
14+
if [ "$#" -lt 2 ]; then
15+
echo "ERROR: Illegal number of parameters"
16+
echo "USAGE: build_pio_sketch <board> <path-to-ino>"
17+
return 1
18+
fi
19+
20+
local board="$1"
21+
local sketch="$2"
22+
local sketch_dir=$(dirname "$sketch")
23+
echo ""
24+
echo "Compiling '"$(basename "$sketch")"' ..."
25+
python -m platformio ci -l '.' --board "$board" "$sketch_dir" --project-option="board_build.partitions = huge_app.csv"
26+
}
27+
28+
function count_sketches() # count_sketches <examples-path>
29+
{
30+
local examples="$1"
31+
local sketches=$(find $examples -name *.ino)
32+
local sketchnum=0
33+
rm -rf sketches.txt
34+
for sketch in $sketches; do
35+
local sketchdir=$(dirname $sketch)
36+
local sketchdirname=$(basename $sketchdir)
37+
local sketchname=$(basename $sketch)
38+
if [[ "${sketchdirname}.ino" != "$sketchname" ]]; then
39+
continue
40+
fi;
41+
if [[ -f "$sketchdir/.test.skip" ]]; then
42+
continue
43+
fi
44+
echo $sketch >> sketches.txt
45+
sketchnum=$(($sketchnum + 1))
46+
done
47+
return $sketchnum
48+
}
49+
50+
function build_pio_sketches() # build_pio_sketches <board> <examples-path> <chunk> <total-chunks>
51+
{
52+
if [ "$#" -lt 2 ]; then
53+
echo "ERROR: Illegal number of parameters"
54+
echo "USAGE: build_pio_sketches <board> <examples-path> [<chunk> <total-chunks>]"
55+
return 1
56+
fi
57+
58+
local board=$1
59+
local examples=$2
60+
local chunk_idex=$3
61+
local chunks_num=$4
62+
63+
if [ "$#" -lt 4 ]; then
64+
chunk_idex="0"
65+
chunks_num="1"
66+
fi
67+
68+
if [ "$chunks_num" -le 0 ]; then
69+
echo "ERROR: Chunks count must be positive number"
70+
return 1
71+
fi
72+
if [ "$chunk_idex" -ge "$chunks_num" ]; then
73+
echo "ERROR: Chunk index must be less than chunks count"
74+
return 1
75+
fi
76+
77+
set +e
78+
count_sketches "$examples"
79+
local sketchcount=$?
80+
set -e
81+
local sketches=$(cat sketches.txt)
82+
rm -rf sketches.txt
83+
84+
local chunk_size=$(( $sketchcount / $chunks_num ))
85+
local all_chunks=$(( $chunks_num * $chunk_size ))
86+
if [ "$all_chunks" -lt "$sketchcount" ]; then
87+
chunk_size=$(( $chunk_size + 1 ))
88+
fi
89+
90+
local start_index=$(( $chunk_idex * $chunk_size ))
91+
if [ "$sketchcount" -le "$start_index" ]; then
92+
echo "Skipping job"
93+
return 0
94+
fi
95+
96+
local end_index=$(( $(( $chunk_idex + 1 )) * $chunk_size ))
97+
if [ "$end_index" -gt "$sketchcount" ]; then
98+
end_index=$sketchcount
99+
fi
100+
101+
local start_num=$(( $start_index + 1 ))
102+
echo "Found $sketchcount Sketches";
103+
echo "Chunk Count : $chunks_num"
104+
echo "Chunk Size : $chunk_size"
105+
echo "Start Sketch: $start_num"
106+
echo "End Sketch : $end_index"
107+
108+
local sketchnum=0
109+
for sketch in $sketches; do
110+
local sketchdir=$(dirname $sketch)
111+
local sketchdirname=$(basename $sketchdir)
112+
local sketchname=$(basename $sketch)
113+
if [ "${sketchdirname}.ino" != "$sketchname" ] \
114+
|| [ -f "$sketchdir/.test.skip" ]; then
115+
continue
116+
fi
117+
sketchnum=$(($sketchnum + 1))
118+
if [ "$sketchnum" -le "$start_index" ] \
119+
|| [ "$sketchnum" -gt "$end_index" ]; then
120+
continue
121+
fi
122+
build_pio_sketch "$board" "$sketch"
123+
local result=$?
124+
if [ $result -ne 0 ]; then
125+
return $result
126+
fi
127+
done
128+
return 0
129+
}

‎.github/scripts/on-push.sh

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
if [ ! -z "$TRAVIS_BUILD_DIR" ]; then
6+
export GITHUB_WORKSPACE="$TRAVIS_BUILD_DIR"
7+
export GITHUB_REPOSITORY="$TRAVIS_REPO_SLUG"
8+
elif [ -z "$GITHUB_WORKSPACE" ]; then
9+
export GITHUB_WORKSPACE="$PWD"
10+
export GITHUB_REPOSITORY="me-no-dev/ESPAsyncTCP"
11+
fi
12+
13+
CHUNK_INDEX=$1
14+
CHUNKS_CNT=$2
15+
BUILD_PIO=0
16+
if [ "$#" -lt 2 ] || [ "$CHUNKS_CNT" -le 0 ]; then
17+
CHUNK_INDEX=0
18+
CHUNKS_CNT=1
19+
elif [ "$CHUNK_INDEX" -gt "$CHUNKS_CNT" ]; then
20+
CHUNK_INDEX=$CHUNKS_CNT
21+
elif [ "$CHUNK_INDEX" -eq "$CHUNKS_CNT" ]; then
22+
BUILD_PIO=1
23+
fi
24+
25+
if [ "$BUILD_PIO" -eq 0 ]; then
26+
# ArduinoIDE Test
27+
source ./.github/scripts/install-arduino-ide.sh
28+
source ./.github/scripts/install-arduino-core-esp8266.sh
29+
30+
echo "Installing ESPAsyncTCP ..."
31+
cp -rf "$GITHUB_WORKSPACE" "$ARDUINO_USR_PATH/libraries/ESPAsyncTCP"
32+
33+
FQBN="esp8266com:esp8266:generic:eesz=4M1M,ip=lm2f"
34+
build_sketches "$FQBN" "$GITHUB_WORKSPACE/examples"
35+
if [ -x "$OS_IS_WINDOWS" ]; then
36+
echo "Installing ESPAsyncWebServer ..."
37+
git clone https://github.com/me-no-dev/ESPAsyncWebServer "$ARDUINO_USR_PATH/libraries/ESPAsyncWebServer" > /dev/null 2>&1
38+
39+
echo "Installing ArduinoJson ..."
40+
git clone https://github.com/bblanchon/ArduinoJson "$ARDUINO_USR_PATH/libraries/ArduinoJson" > /dev/null 2>&1
41+
42+
build_sketches "$FQBN" "$ARDUINO_USR_PATH/libraries/ESPAsyncWebServer/examples"
43+
fi
44+
else
45+
# PlatformIO Test
46+
source ./.github/scripts/install-platformio.sh
47+
48+
echo "Installing ESPAsyncTCP ..."
49+
python -m platformio lib --storage-dir "$GITHUB_WORKSPACE" install
50+
51+
BOARD="esp12e"
52+
build_pio_sketches "$BOARD" "$GITHUB_WORKSPACE/examples"
53+
54+
if [[ "$OSTYPE" != "cygwin" ]] && [[ "$OSTYPE" != "msys" ]] && [[ "$OSTYPE" != "win32" ]]; then
55+
echo "Installing ESPAsyncWebServer ..."
56+
python -m platformio lib -g install https://github.com/me-no-dev/ESPAsyncWebServer.git > /dev/null 2>&1
57+
git clone https://github.com/me-no-dev/ESPAsyncWebServer "$HOME/ESPAsyncWebServer" > /dev/null 2>&1
58+
59+
echo "Installing ArduinoJson ..."
60+
python -m platformio lib -g install https://github.com/bblanchon/ArduinoJson.git > /dev/null 2>&1
61+
62+
build_pio_sketches "$BOARD" "$HOME/ESPAsyncWebServer/examples"
63+
fi
64+
fi

‎.github/workflows/main.yml

-32
This file was deleted.

‎.github/workflows/push.yml

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: ESP Async TCP CI
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
- release/*
8+
pull_request:
9+
10+
jobs:
11+
12+
build-arduino:
13+
name: Arduino on ${{ matrix.os }}
14+
runs-on: ${{ matrix.os }}
15+
strategy:
16+
matrix:
17+
os: [ubuntu-latest, windows-latest, macOS-latest]
18+
steps:
19+
- uses: actions/checkout@v1
20+
- name: Build Tests
21+
run: bash ./.github/scripts/on-push.sh 0 1
22+
23+
build-pio:
24+
name: PlatformIO on ${{ matrix.os }}
25+
runs-on: ${{ matrix.os }}
26+
strategy:
27+
matrix:
28+
os: [ubuntu-latest, windows-latest, macOS-latest]
29+
steps:
30+
- uses: actions/checkout@v1
31+
- name: Build Tests
32+
run: bash ./.github/scripts/on-push.sh 1 1

‎.travis.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ jobs:
1515
- name: "Arduino Build"
1616
if: tag IS blank AND (type = pull_request OR (type = push AND branch = master))
1717
stage: build
18-
script: bash $TRAVIS_BUILD_DIR/travis/build.sh
18+
script: bash $TRAVIS_BUILD_DIR/.github/scripts/on-push.sh
1919

2020
- name: "PlatformIO Build"
2121
if: tag IS blank AND (type = pull_request OR (type = push AND branch = master))
2222
stage: build
23-
script: bash $TRAVIS_BUILD_DIR/travis/build-pio.sh
23+
script: bash $TRAVIS_BUILD_DIR/.github/scripts/on-push.sh 1 1
2424

2525
notifications:
2626
email:

‎travis/build-pio.sh

-38
This file was deleted.

‎travis/build.sh

-204
This file was deleted.

0 commit comments

Comments
 (0)
This repository has been archived.