123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- 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 "::set-output name=matrix::"
- echo -en "["
- get_sketches_json_matrix arduino $GITHUB_WORKSPACE/examples/esp8266 esp8266 1.8.19 esp8266com:esp8266:generic:xtal=80,dbg=Serial1
- echo -en ","
- get_sketches_json_matrix arduino $GITHUB_WORKSPACE/examples/esp8266 esp8266 1.8.19 esp8266com:esp8266:generic:xtal=80,eesz=1M,FlashMode=qio,FlashFreq=80
- echo -en ","
- get_sketches_json_matrix arduino $GITHUB_WORKSPACE/examples/esp32 esp32 1.8.19 espressif:esp32:esp32:FlashFreq=80
- echo -en "]"
- 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 "::set-output name=date::$(/bin/date -u "+%Y%m%d")"
- 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 "::set-output name=date::$(/bin/date -u "+%Y%m%d")"
- 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: |
- export DISPLAY=:1.0
- export PATH="$HOME/arduino_ide:$PATH"
- arduino --board $BOARD --save-prefs
- arduino --get-pref sketchbook.path
- arduino --pref update.check=false
- - 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
|