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

Reply via email to