Automatyczne testy kompilacji GG

User avatar
klew
Posts: 9728
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Jeśli ktoś przygotuje dockera, który będzie potrafił kompilować różne warianty GG (czy to na arduino-cli czy na pio - mi bez różnicy), to możemy go podpiąć do serwera wykonującego automatyczne testy. Wtedy po każdym commicie odpalała by się kompilacja wszystkich ustawionych konfiguracji i feedback byłby bardzo szybko.
Kiedy będzie Supla Offline Party / SOP#2025 ?
rafalekkalwak@wp.pl
Posts: 674
Joined: Mon Feb 06, 2023 8:56 am

Post

klew wrote: Mon Sep 23, 2024 7:36 am Jeśli ktoś przygotuje dockera, który będzie potrafił kompilować różne warianty GG (czy to na arduino-cli czy na pio - mi bez różnicy), to możemy go podpiąć do serwera wykonującego automatyczne testy. Wtedy po każdym commicie odpalała by się kompilacja wszystkich ustawionych konfiguracji i feedback byłby bardzo szybko.
mogę spróbować, ale musiał bym wiedzieć dwie rzeczy:
a) jak to się rzeczywiście kompiluje
b) jaki feedback muszę zwrócić aby było to użyteczne
User avatar
klew
Posts: 9728
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

rafalekkalwak@wp.pl wrote: Mon Sep 23, 2024 7:55 am mogę spróbować, ale musiał bym wiedzieć dwie rzeczy:
a) jak to się rzeczywiście kompiluje
b) jaki feedback muszę zwrócić aby było to użyteczne
Nie wiem jak to się kompiluje. Zawsze miałem trudności z kompilacją GG :P choć kiedyś przez to przebrnąłem, ale nie pamiętam.
PIO nigdy nie używałem, więc tutaj nic nie podpowiem ;).

Natomiast ogólnie, potrzebny jest docker, który generuje i konfiguruje całe środkowisko.
Np. dla supla-device jest to taki plik: https://github.com/SUPLA/supla-device/b ... Dockerfile
Jest tam docker na ubuntu, do tego pobrane potrzebne narzędzia, zainstalowanie arduino-cli, następnie zainstalowania odpowiednich boardów i bibliotek potrzebnych do kompilacji. Na koniec pobiera się supla-device.
Z takiego dockera można bezpośrednio skompilować przykłady z supla-device.

Do "CI" używamy środowiska Drone (https://www.drone.io/). Przykładowy plik konfiguracyjny drone'a:
https://github.com/SUPLA/supla-device/b ... .drone.yml
Tam jest dużo rzeczy, ale ogólnie kompilacja jakiegoś przykładu z arduino wygląda tak:

Code: Select all

- name: arduino_esp32_compilation_check_part_1
  image: devel/arduino-cli
  pull: never
  commands:
  - export SUPLA_DEVICE_PATH=/drone/src
  - rm ~/Arduino/libraries/supla-device
  - ln -s /drone/src ~/Arduino/libraries/supla-device
  - cd examples
  - arduino-cli compile --fqbn esp32:esp32:esp32wrover --optimize-for-debug --board-options PartitionScheme=huge_app --export-binaries --warnings all ./Afore/
Najważniejsze to "commands", gdzie pod spodem są komendy wykonywane po kolei jak z linii poleceń.
W linuxie, jeśli jest wszystko ok, to komenda zwraca 0, jeśli coś poszło nie tak, to zwraca wartość różną od 0 - wtedy Drone traktuje to jak błąd i go zgłasza.
Jeśli kompilacja arduino-cli się wywali, to zwraca "nie 0" i jest błąd.
Kiedy będzie Supla Offline Party / SOP#2025 ?
rafalekkalwak@wp.pl
Posts: 674
Joined: Mon Feb 06, 2023 8:56 am

Post

Few minutes later...

@klew sprawdzisz czy o to chodziło? Jeśli tak to dodam wszystkie konfiguracje :P


https://github.com/rkalwak/GUI-Generic/ ... cker_build
https://github.com/rkalwak/GUI-Generic/ ... .drone.yml

Return to “GUI Generic”