# This is the name of the workflow, visible on GitHub UI. name: TaskScheduler Examples Build # Controls when the action will run. on: # Triggers the workflow on push or pull request only for the main branch push: branches: [ main ] pull_request: branches: [ main ] workflow_dispatch: # This is the list of jobs that will be run concurrently. # Since we use a build matrix, the actual number of jobs # started depends on how many configurations the matrix # will produce. jobs: # This is the name of the job - can be whatever. ArduinoIDE_AVR: # Here we tell GitHub that the jobs must be determined # dynamically depending on a matrix configuration. strategy: matrix: # The matrix will produce one job for each configuration # parameter of type `arduino-platform`, in this case, it # is only 1. arduino-platform: ["arduino:avr"] # This is usually optional but we need to statically define the # FQBN of the boards we want to test for each platform. In the # future the CLI might automatically detect and download the # core needed to compile against a certain FQBN, at that point # the following `include` section will be useless. include: # This works like this: when the platformn is "arduino:avr", # the variable `fqbn` is set to "arduino:avr:uno". - arduino-platform: "arduino:avr" fqbn: "arduino:avr:uno" # - arduino-platform: "esp32:esp32" # fqbn: "esp32:esp32:esp32" # This is the platform GitHub will use to run our workflow, # I picked ubuntu. runs-on: ubuntu-latest # This is the list of steps this job will run. steps: # First of all, we clone the repo using the `checkout` action. - name: Checkout uses: actions/checkout@main # We use the `arduino/setup-arduino-cli` action to install and # configure the Arduino CLI on the system. - name: Setup Arduino CLI uses: arduino/setup-arduino-cli@v1.1.1 # We then install the platform, which one will be determined # dynamically by the build matrix. - name: Install platform run: | arduino-cli core update-index arduino-cli core install ${{ matrix.arduino-platform }} - name: Install repo as library run: | mkdir -p "$HOME/Arduino/libraries" ln -s "$PWD" "$HOME/Arduino/libraries/." - name: Install required libraries run: | mkdir -p "$HOME/Arduino/libraries" # Install QueueArray from Arduino Playground wget -O queuearray.zip https://playground.arduino.cc/uploads/Code/QueueArray/index.zip unzip queuearray.zip -d "$HOME/Arduino/libraries/" # Install MemoryFree library from Arduino Library Manager git clone https://github.com/McNeight/MemoryFree.git cp -r MemoryFree "$HOME/Arduino/libraries/" # Finally, we compile the sketch, using the FQBN that was set # in the build matrix. - name: Scheduler_example00_Blink run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example00_Blink --warnings more - name: Scheduler_example00_Blink_Namespace run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example00_Blink_Namespace --warnings more - name: Scheduler_example01 run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example01 --warnings more - name: Scheduler_example02 run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example02 --warnings more - name: Scheduler_example03 run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example03 --warnings more - name: Scheduler_example04_StatusRequest run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example04_StatusRequest --warnings more - name: Scheduler_example05_StatusRequest run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example05_StatusRequest --warnings more - name: Scheduler_example06_IDLE run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example06_IDLE --warnings more - name: Scheduler_example07_WDT run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example07_WDT --warnings more - name: Scheduler_example08_LTS run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example08_LTS --warnings more - name: Scheduler_example09_TimeCritical run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example09_TimeCritical --warnings more - name: Scheduler_example10_Benchmark run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example10_Benchmark --warnings more - name: Scheduler_example11_Priority run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example11_Priority --warnings more - name: Scheduler_example12_Priority run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example12_Priority --warnings more - name: Scheduler_example13_Micros run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example13_Micros --warnings more # - name: Scheduler_example14_Yield # run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example14_Yield --warnings more # - name: Scheduler_example15_STDFunction # run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example15_STDFunction --warnings more - name: Scheduler_example16_Multitab run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example16_Multitab --warnings more - name: Scheduler_example17_Timeout run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example17_Timeout --warnings more - name: Scheduler_example18_StatusRequest_LTS_WDT_Timeout run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example18_StatusRequest_LTS_WDT_Timeout --warnings more - name: Scheduler_example18_StatusRequest_LTS_WDT_Timeout run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example18_StatusRequest_LTS_WDT_Timeout --warnings more - name: Scheduler_example19_Dynamic_Tasks run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example19_Dynamic_Tasks --warnings more - name: Scheduler_example19_Dynamic_Tasks_SelfDestruct run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example19_Dynamic_Tasks_SelfDestruct --warnings more # - name: Scheduler_example19_Dynamic_Tasks_stdQueue # run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example19_Dynamic_Tasks_stdQueue --warnings more - name: Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object --warnings more - name: Scheduler_example21_OO_Callbacks run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example21_OO_Callbacks --warnings more - name: Scheduler_example23_IDLE_Callback run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example23_IDLE_Callback --warnings more - name: Scheduler_example24_CPU_LOAD run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example24_CPU_LOAD --warnings more - name: Scheduler_example25_SCHEDULER_CHAIN run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example25_SCHEDULER_CHAIN --warnings more - name: Scheduler_example26_SCHEDULING_OPTIONS run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example26_SCHEDULING_OPTIONS --warnings more # - name: Scheduler_example27_PlatformIO # run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example27_PlatformIO --warnings more - name: Scheduler_example28_Tickless run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example28_Tickless --warnings more ArduinoIDE_ESP32: strategy: matrix: include: - arduino-platform: "esp32:esp32" fqbn: "esp32:esp32:esp32" runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@main - name: Setup Arduino CLI uses: arduino/setup-arduino-cli@v1.1.1 - name: Install platform run: | arduino-cli core update-index arduino-cli core install ${{ matrix.arduino-platform }} - name: Install repo as library run: | mkdir -p "$HOME/Arduino/libraries" ln -s "$PWD" "$HOME/Arduino/libraries/." - name: Install required libraries run: | mkdir -p "$HOME/Arduino/libraries" # Install QueueArray from Arduino Playground wget -O queuearray.zip https://playground.arduino.cc/uploads/Code/QueueArray/index.zip unzip queuearray.zip -d "$HOME/Arduino/libraries/" # Install MemoryFree library from Arduino Library Manager git clone https://github.com/McNeight/MemoryFree.git cp -r MemoryFree "$HOME/Arduino/libraries/" - name: Scheduler_example00_Blink run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example00_Blink --warnings more - name: Scheduler_example00_Blink_Namespace run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example00_Blink_Namespace --warnings more - name: Scheduler_example01 run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example01 --warnings more - name: Scheduler_example02 run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example02 --warnings more - name: Scheduler_example03 run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example03 --warnings more - name: Scheduler_example04_StatusRequest run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example04_StatusRequest --warnings more - name: Scheduler_example05_StatusRequest run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example05_StatusRequest --warnings more - name: Scheduler_example06_IDLE run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example06_IDLE --warnings more # - name: Scheduler_example07_WDT # run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example07_WDT --warnings more - name: Scheduler_example08_LTS run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example08_LTS --warnings more - name: Scheduler_example09_TimeCritical run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example09_TimeCritical --warnings more - name: Scheduler_example10_Benchmark run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example10_Benchmark --warnings more - name: Scheduler_example11_Priority run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example11_Priority --warnings more - name: Scheduler_example12_Priority run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example12_Priority --warnings more - name: Scheduler_example13_Micros run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example13_Micros --warnings more # - name: Scheduler_example14_Yield # run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example14_Yield --warnings more - name: Scheduler_example15_STDFunction run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example15_STDFunction --warnings more - name: Scheduler_example16_Multitab run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example16_Multitab --warnings more - name: Scheduler_example17_Timeout run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example17_Timeout --warnings more - name: Scheduler_example18_StatusRequest_LTS_WDT_Timeout run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example18_StatusRequest_LTS_WDT_Timeout --warnings more - name: Scheduler_example18_StatusRequest_LTS_WDT_Timeout run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example18_StatusRequest_LTS_WDT_Timeout --warnings more - name: Scheduler_example19_Dynamic_Tasks run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example19_Dynamic_Tasks --warnings more - name: Scheduler_example19_Dynamic_Tasks_SelfDestruct run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example19_Dynamic_Tasks_SelfDestruct --warnings more - name: Scheduler_example19_Dynamic_Tasks_stdQueue run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example19_Dynamic_Tasks_stdQueue --warnings more - name: Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object --warnings more - name: Scheduler_example21_OO_Callbacks run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example21_OO_Callbacks --warnings more - name: Scheduler_example23_IDLE_Callback run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example23_IDLE_Callback --warnings more - name: Scheduler_example24_CPU_LOAD run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example24_CPU_LOAD --warnings more - name: Scheduler_example25_SCHEDULER_CHAIN run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example25_SCHEDULER_CHAIN --warnings more - name: Scheduler_example26_SCHEDULING_OPTIONS run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example26_SCHEDULING_OPTIONS --warnings more # - name: Scheduler_example27_PlatformIO # run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example27_PlatformIO --warnings more - name: Scheduler_example28_Tickless run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example28_Tickless --warnings more ArduinoIDE_ESP8266_ONLY: strategy: matrix: include: - arduino-platform: "esp8266:esp8266" fqbn: "esp8266:esp8266:nodemcuv2" runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@main - name: Setup Arduino CLI uses: arduino/setup-arduino-cli@v1.1.1 - name: Install platform run: | arduino-cli core update-index --additional-urls https://arduino.esp8266.com/stable/package_esp8266com_index.json arduino-cli core install ${{ matrix.arduino-platform }} --additional-urls https://arduino.esp8266.com/stable/package_esp8266com_index.json - name: Install repo as library run: | mkdir -p "$HOME/Arduino/libraries" ln -s "$PWD" "$HOME/Arduino/libraries/." - name: Scheduler_example14_Yield run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example14_Yield --warnings more PIO: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@main - name: Set up Python uses: actions/setup-python@v4 with: python-version: '3.x' - name: Install PlatformIO run: | python -m pip install --upgrade pip pip install platformio - name: Install required libraries for PlatformIO run: | mkdir -p lib cd examples/Scheduler_example27_PlatformIO mkdir -p lib/TaskScheduler # Copy the current branch's TaskScheduler source to lib directory cp -r ../../src/* lib/TaskScheduler/ # Install other required libraries # Install QueueArray from Arduino Playground wget -O queuearray.zip https://playground.arduino.cc/uploads/Code/QueueArray/index.zip unzip queuearray.zip -d lib/ # Install MemoryFree from GitHub git clone https://github.com/McNeight/MemoryFree.git cp -r MemoryFree lib/ - name: Scheduler_example27_PlatformIO run: | cd examples/Scheduler_example27_PlatformIO pio run -e esp32dev - name: Scheduler_example29_NonArduino run: | cd examples/Scheduler_example29_NonArduino pio run -e esp32dev