CI #249
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: | |
schedule: | |
- cron: '0 0 * * 5' | |
push: | |
branches: [ master ] | |
pull_request: | |
branches: [ master ] | |
release: | |
types: [ published, created, edited ] | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
# A workflow run is made up of one or more jobs that can run sequentially or in parallel | |
jobs: | |
check_version_files: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: check version | |
run: | | |
$GITHUB_WORKSPACE/travis/version.py --check | |
prepare_example_json: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: generate examples | |
id: set-matrix | |
run: | | |
source $GITHUB_WORKSPACE/travis/common.sh | |
cd $GITHUB_WORKSPACE | |
echo -en "matrix=" >> $GITHUB_OUTPUT | |
echo -en "[" >> $GITHUB_OUTPUT | |
get_sketches_json_matrix arduino $GITHUB_WORKSPACE/examples/esp8266_pico esp8266 1.8.19 esp8266com:esp8266:generic:xtal=80,vt=flash,exception=disabled,stacksmash=disabled,ssl=all,mmu=3232,non32xfer=fast,ResetMethod=nodemcu,CrystalFreq=26,FlashFreq=80,FlashMode=qio,eesz=4M2M,led=2,sdk=nonosdk_190703,ip=lm2f,dbg=Serial1,lvl=SSL,wipe=none,baud=115200 >> $GITHUB_OUTPUT | |
echo -en "," >> $GITHUB_OUTPUT | |
get_sketches_json_matrix arduino $GITHUB_WORKSPACE/examples/esp8266_pico esp8266 1.8.19 esp8266com:esp8266:generic:xtal=80,vt=flash,exception=disabled,stacksmash=disabled,ssl=all,mmu=3232,non32xfer=fast,ResetMethod=nodemcu,CrystalFreq=26,FlashFreq=80,FlashMode=qio,eesz=4M2M,led=2,sdk=nonosdk_190703,ip=lm2f,dbg=Disabled,lvl=None____,wipe=none,baud=115200 >> $GITHUB_OUTPUT | |
echo -en "," >> $GITHUB_OUTPUT | |
get_sketches_json_matrix arduino $GITHUB_WORKSPACE/examples/esp32 esp32 1.8.19 espressif:esp32:esp32:FlashFreq=80 >> $GITHUB_OUTPUT | |
echo -en "]" >> $GITHUB_OUTPUT | |
echo >> $GITHUB_OUTPUT | |
outputs: | |
matrix: ${{ steps.set-matrix.outputs.matrix }} | |
prepare_ide: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
IDE_VERSION: [1.8.19] | |
env: | |
IDE_VERSION: ${{ matrix.IDE_VERSION }} | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Get Date | |
id: get-date | |
run: | | |
echo "date=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT | |
shell: bash | |
- uses: actions/cache@v2 | |
id: cache_all | |
with: | |
path: | | |
/home/runner/arduino_ide | |
/home/runner/Arduino | |
key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ matrix.IDE_VERSION }} | |
- name: download IDE | |
if: steps.cache_all.outputs.cache-hit != 'true' | |
run: | | |
wget http://downloads.arduino.cc/arduino-$IDE_VERSION-linux64.tar.xz -q | |
tar xf arduino-$IDE_VERSION-linux64.tar.xz | |
mv arduino-$IDE_VERSION $HOME/arduino_ide | |
- name: download ArduinoJson | |
if: steps.cache_all.outputs.cache-hit != 'true' | |
run: | | |
mkdir -p $HOME/Arduino/libraries | |
wget https://github.com/bblanchon/ArduinoJson/archive/6.x.zip -q | |
unzip 6.x.zip | |
mv ArduinoJson-6.x $HOME/Arduino/libraries/ArduinoJson | |
- name: download esp8266 | |
if: steps.cache_all.outputs.cache-hit != 'true' | |
run: | | |
source $GITHUB_WORKSPACE/travis/common.sh | |
get_core esp8266 | |
- name: download esp32 | |
if: steps.cache_all.outputs.cache-hit != 'true' | |
run: | | |
source $GITHUB_WORKSPACE/travis/common.sh | |
get_core esp32 | |
build: | |
needs: [prepare_ide, prepare_example_json] | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
include: ${{ fromJson(needs.prepare_example_json.outputs.matrix) }} | |
env: | |
CPU: ${{ matrix.cpu }} | |
BOARD: ${{ matrix.board }} | |
IDE_VERSION: ${{ matrix.ideversion }} | |
SKETCH: ${{ matrix.sketch }} | |
# Steps represent a sequence of tasks that will be executed as part of the job | |
steps: | |
- uses: actions/checkout@v2 | |
- name: install libgtk2.0-0 | |
run: | | |
sudo apt-get install -y libgtk2.0-0 | |
- name: Get Date | |
id: get-date | |
run: | | |
echo "date=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT | |
shell: bash | |
- uses: actions/cache@v2 | |
id: cache_all | |
with: | |
path: | | |
/home/runner/arduino_ide | |
/home/runner/Arduino | |
key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ matrix.ideversion }} | |
- name: install python serial | |
if: matrix.cpu == 'esp32' | |
run: | | |
sudo pip3 install pyserial | |
sudo pip install pyserial | |
# sudo apt install python-is-python3 | |
- name: start DISPLAY | |
run: | | |
/sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_1.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :1 -ac -screen 0 1280x1024x16 | |
export DISPLAY=:1.0 | |
sleep 3 | |
- name: test IDE | |
run: | | |
export PATH="$HOME/arduino_ide:$PATH" | |
which arduino | |
- name: copy code | |
run: | | |
mkdir -p $HOME/Arduino/libraries/ | |
cp -r $GITHUB_WORKSPACE $HOME/Arduino/libraries/arduinoWebSockets | |
- name: config IDE | |
run: | | |
set +x | |
export DISPLAY=:1.0 | |
export PATH="$HOME/arduino_ide:$PATH" | |
arduino --board $BOARD --save-prefs | |
arduino --pref update.check=false --pref build.verbose=false --pref cache.enable=true --pref compiler.cache_core=true --pref compiler.warning_level=default --save-prefs | |
arduino --get-pref sketchbook.path | |
arduino --get-pref | |
- name: build example | |
timeout-minutes: 20 | |
run: | | |
set -ex | |
export DISPLAY=:1.0 | |
export PATH="$HOME/arduino_ide:$PATH" | |
source $GITHUB_WORKSPACE/travis/common.sh | |
cd $GITHUB_WORKSPACE | |
build_sketch arduino $SKETCH | |
done: | |
needs: [prepare_ide, prepare_example_json, build, check_version_files] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Done | |
run: | | |
echo DONE |