TLDR: I think we need to make a "CI requirements and design" Draft Proposal (https://cwiki.apache.org/confluence/display/NUTTX/Draft+Proposals) ---
Hi, I think that in order to get a working CI as soon as possible we need to please define a plan in a coordinated way. I think "perfection" is the enemy of "good", so I propose to have two stages: 1st stage: Defining a "Good CI" to be ready ASAP, so we could include it as a requirement for the also-to-be-defined workflow (CI should go in the Criteria for acceptance of workflow https://cwiki.apache.org/confluence/display/NUTTX/Code+Contribution+Workflow+--+Brennan+Ashton#CodeContributionWorkflow--BrennanAshton-CriteriaForAcceptance ). 2nd stage: Defining a "Perfect CI" to be agree to future nice-to-have-but-not-essential parts of the CI, that can be extended later upon the basis of "Good CI". So, from now on I will talk about "Good CI" exclusively. I appreciate Haitao is preparing the scripts, but as being said, it should not be the only one defining it. I don't know Haitao and probably nobody knows me, so every decision is better done by the merits of the proposal itself and not the person. I think that for a "Good CI" we need to understand the needs for NuttX: some feedback from the people that have worked all these years with NuttX about how to test it and what to test to run to conclude if something has quality or not. So I would suggest to create a "Draft Proposal" ( https://cwiki.apache.org/confluence/display/NUTTX/Draft+Proposals) called something like "CI requirements and design" where to develop that proposal. In the proposal we should address what parts of the features of a CI we want for the "Good CI" among the ones one could expect in a CI (for example, from the ones described in https://en.wikipedia.org/wiki/Continuous_integration#Common_practices) . Despite being commong for CIs all over the world, we need to agree on a minimum. But more important even, as I said, is to know what is needed _specifically_ for NuttX. For example: - What sanity checks are mandatory? what tools are we going to use to enforce them? - What architectures we want to include: all of them? (list them) some of them can be deferred until "Perfect CI"? do Apache Jenkins have the machine for that architectures? if not ... are there emulators? and the toolchains? options, pros/cons - What are the stages of a NuttX build? What are the artifacts generated? can these artifacts be reused in different tests? how does that relate to the number of jobs? is the job pipeline a line, or some artifacts are fed to parallel jobs with different configurations to accelerate the testing? - Are we going to test the interface with the applications? Are the applications being tested in the CI pipeline using end-to-end tests? - What is the general CI "pipeline/job graph"? What are the triggers? What are the outputs? - What are the minimum level of logs to help debugging problems? - What artifacts will be used for the Releases? I have little experience with NuttX still, so more experienced people need to address these things. This document would include little or code at all. Having this document would be of great use, since we all could agree on a CI structure, even non programmers, and then, Haitao, myself or any other could help on the nitty-gritty details of translating that to specific CI (Apache infra Jenkins by now). Also, of course Haitao and others can continue to develop the implementations in parallel. The more stones he remove from the path the better. And sorry for the long email :) Miguel On Thu, Jan 16, 2020 at 3:26 PM Gregory Nutt <spudan...@gmail.com> wrote: > > > In addition, I notice http://www.nuttx.org/Documentation/NuttX.html say > gnu > > toolchains based on buildroot > > for many architectures. > > There are configurations at > https://bitbucket.org/nuttx/buildroot/src/master/configs/ for: > > avr-defconfig-4.3.3 > avr-defconfig-4.5.2 > > I am not sure of the state of those, however. > > > So for AVR gcc toolchains, I just found > > > https://www.microchip.com/mplab/avr-support/avr-and-arm-toolchains-c-compilers > > , > > but not right for nuttx. Do I need to build based on builtroot? > > I don't know about this, but the toolchain from AtmelStudio is quite nice. > > Notice that there is a build test for AVR (and MIPS) here: > https://bitbucket.org/nuttx/tools/src/master/buildtest/ . If you look in > doavr.sh, you an see that the test is configured to use the AtmelStudio > toolchain. > > I am not certain if AVR will build without AtmelStudio. I think it > expects some resource from AtmelStudio, but I might be wrong. > > Greg > > > > >