Création d'une application d'environnement Arduino à l'aide de CI Github

image

Ayant un peu de travail sur CI / CD (gitlab ce), j'ai récemment rencontré des actions sur github et j'ai décidé d'essayer de quel genre de bête il s'agit.

Il n'était pas très intéressant de construire JS ou d'autres solutions, j'ai donc décidé de tester l'assemblage de l'esquisse Arduino pour esp8266, d'obtenir en conséquence un binaire compilé prêt à être téléchargé directement sur le microcontrôleur sans avoir besoin d'installer un IDE Arduino local.

Actions ou pipeline
Une séquence de commandes et d'actions qui démarre après certains événements - par exemple, pousser vers la branche du référentiel git, c'est-à-dire qu'elle sera lancée après la modification d'un fichier. Vous pouvez modifier le fichier directement avec l'éditeur github, et le projet sera automatiquement compilé et compilé. Le pipeline est utilisé non seulement pour la compilation, mais aussi pour divers tests de code.

Je n'ai pas commencé à créer une image docker pour tout cela, cela compliquerait le processus d'organisation ci / cd, et encore une fois, je n'ai pas besoin de créer une image pour chaque bibliothèque.

Comment cela peut-il être utile? Supposons qu'il existe une sorte de projet open source, pour différentes versions de contrôleurs avec différentes quantités de mémoire, et qu'il faut beaucoup de temps pour compiler du code pour toutes les plates-formes. Dans les actions, vous pouvez configurer une fois les plates-formes pour lesquelles l'assemblage est requis - et à chaque changement de code dans le référentiel pour chaque version de la plate-forme, il y aura un firmware prêt.

Le code du script d'action lui-même:

on: [push] jobs: build: runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v1 - name: install arduino cli run: curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh - name: MakeSketch run: ./bin/arduino-cli sketch new MyFirstSketch - name: create dir run: mkdir -p /home/runner/.arduino15/packages - name: lib init run: sudo ./bin/arduino-cli core update-index --additional-urls http://arduino.esp8266.com/stable/package_esp8266com_index.json - name: install esp8266 run: sudo ./bin/arduino-cli core install esp8266:esp8266 --additional-urls http://arduino.esp8266.com/stable/package_esp8266com_index.json - name: install python3 run: sudo apt-get install -yq python3 - name: compile run: sudo ./bin/arduino-cli compile --fqbn esp8266:esp8266:d1 MyFirstSketch - uses: actions/upload-artifact@v1 with: name: esp8266-d1-mini-4m.bin path: MyFirstSketch/MyFirstSketch.esp8266.esp8266.d1.bin - uses: ncipollo/release-action@v1 with: artifacts: "MyFirstSketch/MyFirstSketch.esp8266.esp8266.d1.bin" tag: "release" token: ${{ secrets.GITHUB_TOKEN }} 

En fait -

  • Sur un système propre avec Ubuntu 18.04, nous installons Arduino-Cli
  • Ajouter le support esp8266
  • Compiler le code Arduino hébergé dans le référentiel,
  • Nous créons une version dans laquelle nous ajoutons le binaire compilé

image

Les actions sur github sont gratuites pour les projets open source, maintenant elles sont également disponibles pour les référentiels fermés, mais il semble qu'elles deviendront inaccessibles après un certain temps.

Je ne prétends pas faire de devops, certaines choses pourraient être faites plus facilement, mais en tout cas ça marche.

Source: https://habr.com/ru/post/fr479718/


All Articles