Git Product home page Git Product logo

github-actions-platformio's Introduction

Build PlatformIO

github-actions-platformio

PlatormIO et Visual Studio Code

PlatormIO est un outil professionnel multi-plateforme, multi-architecture et multi-framework destiné aux ingénieurs en systèmes embarqués et aux développeurs de logiciels qui écrivent des applications pour ce type de système.

Liens :

Visual Studio Code est un éditeur de code source extensible et disponible pour Windows, macOS et Linux.

Liens :

PlatformIO CLI

PlatformIO CLI fournit l'utilitaire platformio (ou son alias pio) pour programmer des systèmes embarqués (Arduino UNO, ESP32, etc.).

Dans un terminal :

$ platformio --version
PlatformIO Core, version 6.1.4

$ pio --version
PlatformIO Core, version 6.1.4

$ platformio --help
$ pio --help

Remarque : pio est un alias de la commande platformio.

Guide : https://docs.platformio.org/en/stable/core/userguide/index.html

Créer un projet

  • Créer un répertoire pour le projet
$ mkdir -p nom-projet
$ cd nom-projet
  • Initialiser le projet pour une carte et un framework
$ pio project init --board uno --project-option="framework=arduino"
...
include : Put project header files here
lib : Put here project specific (private) libraries
src : Put project source files here
platformio.ini : Project Configuration File
...
Project has been successfully initialized! Useful commands:
pio run : process/build project from the current directory
pio run --target upload or pio run -t upload : upload firmware to a target
pio run --target clean : clean project (remove compiled files)
...
  • Voir l'état initial du projet
$ ls -l
drwxrwxr-x 2 tv tv 4096 sept. 27 07:59 include
drwxrwxr-x 2 tv tv 4096 sept. 27 07:59 lib
-rw-rw-r-- 1 tv tv  427 sept. 27 07:59 platformio.ini
drwxrwxr-x 2 tv tv 4096 sept. 27 07:59 src
drwxrwxr-x 2 tv tv 4096 sept. 27 07:59 test

$ cat platformio.ini
[env:uno]
platform = atmelavr
board = uno
framework = arduino

Éditer des fichiers

Les fichiers sources sont à placer dans src/, par exemple src/main.cpp pour un framework Arduino :

#include <Arduino.h>

void setup()
{
}

void loop()
{
}

Fabriquer un projet

$ pio run -v

Programmer le système embarqué

$ pio run -t upload -v

Les fichiers générés pendant la fabrication sont stockés dans un répertoire .pio.

⚠️ Ces fichiers ne doivent jamais être conservés dans un dépôt git. Le plus simple est de "demander" à git de les ignorer. Pour cela, il suffit d'ajouter .pio dans le fichier .gitignore qui est situé à la racine du dépôt.

Nettoyer un projet

Les fichiers générés à la fabrication peuvent être supprimés avec la commande suivante :

$ pio run --target clean

Monitorer

$ platformio device list
$ platformio device monitor --help

Des informations spécifiques peuvent être conservées dans le fichier du projet platformio.ini :

[env:uno]
platform = atmelavr
board = uno
framework = arduino

monitor_speed = 115200

Les bibliothèques

La gestion des bibliothèques sous PlatormIO est contrôlée par la commande pio pkg

Remarque : pio lib est considérée maintenant comme obsolète. Elle disparaîtra probablement dans les nouvelles versions.

Les bibliothèques peuvent être installées :

  • globalement (dans le dossier d'installation de PlatformIO)
$ pio lib -g list
$ pio pkg list --global --only-libraries
...
  • localement (dans le dossier du projet)
$ pio lib list
$ pio pkg list --only-libraries

Et de manière générale : pio pkg list

Les commandes utiles :

  • rechercher une bibliothèque :
$ pio pkg search xxx
  • voir les informations sur une bibliothèque :
$ pio pkg show xxx
  • installer une bibliothèque (avec l'option --global pour l'installer globalement) :
$ pio pkg install xxx

Des informations spécifiques sur les bibliothèques peuvent être conservées avec lib_deps dans le fichier du projet platformio.ini, par exemple :

[env:uno]
platform = atmelavr
board = uno
framework = arduino

lib_deps =
  fastled/FastLED @ ^3.4.0

Remarque : Il est possible de créer ses propres bibliothèques à l’intérieur du projet dans le dossier lib. Le principe est de créer un sous-répertoire qui porte le même nom que le nom des fichiers sources (.h et .cpp). Il est aussi possible de placer des fichiers d’entête (.h) dans le dossier include du projet.

GitHub Actions

GitHub Actions permet d'automatiser des tâches associées à un dépôt GitHub.

La "tâche" (le travail) est décrite dans un fichier .yml stocké dans l'arborescence .github/workflows/.

Le fichier peut être créé directement à partir de l'interface web de GitHub dans l'onglet Actions puis New workflow.

GitHub Actions propose alors des modèles prêts à l'emploi. On peut créer son propre workflow en cliquant sur set up a workflow yourself. Un squelette est alors fourni.

Principe de base

Il faut commencer par donner un nom au fichier, par exemple : build-platformio.yml

Le workflow doit avoir un nom :

name: Build PlatformIO

Puis on définit l'évènement (on) déclencheur (trigger), ici un git push sur la branche principale main :

on:
  push:
    branches: [main]

Ensuite, on décrit le travail (job) à exécuter (runs-on) sur une machine (virtuelle, par exemple Ubuntu), qui est généralement composé d'étapes (step) :

  • Extraction du dépôt
  • Installation et configuration de PlatformIO
  • Fabrication du projet PlatformIO
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      # Checkout repository
      - name: Checkout code
        uses: actions/checkout@v2

      # Setup PlatformIO in PATH
      - name: Setup PlatformIO
        uses: n-vr/setup-platformio-action@v1

      # Build the PlatformIO project
      - name: Build PlatformIO project
        run: pio run

Remarque : Le mot clé uses permet de récupérer des actions existantes fournies par des contributeurs.

Exemple : Build PlatformIO

Le fichier .github/workflows/build-platformio.yml complet :

name: Build PlatformIO
on:
  # Triggers the workflow on push or pull request events but only for the main branch
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      # Checkout repository
      - name: Checkout code
        uses: actions/checkout@v2

      # Setup PlatformIO in PATH
      - name: Setup PlatformIO
        uses: n-vr/setup-platformio-action@v1

      # Build the PlatformIO project
      - name: Build PlatformIO project
        run: pio run

Badge

Il est possible d'associer un badge d'état (une image) à un workflow.

Pour cela, il faut aller dans l'onglet Actions puis cliquer sur le workflow (dans la liste à gauche). Il faut ensuite cliquer sur les trois petits points ... (à droite de la zone de recherche) et sélectionner Create status badge. Une boîte de dialogue s'affiche et il faut récupérer le code Markdown (Copy status badge Mardown).

Ce code est à placer dans le fichier README.md du dépôt (généralement au tout début du fichier) pour afficher le badge sur la page d'accueil.

[![Build PlatformIO](https://github.com/<organisation>/<depot>/actions/workflows/build-platformio.yml/badge.svg)](https://github.com/<organisation>/<depot>/actions/workflows/build-platformio.yml)

©️ LaSalle Avignon - 2022 - [email protected]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.