This repository has been archived by the owner on Oct 27, 2024. It is now read-only.
Update package.json #572
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:[email protected] | |
- esp32:esp32:esp32:DebugLevel=none | |
- esp32:esp32:esp32:DebugLevel=verbose | |
- esp32:esp32:firebeetle32 | |
#- esp32:esp32:ttgo-lora32:Revision=TTGO_LoRa32_V1 | |
#- esp32:esp32:ttgo-lora32:Revision=TTGO_LoRa32_V2 | |
- esp32:esp32:ttgo-lora32:Revision=TTGO_LoRa32_v21new | |
- esp32:esp32:heltec_wireless_stick:PSRAM=disabled | |
- esp32:esp32:heltec_wifi_lora_32_V2 | |
- esp32:esp32:featheresp32 | |
- esp32:esp32:adafruit_feather_esp32s2 | |
- rp2040:rp2040:adafruit_feather:dbgport=Serial | |
runs-on: ubuntu-latest | |
name: ${{ matrix.board }} | |
env: | |
GH_TOKEN: ${{ github.token }} | |
run-build: ${{ contains(matrix.board, 'esp32:esp32') || contains(matrix.board, 'rp2040:rp2040') || 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, all warnings | |
echo "skip-pattern=''" >> $GITHUB_OUTPUT | |
echo "warnings='all'" >> $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 | |
elif [[ "${{ contains(matrix.board, 'rp2040:rp2040') }}" == "true" ]]; then | |
# RP2040 | |
echo "index-url=--additional-urls https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_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=( | |
"[email protected]" | |
"[email protected]" | |
"MCCI LoRaWAN LMIC [email protected]" | |
"MCCI Arduino LoRaWAN [email protected]" | |
"MCCI Arduino Development Kit [email protected]" | |
"LoRa [email protected]" | |
"[email protected]" | |
"[email protected]" | |
"[email protected]" | |
"[email protected]" | |
"[email protected]" | |
"[email protected]" | |
"[email protected]" | |
"[email protected]") | |
for i in "${required_libs[@]}" | |
do | |
arduino-cli lib install "$i" | |
done | |
gh repo clone matthias-bs/DistanceSensor_A02YYUW | |
cp -r DistanceSensor_A02YYUW /home/runner/Arduino/libraries/ | |
# OneWire is installed due to dependency in DallasTemperature, but OneWireNg shall be used instead | |
echo "Removing Arduino/libraries/OneWire (installed automatically, but shall be replaced by OneWireNg)" | |
rm -r /home/runner/Arduino/libraries/OneWire | |
- 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: Copy WeatherSensorCfg.h | |
if: ${{ env.run-build == 'true' }} | |
run: | |
| | |
cp /home/runner/work/BresserWeatherSensorTTN/BresserWeatherSensorTTN/WeatherSensorCfg.h.template \ | |
/home/runner/Arduino/libraries/BresserWeatherSensorReceiver/src/WeatherSensorCfg.h | |
- 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"; | |
if [[ "${{ contains(matrix.board, '@1.0.6') }}" == "true" ]]; then | |
# hardcoded fqbn, because 'esp32:[email protected]' did not work | |
arduino-cli compile --libraries /home/runner/work/BresserWeatherSensorReceiver --fqbn esp32:esp32:esp32${{ steps.prep.outputs.options }} $example --warnings=${{ steps.prep.outputs.warnings }} | |
else | |
arduino-cli compile --libraries /home/runner/work/BresserWeatherSensorReceiver --fqbn ${{ matrix.board }}${{ steps.prep.outputs.options }} $example --warnings=${{ steps.prep.outputs.warnings }} | |
fi | |
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 |