Update package.json #82
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: [ "main" ] | |
pull_request: | |
branches: [ "main" ] | |
workflow_dispatch: | |
jobs: | |
build: | |
strategy: | |
matrix: | |
board: | |
- esp32:esp32:esp32:DebugLevel=none | |
- esp32:esp32:esp32:DebugLevel=verbose | |
- esp32:esp32:firebeetle32 | |
- esp32:esp32:ttgo-lora32:Revision=TTGO_LoRa32_v21new | |
- esp32:esp32:featheresp32 | |
#- esp32:esp32:ttgo-lora32:Revision=TTGO_LoRa32_V1 | |
#- esp32:esp32:ttgo-lora32:Revision=TTGO_LoRa32_V2 | |
#- esp32:esp32:heltec_wireless_stick:PSRAM=disabled | |
#- esp32:esp32:adafruit_feather_esp32s2 | |
runs-on: ubuntu-latest | |
name: ${{ matrix.board }} | |
env: | |
GH_TOKEN: ${{ github.token }} | |
run-build: ${{ contains(matrix.board, 'esp32:esp32') || contains(github.event.head_commit.message, 'CI_BUILD_ALL') || contains(github.event.head_commit.message, 'Bump version to') || contains(github.event.head_commit.message, format('{0}', matrix.board)) }} | |
steps: | |
- name: Install arduino-cli | |
if: ${{ env.run-build == 'true' }} | |
run: | |
| | |
mkdir -p ~/.local/bin | |
echo "~/.local/bin" >> $GITHUB_PATH | |
curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | BINDIR=~/.local/bin sh | |
- name: Get platform name | |
if: ${{ env.run-build == 'true' }} | |
uses: jungwinter/split@v2 | |
id: split | |
with: | |
msg: ${{ matrix.board }} | |
separator: ':' | |
- name: Prepare platform-specific settings | |
if: ${{ env.run-build == 'true' }} | |
id: prep | |
run: | |
| | |
# common settings - no extra options, skip nothing, warnings: default (more|all) | |
# /home/runner/Arduino/libraries/ModbusMaster/src/util/crc16.h:71:17: error: 'uint16_t crc16_update(uint16_t, uint8_t)' defined but not used [-Werror=unused-function] | |
echo "skip-pattern=''" >> $GITHUB_OUTPUT | |
echo "warnings='default'" >> $GITHUB_OUTPUT | |
# platform-dependent settings - extra board options, board index URLs, skip patterns etc. | |
if [[ "${{ contains(matrix.board, 'esp32:esp32') }}" == "true" ]]; then | |
# ESP32 | |
python -m pip install pyserial | |
echo "index-url=--additional-urls https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json" >> $GITHUB_OUTPUT | |
fi | |
- name: Install libraries | |
if: ${{ env.run-build == 'true' }} | |
run: | |
| | |
#declare -a required_libs=("https://github.com/matthias-bs/BresserWeatherSensorReceiver.git" | |
declare -a required_libs=( | |
"MCCI LoRaWAN LMIC library@4.1.1" | |
"MCCI Arduino LoRaWAN Library@0.10.0" | |
"MCCI Arduino Development Kit ADK@0.2.2" | |
"LoRa Serialization@3.2.1" | |
"ESP32Time@2.0.4" | |
"ModbusMaster@2.0.1") | |
for i in "${required_libs[@]}" | |
do | |
arduino-cli lib install "$i" | |
done | |
- name: Install platform | |
if: ${{ env.run-build == 'true' }} | |
run: | |
| | |
arduino-cli core update-index ${{ format('{0}', steps.prep.outputs.index-url) }} | |
arduino-cli core install ${{ format('{0}:{1} {2}', steps.split.outputs._0, steps.split.outputs._1, steps.prep.outputs.index-url) }} | |
- name: Checkout repository | |
if: ${{ env.run-build == 'true' }} | |
uses: actions/checkout@v4 | |
- name: Customizing lmic_project_config.h (LMIC_ENABLE_DeviceTimeReq) | |
if: ${{ env.run-build == 'true' }} | |
run: | |
| | |
echo "#define LMIC_ENABLE_DeviceTimeReq 1" >> /home/runner/Arduino/libraries/MCCI_LoRaWAN_LMIC_library/project_config/lmic_project_config.h | |
# Fix for linker error with Arduino core for ESP32 v2.0.x as suggested in https://github.com/mcci-catena/arduino-lmic/issues/714#issuecomment-822051171 | |
echo "#define hal_init LMICHAL_init" >> /home/runner/Arduino/libraries/MCCI_LoRaWAN_LMIC_library/project_config/lmic_project_config.h | |
- name: Build sketch | |
if: ${{ env.run-build == 'true' }} | |
run: | |
| | |
#for example in $(find $PWD/examples -name '*.ino' | sort); do | |
# modified to compile a singe sketch (instead of a library's examples) | |
for example in $(find $PWD -name '*.ino' | sort); do | |
# check whether to skip this sketch | |
if [ ! -z '${{ steps.prep.outputs.skip-pattern }}' ] && [[ ${example} =~ ${{ steps.prep.outputs.skip-pattern }} ]]; then | |
# skip sketch | |
echo -e "\n\033[1;33mSkipped ${example##*/} (matched with ${{ steps.prep.outputs.skip-pattern }})\033[0m"; | |
else | |
# build sketch | |
echo -e "\n\033[1;33mBuilding ${example##*/} ... \033[0m"; | |
arduino-cli compile --libraries /home/runner/work/growatt2lorawan --fqbn ${{ matrix.board }}${{ steps.prep.outputs.options }} $example --warnings=${{ steps.prep.outputs.warnings }} | |
if [ $? -ne 0 ]; then | |
echo -e "\033[1;31m${example##*/} build FAILED\033[0m\n"; | |
exit 1; | |
else | |
echo -e "\033[1;32m${example##*/} build PASSED\033[0m\n"; | |
fi | |
fi | |
done |