Creación de una aplicación de entorno arduino utilizando CI github

imagen

Después de trabajar un poco con CI / CD (gitlab ce), recientemente encontré acciones en github y decidí probar qué tipo de bestia es esta.

No fue muy interesante construir JS u otras soluciones, así que decidí probar el ensamblaje del boceto Arduino para esp8266, y como resultado, obtuve un binario compilado listo para descargar directamente al microcontrolador sin la necesidad de instalar un IDE local de Arduino.

Acciones o canalización
Una secuencia de comandos y acciones que comienza después de ciertos eventos, por ejemplo, empujar a la rama del repositorio git, es decir, se iniciará después de cambiar un archivo. Puede modificar el archivo directamente con el editor de github, y el proyecto se compilará y compilará automáticamente. Pipeline se usa no solo para la compilación, sino también para varias pruebas de código.

No comencé a hacer una imagen acoplable para todo esto, complicaría el proceso de organización de ci / cd, y nuevamente, no necesito crear una imagen para cada biblioteca.

¿Cómo puede ser útil? Supongamos que hay algún tipo de proyecto de código abierto, para diferentes versiones de controladores con diferentes cantidades de memoria, y toma mucho tiempo compilar código para todas las plataformas. En las acciones, puede configurar una vez las plataformas para las cuales se requiere ensamblaje, y con cada cambio en el código en el repositorio para cada versión de la plataforma habrá un firmware listo.

El código del script de acción en sí:

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 }} 

De hecho

  • En un sistema limpio con ubuntu 18.04 instalamos arduino-cli
  • Agregar soporte esp8266
  • Compile el código arduino alojado en el repositorio,
  • Creamos una versión en la que agregamos el binario compilado

imagen

Las acciones en github son gratuitas para proyectos de código abierto, ahora también están disponibles para repositorios cerrados, pero parece que serán inaccesibles después de un tiempo.

No pretendo ser devops, algunas cosas podrían hacerse más fácilmente, pero, en cualquier caso, funciona.

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


All Articles