diff --git a/.github/ci/build-esp3d.sh b/.github/ci/build-esp3d.sh new file mode 100644 index 00000000..44c695d0 --- /dev/null +++ b/.github/ci/build-esp3d.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# Exit immediately if a command exits with a non-zero status. +set -e +# Enable the globstar shell option +shopt -s globstar + +#arduino or PlatformIO +target=$1 +ide=$2 +#bluetooth +#local bt=$3 +#authentication +#local auth=$4 +#filesystem +#local fs=$5 + + +# Make sure we are inside the github workspace +cd $GITHUB_WORKSPACE +#export paths +export PATH="$HOME/arduino_ide:$PATH" +export ARDUINO_IDE_PATH="$HOME/arduino_ide" +if [[ "$ide" == "arduino" ]]; + then + if [[ "$target" == "esp32" ]]; + then + echo "setup for esp32" + fqbn=esp32:esp32:esp32:PartitionScheme=min_spiffs,FlashFreq=80,PSRAM=disabled,CPUFreq=240,FlashMode=qio,FlashSize=4M,DebugLevel=none + else + echo "setup for esp8266" + sed -i "s/#define DISPLAY_DEVICE/\/\/#define DISPLAY_DEVICE/g" $GITHUB_WORKSPACE/esp3d/configuration.h + sed -i "s/#define ETH_FEATURE/\/\/#define ETH_FEATURE/g" $GITHUB_WORKSPACE/esp3d/configuration.h + fqbn="esp8266com:esp8266:generic:eesz=4M3M,xtal=160,FlashMode=dio,FlashFreq=40,sdk=nonosdk221,ip=lm2f,dbg=Disabled,vt=flash,exception=disabled,ssl=basic,mmu=3232 ./esp3d/esp3d.ino" + + fi + + arduino-builder -hardware "$ARDUINO_IDE_PATH/hardware" -tools "$ARDUINO_IDE_PATH/tools-builder" -tools "$ARDUINO_IDE_PATH/tools" -libraries "$ARDUINO_IDE_PATH/libraries" -fqbn=$fqbn -compile -logger=human -core-api-version=10810 ./esp3d/esp3d.ino +else + platformio run -e esp32dev + platformio run -e esp8266dev +fi diff --git a/.github/ci/final-check.sh b/.github/ci/final-check.sh new file mode 100644 index 00000000..29fe6e63 --- /dev/null +++ b/.github/ci/final-check.sh @@ -0,0 +1,26 @@ +#!/bin/bash +# Exit immediately if a command exits with a non-zero status. +set -e +# Enable the globstar shell option +shopt -s globstar +# Make sure we are inside the github workspace +cd $GITHUB_WORKSPACE +echo $STEPS_CONTEXT +step=$1 +status=$2 +export BODYMESSAGE="$(git log -1 $GITHUB_SHA --pretty="%B")" +export BACKTICK='`'; +export TIMESTAMP=$(date --utc +%FT%TZ); +export GITHUB_ACTOR_NAME="$(git log -1 $GITHUB_SHA --pretty="%aN")"; +export COMMIT_FORMATTED="[$BACKTICK${GITHUB_SHA:0:7}$BACKTICK](https://github.com/$GITHUB_REPOSITORY/commit/$GITHUB_SHA)"; + +if [[ "$status" == "success" ]]; +then + echo "Success build" + curl -v -H User-Agent:bot -H Content-Type:application/json -d '{"avatar_url":"https://pngimg.com/uploads/github/github_PNG90.png","username":"github-action","embeds":[{"author":{"name":"Build #'"$step"' Passed - '"$GITHUB_ACTOR_NAME"'","url":"https://github.com/'"$GITHUB_REPOSITORY"'/actions/runs/'"$GITHUB_RUN_ID"'"},"url":"https://github.com/'"$GITHUB_REPOSITORY"'/actions/runs/'"$GITHUB_RUN_ID"'","title":"['"$GITHUB_REPOSITORY"':job#'"$GITHUB_RUN_NUMBER"'] ","color":65280,"fields":[{"name":"_ _", "value": "'"$COMMIT_FORMATTED"' - '"$BODYMESSAGE"'"}],"timestamp":"'"$TIMESTAMP"'","footer":{"text":"ESP3D CI"}}]}' $DISCORD_WEBHOOK_URL; +else + echo "Build failed" + curl -v -H User-Agent:bot -H Content-Type:application/json -d '{"avatar_url":"https://pngimg.com/uploads/github/github_PNG90.png","username":"github-action","embeds":[{"author":{"name":"Build #'"$step"' Failed - '"$GITHUB_ACTOR_NAME"'","url":"https://github.com/'"$GITHUB_REPOSITORY"'/actions/runs/'"$GITHUB_RUN_ID"'"},"url":"https://github.com/'"$GITHUB_REPOSITORY"'/actions/runs/'"$GITHUB_RUN_ID"'","title":"['"$GITHUB_REPOSITORY"':job#'"$GITHUB_RUN_NUMBER"'] ","color":16711680,"fields":[{"name":"_ _", "value": "'"$COMMIT_FORMATTED"' - '"$BODYMESSAGE"'"}],"timestamp":"'"$TIMESTAMP"'","footer":{"text":"ESP3D CI"}}]}' $DISCORD_WEBHOOK_URL; +fi + + diff --git a/.github/ci/install-arduino.sh b/.github/ci/install-arduino.sh new file mode 100644 index 00000000..a107f052 --- /dev/null +++ b/.github/ci/install-arduino.sh @@ -0,0 +1,12 @@ +#!/bin/bash +# Exit immediately if a command exits with a non-zero status. +set -e +# Enable the globstar shell option +shopt -s globstar + +wget http://downloads.arduino.cc/arduino-1.8.13-linux64.tar.xz + +tar xf arduino-1.8.13-linux64.tar.xz + +mv arduino-1.8.13 $HOME/arduino_ide + diff --git a/.github/ci/install-esp32.sh b/.github/ci/install-esp32.sh new file mode 100644 index 00000000..63c529d9 --- /dev/null +++ b/.github/ci/install-esp32.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# Exit immediately if a command exits with a non-zero status. +set -e +# Enable the globstar shell option +shopt -s globstar + +#install pyserial +echo "Installing Python Serial ..." +pip install pyserial + +echo "Clone esp32 core" +cd $HOME/arduino_ide/hardware +mkdir esp32 +cd esp32 +git clone https://github.com/espressif/arduino-esp32.git esp32 +cd esp32 +git submodule update --init +cd tools +python get.py diff --git a/.github/ci/install-esp8266.sh b/.github/ci/install-esp8266.sh new file mode 100644 index 00000000..3c832b91 --- /dev/null +++ b/.github/ci/install-esp8266.sh @@ -0,0 +1,14 @@ +#!/bin/bash +# Exit immediately if a command exits with a non-zero status. +set -e +# Enable the globstar shell option +shopt -s globstar + +cd $HOME/arduino_ide/hardware +mkdir esp8266com +cd esp8266com +git clone https://github.com/esp8266/Arduino.git esp8266 +cd esp8266 +git submodule update --init +cd tools +python get.py diff --git a/.github/ci/install-platformio.sh b/.github/ci/install-platformio.sh new file mode 100644 index 00000000..a54fdc0e --- /dev/null +++ b/.github/ci/install-platformio.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# Exit immediately if a command exits with a non-zero status. +set -e +# Enable the globstar shell option +shopt -s globstar + +pip install -U platformio +platformio update + diff --git a/.github/ci/prepare-libs.sh b/.github/ci/prepare-libs.sh new file mode 100644 index 00000000..f6f31e69 --- /dev/null +++ b/.github/ci/prepare-libs.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# Exit immediately if a command exits with a non-zero status. +set -e +# Enable the globstar shell option +shopt -s globstar +ls $HOME +# Make sure we are inside the github workspace +cd $GITHUB_WORKSPACE +cp -r ./libraries/ESP32SSDP-1.1.1 $HOME/arduino_ide/libraries/ +cp -r ./libraries/arduinoWebSockets-2.3.5 $HOME/arduino_ide/libraries/ +cp -r ./libraries/DHT_sensor_library_for_ESPx-1.0.6 $HOME/arduino_ide/libraries/ +cp -r ./libraries/esp8266-oled-ssd1306-4.0.0 $HOME/arduino_ide/libraries/ +cp -r ./libraries/TFT_eSPI-1.4.11 $HOME/arduino_ide/libraries/ +cp -r ./libraries/lv_arduino-2.0.3 $HOME/arduino_ide/libraries/ +cp -r ./libraries/ESP8266-Arduino-Lua-0.0.30 $HOME/arduino_ide/libraries/ +cp -r ./libraries/SdFat-1.1.0 $HOME/arduino_ide/libraries/ +cp -r ./libraries/BMx280MI-1.2.0 $HOME/arduino_ide/libraries/ +cp -r ./libraries/LITTLEFS-1.0.5 $HOME/arduino_ide/libraries/ + diff --git a/.github/workflows/build-ci.yml b/.github/workflows/build-ci.yml new file mode 100644 index 00000000..fe723862 --- /dev/null +++ b/.github/workflows/build-ci.yml @@ -0,0 +1,47 @@ +name: build-ci + +on: [pull_request, push] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Set up Python 3.x + uses: actions/setup-python@v2 + with: + python-version: "3.x" + architecture: "x64" + - name: Install Arduino + run: bash ./.github/ci/install-arduino.sh + - name: Install platformIO + run: bash ./.github/ci/install-platformio.sh + - name: Install ESP8266 + run: bash ./.github/ci/install-esp8266.sh + - name: Install ESP32 + run: bash ./.github/ci/install-esp32.sh + - name: Setup libraries + run: bash ./.github/ci/prepare-libs.sh + - name: Build ESP8266 arduino + id: esp8266_1 + run: bash ./.github/ci/build-esp3d.sh esp8266 arduino + continue-on-error: true + - name: Build ESP32 arduino + id: esp32_1 + run: bash ./.github/ci/build-esp3d.sh esp32 arduino + continue-on-error: true + - name: Build platformIO + id: pio_1 + run: bash ./.github/ci/build-esp3d.sh esp32 pio + continue-on-error: true + - name: Final check + env: + STEPS_CONTEXT: ${{ toJson(steps) }} + DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }} + if: steps.esp8266_1.outcome == 'failure' || steps.esp32_1.outcome == 'failure' + run: bash ./.github/ci/final-check.sh "$GITHUB_RUN_ID" "failure" + - name: Final confirmation + env: + DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }} + if: steps.esp8266_1.outcome == 'success' && steps.esp32_1.outcome == 'success' + run: bash ./.github/ci/final-check.sh "$GITHUB_RUN_ID" "success" diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index e52c3d2c..00000000 --- a/.travis.yml +++ /dev/null @@ -1,76 +0,0 @@ -dist: focal -sudo: require - -language: python - -python: - - "3.7" - -os: - - linux - -cache: - pip: true - directories: - - "~/.platformio" - -install: - - pip install -U platformio - - wget http://downloads.arduino.cc/arduino-1.8.5-linux64.tar.xz - - tar xf arduino-1.8.5-linux64.tar.xz - - mv arduino-1.8.5 $HOME/arduino_ide - -env: - - TARGET=all PLATFORM=PIO BT=yes AUTHENTICATION=yes - -before_script: - - export AUTHOR_NAME="$(git log -1 $TRAVIS_COMMIT --pretty="%aN")" - - platformio update - - cd $HOME/arduino_ide/hardware - - mkdir esp8266com - - cd esp8266com - - git clone https://github.com/esp8266/Arduino.git esp8266 - - cd esp8266 - - git submodule update --init - - cd tools - - python get.py - - cd $HOME/arduino_ide/hardware - - mkdir esp32 - - cd esp32 - - git clone https://github.com/espressif/arduino-esp32.git esp32 - - cd esp32 - - git submodule update --init - - cd tools - - python get.py - - cp -r $TRAVIS_BUILD_DIR/libraries/ESP32SSDP-1.1.1 $HOME/arduino_ide/libraries/ - - cp -r $TRAVIS_BUILD_DIR/libraries/arduinoWebSockets-2.3.5 $HOME/arduino_ide/libraries/ - - cp -r $TRAVIS_BUILD_DIR/libraries/DHT_sensor_library_for_ESPx-1.0.6 $HOME/arduino_ide/libraries/ - - cp -r $TRAVIS_BUILD_DIR/libraries/esp8266-oled-ssd1306-4.0.0 $HOME/arduino_ide/libraries/ - - cp -r $TRAVIS_BUILD_DIR/libraries/TFT_eSPI-1.4.11 $HOME/arduino_ide/libraries/ - - cp -r $TRAVIS_BUILD_DIR/libraries/lv_arduino-2.0.3 $HOME/arduino_ide/libraries/ - - cp -r $TRAVIS_BUILD_DIR/libraries/ESP8266-Arduino-Lua-0.0.30 $HOME/arduino_ide/libraries/ - - cp -r $TRAVIS_BUILD_DIR/libraries/SdFat-1.1.0 $HOME/arduino_ide/libraries/ - - cp -r $TRAVIS_BUILD_DIR/libraries/BMx280MI-1.2.0 $HOME/arduino_ide/libraries/ - - cp -r $TRAVIS_BUILD_DIR/libraries/LITTLEFS-1.0.5 $HOME/arduino_ide/libraries/ - - cd $TRAVIS_BUILD_DIR - - source command.sh - - export PATH="$HOME/arduino_ide:$PATH" - -script: - - build_sketch $TRAVIS_BUILD_DIR/esp3d/esp3d.ino $TARGET $PLATFORM $BT $AUTHENTICATION $FILESYSTEM - -after_success: - - chmod +x success.sh - - ./success.sh - -after_failure: - - chmod +x fail.sh - - ./fail.sh - - -notifications: - email: - recipients: - - $TRAVIS_EMAIL - on_success: always - on_failure: always diff --git a/command.sh b/command.sh deleted file mode 100644 index cd79cba4..00000000 --- a/command.sh +++ /dev/null @@ -1,87 +0,0 @@ -#!/bin/bash - -function build_sketch() -{ - local sketch=$1 - local target=$2 - local ide=$3 - local bt=$4 - local auth=$5 - local fs=$6 - - if [[ "$ide" == "arduino" ]]; - then - echo "Setup for Arduino" - rm -f $HOME/.arduino15/preferences.txt - #be sure everything is enabled by default as reference - echo "Authentication is enabled" - sed -i "s/\/\/#define AUTHENTICATION_FEATURE/#define AUTHENTICATION_FEATURE/g" $TRAVIS_BUILD_DIR/esp3d/configuration.h - echo "Bluetooth is enabled" - sed -i "s/\/\/#define BLUETOOTH_FEATURE/#define BLUETOOTH_FEATURE/g" $TRAVIS_BUILD_DIR/esp3d/configuration.h - if [[ "$bt" == "no" ]]; - then - echo "Disable Bluetooth" - sed -i "s/#define BLUETOOTH_FEATURE/\/\/#define BLUETOOTH_FEATURE/g" $TRAVIS_BUILD_DIR/esp3d/configuration.h - fi - if [[ "$auth" == "no" ]]; - then - echo "Disable Authentication" - sed -i "s/#define AUTHENTICATION_FEATURE/\/\/#define AUTHENTICATION_FEATURE/g" $TRAVIS_BUILD_DIR/esp3d/configuration.h - fi - if [[ "$target" == "esp32" ]]; - then - echo "setup for esp32" - arduino --board esp32:esp32:esp32:PartitionScheme=min_spiffs,FlashFreq=80,PSRAM=disabled,CPUFreq=240,FlashMode=qio,FlashSize=4M,DebugLevel=none --save-prefs - else - echo "setup for esp8266" - sed -i "s/#define DISPLAY_DEVICE/\/\/#define DISPLAY_DEVICE/g" $TRAVIS_BUILD_DIR/esp3d/configuration.h - sed -i "s/#define ETH_FEATURE/\/\/#define ETH_FEATURE/g" $TRAVIS_BUILD_DIR/esp3d/configuration.h - arduino --board esp8266com:esp8266:generic:eesz=4M3M,xtal=160,FlashMode=dio,FlashFreq=40,sdk=nonosdk221,ip=lm2f,dbg=Disabled,vt=flash,exception=disabled,ssl=basic,mmu=3232 --save-prefs - fi - if [[ "$fs" == "SPIFFS" ]]; - then - echo "Set Filesystem to SPIFFS" - sed -i "s/#define FILESYSTEM_FEATURE ESP_FAT_FILESYSTEM/#define FILESYSTEM_FEATURE ESP_SPIFFS_FILESYSTEM/g" $TRAVIS_BUILD_DIR/esp3d/configuration.h - sed -i "s/#define FILESYSTEM_FEATURE ESP_LITTLEFS_FILESYSTEM/#define FILESYSTEM_FEATURE ESP_SPIFFS_FILESYSTEM/g" $TRAVIS_BUILD_DIR/esp3d/configuration.h - fi - if [[ "$fs" == "LITTLEFS" ]]; - then - echo "Set Filesystem to LittleFS" - sed -i "s/#define FILESYSTEM_FEATURE ESP_FAT_FILESYSTEM/#define FILESYSTEM_FEATURE ESP_LITTLEFS_FILESYSTEM/g" $TRAVIS_BUILD_DIR/esp3d/configuration.h - sed -i "s/#define FILESYSTEM_FEATURE ESP_SPIFFS_FILESYSTEM/#define FILESYSTEM_FEATURE ESP_LITTLEFS_FILESYSTEM/g" $TRAVIS_BUILD_DIR/esp3d/configuration.h - fi - if [[ "$fs" == "FAT" ]]; - then - echo "Set Filesystem to FAT" - sed -i "s/#define FILESYSTEM_FEATURE ESP_SPIFFS_FILESYSTEM/#define FILESYSTEM_FEATURE ESP_FAT_FILESYSTEM/g" $TRAVIS_BUILD_DIR/esp3d/configuration.h - sed -i "s/#define FILESYSTEM_FEATURE ESP_LITTLEFS_FILESYSTEM/#define FILESYSTEM_FEATURE ESP_FAT_FILESYSTEM/g" $TRAVIS_BUILD_DIR/esp3d/configuration.h - fi - echo "Display configuration" - # build sketch with arduino ide - echo -e "\n Build $sketch \n" - arduino $sketch - - # get build result from arduino - local re=$? - - # check result - if [ $re -ne 0 ]; then - echo "Failed to build $sketch" - return $re - fi - else - echo "setup for platformIO" - sed -i "s/#define BLUETOOTH_FEATURE/\/\/#define BLUETOOTH_FEATURE/g" $TRAVIS_BUILD_DIR/esp3d/configuration.h - sed -i "s/#define DISPLAY_DEVICE/\/\/#define DISPLAY_DEVICE/g" $TRAVIS_BUILD_DIR/esp3d/configuration.h - sed -i "s/#define ETH_FEATURE/\/\/#define ETH_FEATURE/g" $TRAVIS_BUILD_DIR/esp3d/configuration.h - sed -i "s/#define FILESYSTEM_FEATURE ESP_SPIFFS_FILESYSTEM/#define FILESYSTEM_FEATURE ESP_LITTLEFS_FILESYSTEM/g" $TRAVIS_BUILD_DIR/esp3d/configuration.h - sed -i "s/#define FILESYSTEM_FEATURE ESP_SPIFFS_FILESYSTEM/#define FILESYSTEM_FEATURE ESP_LITTLEFS_FILESYSTEM/g" $TRAVIS_BUILD_DIR/esp3d/configuration.h - sed -i "s/#define FILESYSTEM_FEATURE ESP_FAT_FILESYSTEM/#define FILESYSTEM_FEATURE ESP_LITTLEFS_FILESYSTEM/g" $TRAVIS_BUILD_DIR/esp3d/configuration.h - rm -fr $HOME/arduino_ide - rm -fr $HOME/.arduino15 - platformio run -e esp32dev - platformio run -e esp8266dev - fi - -} - diff --git a/fail.sh b/fail.sh deleted file mode 100644 index d97fc7e7..00000000 --- a/fail.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash -echo 'Sending Discord Webhook'; -export BACKTICK='`'; -export TIMESTAMP=$(date --utc +%FT%TZ); -export REPO_OWNER="luc-github"; -export REPO_NAME="ESP3D"; -export COMMIT_FORMATTED="[$BACKTICK${TRAVIS_COMMIT:0:7}$BACKTICK](https://github.com/$REPO_OWNER/$REPO_NAME/commit/$TRAVIS_COMMIT)"; -curl -v -H User-Agent:bot -H Content-Type:application/json -d '{"avatar_url":"https://i.imgur.com/kOfUGNS.png","username":"Travis CI","embeds":[{"author":{"name":"Build #'"$TRAVIS_BUILD_NUMBER"' Failed - '"$AUTHOR_NAME"'","url":"https://travis-ci.org/'"$REPO_OWNER"'/'"$REPO_NAME"'/builds/'"$TRAVIS_BUILD_ID"'"},"url":"https://github.com/'"$REPO_OWNER"'/'"$REPO_NAME"'/commit/'"$TRAVIS_COMMIT"'","title":"['"$TRAVIS_REPO_SLUG"':'"$TRAVIS_BRANCH"'] ","color":16711680,"fields":[{"name":"_ _", "value": "'"$COMMIT_FORMATTED"' - '"$TRAVIS_COMMIT_MESSAGE"'"}],"timestamp":"'"$TIMESTAMP"'","footer":{"text":"Travis CI"}}]}' $DISCORD_WEBHOOK_URL; diff --git a/success.sh b/success.sh deleted file mode 100644 index e36124f0..00000000 --- a/success.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash -echo 'Sending Discord Webhook'; -export BACKTICK='`'; -export TIMESTAMP=$(date --utc +%FT%TZ); -export REPO_OWNER="luc-github"; -export REPO_NAME="ESP3D"; -export COMMIT_FORMATTED="[$BACKTICK${TRAVIS_COMMIT:0:7}$BACKTICK](https://github.com/$REPO_OWNER/$REPO_NAME/commit/$TRAVIS_COMMIT)"; -curl -v -H User-Agent:bot -H Content-Type:application/json -d '{"avatar_url":"https://i.imgur.com/kOfUGNS.png","username":"Travis CI","embeds":[{"author":{"name":"Build #'"$TRAVIS_BUILD_NUMBER"' Passed - '"$AUTHOR_NAME"'","url":"https://travis-ci.org/'"$REPO_OWNER"'/'"$REPO_NAME"'/builds/'"$TRAVIS_BUILD_ID"'"},"url":"https://github.com/'"$REPO_OWNER"'/'"$REPO_NAME"'/commit/'"$TRAVIS_COMMIT"'","title":"['"$TRAVIS_REPO_SLUG"':'"$TRAVIS_BRANCH"'] ","color":65280,"fields":[{"name":"_ _", "value": "'"$COMMIT_FORMATTED"' - '"$TRAVIS_COMMIT_MESSAGE"'"}],"timestamp":"'"$TIMESTAMP"'","footer":{"text":"Travis CI"}}]}' $DISCORD_WEBHOOK_URL;