main.yml 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  1. # This is the name of the workflow, visible on GitHub UI.
  2. name: TaskScheduler Examples Build
  3. # Controls when the action will run.
  4. on:
  5. # Triggers the workflow on push or pull request only for the main branch
  6. push:
  7. branches: [ main ]
  8. pull_request:
  9. branches: [ main ]
  10. workflow_dispatch:
  11. # This is the list of jobs that will be run concurrently.
  12. # Since we use a build matrix, the actual number of jobs
  13. # started depends on how many configurations the matrix
  14. # will produce.
  15. jobs:
  16. # This is the name of the job - can be whatever.
  17. ArduinoIDE_AVR:
  18. # Here we tell GitHub that the jobs must be determined
  19. # dynamically depending on a matrix configuration.
  20. strategy:
  21. matrix:
  22. # The matrix will produce one job for each configuration
  23. # parameter of type `arduino-platform`, in this case, it
  24. # is only 1.
  25. arduino-platform: ["arduino:avr"]
  26. # This is usually optional but we need to statically define the
  27. # FQBN of the boards we want to test for each platform. In the
  28. # future the CLI might automatically detect and download the
  29. # core needed to compile against a certain FQBN, at that point
  30. # the following `include` section will be useless.
  31. include:
  32. # This works like this: when the platformn is "arduino:avr",
  33. # the variable `fqbn` is set to "arduino:avr:uno".
  34. - arduino-platform: "arduino:avr"
  35. fqbn: "arduino:avr:uno"
  36. # - arduino-platform: "esp32:esp32"
  37. # fqbn: "esp32:esp32:esp32"
  38. # This is the platform GitHub will use to run our workflow,
  39. # I picked ubuntu.
  40. runs-on: ubuntu-latest
  41. # This is the list of steps this job will run.
  42. steps:
  43. # First of all, we clone the repo using the `checkout` action.
  44. - name: Checkout
  45. uses: actions/checkout@main
  46. # We use the `arduino/setup-arduino-cli` action to install and
  47. # configure the Arduino CLI on the system.
  48. - name: Setup Arduino CLI
  49. uses: arduino/setup-arduino-cli@v1.1.1
  50. # We then install the platform, which one will be determined
  51. # dynamically by the build matrix.
  52. - name: Install platform
  53. run: |
  54. arduino-cli core update-index
  55. arduino-cli core install ${{ matrix.arduino-platform }}
  56. - name: Install repo as library
  57. run: |
  58. mkdir -p "$HOME/Arduino/libraries"
  59. ln -s "$PWD" "$HOME/Arduino/libraries/."
  60. - name: Install required libraries
  61. run: |
  62. mkdir -p "$HOME/Arduino/libraries"
  63. # Install QueueArray from Arduino Playground
  64. wget -O queuearray.zip https://playground.arduino.cc/uploads/Code/QueueArray/index.zip
  65. unzip queuearray.zip -d "$HOME/Arduino/libraries/"
  66. # Install MemoryFree library from Arduino Library Manager
  67. git clone https://github.com/McNeight/MemoryFree.git
  68. cp -r MemoryFree "$HOME/Arduino/libraries/"
  69. # Finally, we compile the sketch, using the FQBN that was set
  70. # in the build matrix.
  71. - name: Scheduler_example00_Blink
  72. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example00_Blink --warnings more
  73. - name: Scheduler_example00_Blink_Namespace
  74. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example00_Blink_Namespace --warnings more
  75. - name: Scheduler_example01
  76. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example01 --warnings more
  77. - name: Scheduler_example02
  78. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example02 --warnings more
  79. - name: Scheduler_example03
  80. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example03 --warnings more
  81. - name: Scheduler_example04_StatusRequest
  82. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example04_StatusRequest --warnings more
  83. - name: Scheduler_example05_StatusRequest
  84. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example05_StatusRequest --warnings more
  85. - name: Scheduler_example06_IDLE
  86. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example06_IDLE --warnings more
  87. - name: Scheduler_example07_WDT
  88. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example07_WDT --warnings more
  89. - name: Scheduler_example08_LTS
  90. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example08_LTS --warnings more
  91. - name: Scheduler_example09_TimeCritical
  92. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example09_TimeCritical --warnings more
  93. - name: Scheduler_example10_Benchmark
  94. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example10_Benchmark --warnings more
  95. - name: Scheduler_example11_Priority
  96. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example11_Priority --warnings more
  97. - name: Scheduler_example12_Priority
  98. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example12_Priority --warnings more
  99. - name: Scheduler_example13_Micros
  100. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example13_Micros --warnings more
  101. # - name: Scheduler_example14_Yield
  102. # run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example14_Yield --warnings more
  103. # - name: Scheduler_example15_STDFunction
  104. # run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example15_STDFunction --warnings more
  105. - name: Scheduler_example16_Multitab
  106. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example16_Multitab --warnings more
  107. - name: Scheduler_example17_Timeout
  108. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example17_Timeout --warnings more
  109. - name: Scheduler_example18_StatusRequest_LTS_WDT_Timeout
  110. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example18_StatusRequest_LTS_WDT_Timeout --warnings more
  111. - name: Scheduler_example18_StatusRequest_LTS_WDT_Timeout
  112. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example18_StatusRequest_LTS_WDT_Timeout --warnings more
  113. - name: Scheduler_example19_Dynamic_Tasks
  114. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example19_Dynamic_Tasks --warnings more
  115. - name: Scheduler_example19_Dynamic_Tasks_SelfDestruct
  116. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example19_Dynamic_Tasks_SelfDestruct --warnings more
  117. # - name: Scheduler_example19_Dynamic_Tasks_stdQueue
  118. # run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example19_Dynamic_Tasks_stdQueue --warnings more
  119. - name: Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object
  120. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object --warnings more
  121. - name: Scheduler_example21_OO_Callbacks
  122. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example21_OO_Callbacks --warnings more
  123. - name: Scheduler_example23_IDLE_Callback
  124. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example23_IDLE_Callback --warnings more
  125. - name: Scheduler_example24_CPU_LOAD
  126. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example24_CPU_LOAD --warnings more
  127. - name: Scheduler_example25_SCHEDULER_CHAIN
  128. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example25_SCHEDULER_CHAIN --warnings more
  129. - name: Scheduler_example26_SCHEDULING_OPTIONS
  130. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example26_SCHEDULING_OPTIONS --warnings more
  131. # - name: Scheduler_example27_PlatformIO
  132. # run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example27_PlatformIO --warnings more
  133. - name: Scheduler_example28_Tickless
  134. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example28_Tickless --warnings more
  135. ArduinoIDE_ESP32:
  136. strategy:
  137. matrix:
  138. include:
  139. - arduino-platform: "esp32:esp32"
  140. fqbn: "esp32:esp32:esp32"
  141. runs-on: ubuntu-latest
  142. steps:
  143. - name: Checkout
  144. uses: actions/checkout@main
  145. - name: Setup Arduino CLI
  146. uses: arduino/setup-arduino-cli@v1.1.1
  147. - name: Install platform
  148. run: |
  149. arduino-cli core update-index
  150. arduino-cli core install ${{ matrix.arduino-platform }}
  151. - name: Install repo as library
  152. run: |
  153. mkdir -p "$HOME/Arduino/libraries"
  154. ln -s "$PWD" "$HOME/Arduino/libraries/."
  155. - name: Install required libraries
  156. run: |
  157. mkdir -p "$HOME/Arduino/libraries"
  158. # Install QueueArray from Arduino Playground
  159. wget -O queuearray.zip https://playground.arduino.cc/uploads/Code/QueueArray/index.zip
  160. unzip queuearray.zip -d "$HOME/Arduino/libraries/"
  161. # Install MemoryFree library from Arduino Library Manager
  162. git clone https://github.com/McNeight/MemoryFree.git
  163. cp -r MemoryFree "$HOME/Arduino/libraries/"
  164. - name: Scheduler_example00_Blink
  165. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example00_Blink --warnings more
  166. - name: Scheduler_example00_Blink_Namespace
  167. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example00_Blink_Namespace --warnings more
  168. - name: Scheduler_example01
  169. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example01 --warnings more
  170. - name: Scheduler_example02
  171. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example02 --warnings more
  172. - name: Scheduler_example03
  173. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example03 --warnings more
  174. - name: Scheduler_example04_StatusRequest
  175. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example04_StatusRequest --warnings more
  176. - name: Scheduler_example05_StatusRequest
  177. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example05_StatusRequest --warnings more
  178. - name: Scheduler_example06_IDLE
  179. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example06_IDLE --warnings more
  180. # - name: Scheduler_example07_WDT
  181. # run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example07_WDT --warnings more
  182. - name: Scheduler_example08_LTS
  183. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example08_LTS --warnings more
  184. - name: Scheduler_example09_TimeCritical
  185. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example09_TimeCritical --warnings more
  186. - name: Scheduler_example10_Benchmark
  187. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example10_Benchmark --warnings more
  188. - name: Scheduler_example11_Priority
  189. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example11_Priority --warnings more
  190. - name: Scheduler_example12_Priority
  191. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example12_Priority --warnings more
  192. - name: Scheduler_example13_Micros
  193. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example13_Micros --warnings more
  194. # - name: Scheduler_example14_Yield
  195. # run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example14_Yield --warnings more
  196. - name: Scheduler_example15_STDFunction
  197. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example15_STDFunction --warnings more
  198. - name: Scheduler_example16_Multitab
  199. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example16_Multitab --warnings more
  200. - name: Scheduler_example17_Timeout
  201. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example17_Timeout --warnings more
  202. - name: Scheduler_example18_StatusRequest_LTS_WDT_Timeout
  203. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example18_StatusRequest_LTS_WDT_Timeout --warnings more
  204. - name: Scheduler_example18_StatusRequest_LTS_WDT_Timeout
  205. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example18_StatusRequest_LTS_WDT_Timeout --warnings more
  206. - name: Scheduler_example19_Dynamic_Tasks
  207. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example19_Dynamic_Tasks --warnings more
  208. - name: Scheduler_example19_Dynamic_Tasks_SelfDestruct
  209. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example19_Dynamic_Tasks_SelfDestruct --warnings more
  210. - name: Scheduler_example19_Dynamic_Tasks_stdQueue
  211. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example19_Dynamic_Tasks_stdQueue --warnings more
  212. - name: Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object
  213. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example20_StatusRequest_LTS_WDT_Timeout_Object --warnings more
  214. - name: Scheduler_example21_OO_Callbacks
  215. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example21_OO_Callbacks --warnings more
  216. - name: Scheduler_example23_IDLE_Callback
  217. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example23_IDLE_Callback --warnings more
  218. - name: Scheduler_example24_CPU_LOAD
  219. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example24_CPU_LOAD --warnings more
  220. - name: Scheduler_example25_SCHEDULER_CHAIN
  221. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example25_SCHEDULER_CHAIN --warnings more
  222. - name: Scheduler_example26_SCHEDULING_OPTIONS
  223. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example26_SCHEDULING_OPTIONS --warnings more
  224. # - name: Scheduler_example27_PlatformIO
  225. # run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example27_PlatformIO --warnings more
  226. - name: Scheduler_example28_Tickless
  227. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example28_Tickless --warnings more
  228. ArduinoIDE_ESP8266_ONLY:
  229. strategy:
  230. matrix:
  231. include:
  232. - arduino-platform: "esp8266:esp8266"
  233. fqbn: "esp8266:esp8266:nodemcuv2"
  234. runs-on: ubuntu-latest
  235. steps:
  236. - name: Checkout
  237. uses: actions/checkout@main
  238. - name: Setup Arduino CLI
  239. uses: arduino/setup-arduino-cli@v1.1.1
  240. - name: Install platform
  241. run: |
  242. arduino-cli core update-index --additional-urls https://arduino.esp8266.com/stable/package_esp8266com_index.json
  243. arduino-cli core install ${{ matrix.arduino-platform }} --additional-urls https://arduino.esp8266.com/stable/package_esp8266com_index.json
  244. - name: Install repo as library
  245. run: |
  246. mkdir -p "$HOME/Arduino/libraries"
  247. ln -s "$PWD" "$HOME/Arduino/libraries/."
  248. - name: Scheduler_example14_Yield
  249. run: arduino-cli compile --fqbn ${{ matrix.fqbn }} ./examples/Scheduler_example14_Yield --warnings more
  250. PIO:
  251. runs-on: ubuntu-latest
  252. steps:
  253. - name: Checkout
  254. uses: actions/checkout@main
  255. - name: Set up Python
  256. uses: actions/setup-python@v4
  257. with:
  258. python-version: '3.x'
  259. - name: Install PlatformIO
  260. run: |
  261. python -m pip install --upgrade pip
  262. pip install platformio
  263. - name: Install required libraries for PlatformIO
  264. run: |
  265. mkdir -p lib
  266. cd examples/Scheduler_example27_PlatformIO
  267. mkdir -p lib/TaskScheduler
  268. # Copy the current branch's TaskScheduler source to lib directory
  269. cp -r ../../src/* lib/TaskScheduler/
  270. # Install other required libraries
  271. # Install QueueArray from Arduino Playground
  272. wget -O queuearray.zip https://playground.arduino.cc/uploads/Code/QueueArray/index.zip
  273. unzip queuearray.zip -d lib/
  274. # Install MemoryFree from GitHub
  275. git clone https://github.com/McNeight/MemoryFree.git
  276. cp -r MemoryFree lib/
  277. - name: Scheduler_example27_PlatformIO
  278. run: |
  279. cd examples/Scheduler_example27_PlatformIO
  280. pio run -e esp32dev
  281. - name: Scheduler_example29_NonArduino
  282. run: |
  283. cd examples/Scheduler_example29_NonArduino
  284. pio run -e esp32dev