[Ovmsdev] CI ?

Ludovic LANGE ll-ovmsdev at lange.nom.fr
Wed Jun 7 17:15:40 HKT 2023


Dear list,

I've been playing a little with GitHub's automatic builds / CI for a few 
months, and I'm thinking about having it in master.

The advantages I can think of would be:

  * Ability to "catch" early on any incompatibility we could introduce
    in a PR. Still in a transition period between ESP-IDFv3.3 - the
    official builds, and ESP-IDFv5.x (the future, I hope, once all the
    issues are ironed out) ; it can add some value in trying to build
    the firmware for different combinations, and thus with different
    compiler versions / libraries versions.
  * It could also be a backup build system for the nightly / releases
    firmwares. Hosting, compiling there is free of charge for public
    GitHub projects

Possible concerns:

  * Very tied to GitHub's hosting and API - vendor lock-in
    However a) it's completely isolated in its own directory, and b)
    some of GitHub's competitors have a similar mechanism (GitLab, ...)


In my tests, I'm using it to:

  * Ensure that the documentation always compile without any warning.
    Sometime, we have very small issues that can impact the visual
    rendering of the HTML, and this step can trigger when the compiler
    emits a warning (or error)
  * Ensure that the changes I'm doing are building without error for a
    "matrix" of different environments:
      o target: ESP32 (but could also be other processor of the
        Espressif portfolio, as supported by the build chains: -S2, -S3,
        -C2, -C3, -C6, -H2 ...)
      o ESP-IDF version : v3.3.4 (our current), v4.4 branch, v5.0, v5.0,
        v5.0.1, v5.0.2, v5.0 branch (could also use v5.1 branch and
        latest, but compile errors from time to time)
      o Mongoose version: 7.9, 7.10, 6.11 (our current)


If you want to have a look, please check:

  * Some of the automated builds here
    https://github.com/llange/Open-Vehicle-Monitoring-System-3/actions
  * A set of corresponding build recipes here
    https://github.com/llange/Open-Vehicle-Monitoring-System-3/tree/build-master/.github/workflows
  * The output of a random build:
      o The log of commands:
        https://github.com/llange/Open-Vehicle-Monitoring-System-3/actions/runs/5193543334/jobs/9364221425
      o The build artefacts:
        https://github.com/llange/Open-Vehicle-Monitoring-System-3/suites/13419490939/artifacts/735285471
        (NB: Do not flash ! Just an example :-))


I'd be happy to have some feedback about the interest (or not) to have 
this in master.

For that the next plans would be:

  * Step1 : a PR (to be written) including all these config files in
    <root>/.github/workflows
  * Step2 : a configuration of our GitHub repo to :
      o activate the CI actions
      o After some time, mark some of these actions as "required" in PRs
        (Can be overriden of course, but will show the creator of the PR
        how to improve the PR and have it work across all the
        combinations of environments we aim to support)


Thanks for your time.


Regards,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openvehicles.com/pipermail/ovmsdev/attachments/20230607/b3552f6c/attachment.htm>


More information about the OvmsDev mailing list