Skip to content

Commit 09272e1

Browse files
hathachladyada
authored andcommitted
Actionci (#53)
* test actionci * more test * more test * more tests * missing steps * fix BSP_URL * run test sketch * compile all boards * install arduino:avr * run build_all script * adafruit-nrfutil
1 parent 32da21f commit 09272e1

File tree

2 files changed

+136
-0
lines changed

2 files changed

+136
-0
lines changed

.github/workflows/githubci.yml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: Build
2+
3+
on: [pull_request, push]
4+
5+
jobs:
6+
build:
7+
runs-on: ubuntu-latest
8+
9+
steps:
10+
- name: Setup Python
11+
uses: actions/setup-python@v1
12+
with:
13+
python-version: '3.x'
14+
15+
- name: Checkout code
16+
uses: actions/checkout@v2
17+
18+
- name: Install Arduino CLI and Tools
19+
run: |
20+
pip3 install adafruit-nrfutil
21+
# make all our directories we need for files and libraries
22+
mkdir $HOME/.arduino15
23+
mkdir $HOME/.arduino15/packages
24+
mkdir $HOME/Arduino
25+
mkdir $HOME/Arduino/libraries
26+
curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh
27+
echo "::add-path::$GITHUB_WORKSPACE/bin"
28+
29+
- name: Install BSP and Libraries
30+
run: |
31+
BSP_URL=`echo https://raw.githubusercontent.com/$GITHUB_REPOSITORY/$GITHUB_SHA/package_adafruit_index.json`
32+
echo $BSP_URL
33+
arduino-cli config init
34+
arduino-cli core update-index
35+
arduino-cli core update-index --additional-urls $BSP_URL
36+
arduino-cli core install arduino:samd --additional-urls $BSP_URL
37+
arduino-cli core install adafruit:samd --additional-urls $BSP_URL
38+
arduino-cli core install arduino:avr --additional-urls $BSP_URL
39+
arduino-cli core install adafruit:avr --additional-urls $BSP_URL
40+
arduino-cli core install adafruit:nrf52 --additional-urls $BSP_URL
41+
42+
- name: Build examples
43+
run: python3 examples/build_all.py

examples/build_all.py

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
import os
2+
import shutil
3+
import sys
4+
import subprocess
5+
import time
6+
7+
success_count = 0
8+
fail_count = 0
9+
exit_status = 0
10+
11+
build_format = '| {:55} | {:9} '
12+
build_separator = '-' * 79
13+
14+
SKETCH = 'examples/test/test.ino'
15+
16+
all_boards = [
17+
# AVR Boards
18+
'adafruit:avr:flora8',
19+
'adafruit:avr:bluefruitmicro',
20+
'adafruit:avr:gemma',
21+
'adafruit:avr:metro',
22+
'adafruit:avr:trinket3',
23+
'adafruit:avr:trinket5',
24+
'adafruit:avr:protrinket5',
25+
'adafruit:avr:protrinket5ftdi',
26+
'adafruit:avr:protrinket3',
27+
'adafruit:avr:protrinket3ftdi',
28+
'adafruit:avr:feather328p',
29+
'adafruit:avr:circuitplay32u4cat',
30+
'adafruit:avr:itsybitsy32u4_5V',
31+
'adafruit:avr:itsybitsy32u4_3V',
32+
'adafruit:avr:adafruit32u4',
33+
# SAMD Boards
34+
'adafruit:samd:adafruit_feather_m0',
35+
'adafruit:samd:adafruit_feather_m0_express',
36+
'adafruit:samd:adafruit_metro_m0',
37+
'adafruit:samd:adafruit_circuitplayground_m0',
38+
'adafruit:samd:adafruit_gemma_m0',
39+
'adafruit:samd:adafruit_trinket_m0',
40+
'adafruit:samd:adafruit_itsybitsy_m0',
41+
'adafruit:samd:adafruit_hallowing',
42+
'adafruit:samd:adafruit_crickit_m0',
43+
'adafruit:samd:adafruit_metro_m4:speed=120',
44+
'adafruit:samd:adafruit_grandcentral_m4:speed=120',
45+
'adafruit:samd:adafruit_itsybitsy_m4:speed=120',
46+
'adafruit:samd:adafruit_feather_m4:speed=120',
47+
'adafruit:samd:adafruit_trellis_m4:speed=120',
48+
'adafruit:samd:adafruit_pyportal_m4:speed=120',
49+
'adafruit:samd:adafruit_pyportal_m4_titano:speed=120',
50+
'adafruit:samd:adafruit_pybadge_m4:speed=120',
51+
'adafruit:samd:adafruit_metro_m4_airliftlite:speed=120',
52+
'adafruit:samd:adafruit_pygamer_m4:speed=120',
53+
'adafruit:samd:adafruit_monster_m4sk:speed=120',
54+
'adafruit:samd:adafruit_hallowing_m4:speed=120',
55+
# nRF Boards
56+
'adafruit:nrf52:feather52832',
57+
'adafruit:nrf52:feather52840',
58+
'adafruit:nrf52:cplaynrf52840',
59+
'adafruit:nrf52:itsybitsy52840',
60+
'adafruit:nrf52:cluenrf52840'
61+
]
62+
63+
total_time = time.monotonic()
64+
65+
print(build_separator)
66+
print((build_format + '| {:5} |').format('Board', 'Result', 'Time'))
67+
print(build_separator)
68+
69+
for board in all_boards:
70+
start_time = time.monotonic()
71+
make_result = subprocess.run("arduino-cli compile --fqbn {} {}".format(board, SKETCH), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
72+
build_duration = time.monotonic() - start_time
73+
74+
if make_result.returncode == 0:
75+
success = "\033[32msucceeded\033[0m"
76+
success_count += 1
77+
else:
78+
exit_status = make_result.returncode
79+
success = "\033[31mfailed\033[0m "
80+
fail_count += 1
81+
82+
print((build_format + '| {:.2f}s |').format(board, success, build_duration))
83+
84+
if make_result.returncode != 0:
85+
print(make_result.stdout.decode("utf-8"))
86+
87+
# Build Summary
88+
total_time = time.monotonic() - total_time
89+
print(build_separator)
90+
print("Build Sumamary: {} \033[32msucceeded\033[0m, {} \033[31mfailed\033[0m and took {:.2f}s".format(success_count, fail_count, total_time))
91+
print(build_separator)
92+
93+
sys.exit(exit_status)

0 commit comments

Comments
 (0)