After practise with Apache Jenkins CI and Github action CI for a time and
do some CI problems search in Apache maillist and google, let's sum up as
below:

                                     Apache Jenkins
                                                   |    Github action

============================================================================================================================

Provide Linux/Windows real Machines, but MacOS not available
                   |     Provide Linux/MacOS/Windows VM

 Apache jenkins slaves are limited and shared with other ASF projects
                    |     The computing power can be accessed for each user
at first time

 Github PRs may wait nearly hours to be scheduled, for nightly build it
works well         |     Integrate with the github workflow smoothly

Restrict accounts access to update jenkins configs
                               |     Free to Make PRs to update github
action workflow

More info on Jenkins and Github action for reference:

https://help.github.com/en/actions/automating-your-workflow-with-github-actions/about-github-actions#usage-limits

https://knapsackpro.com/ci_comparisons/jenkins/vs/github-actions // sth
maybe obsolete for github action

So, I think we could consider to use apache jenkins ci as nightly build
and use github action ci as PR check build accordingly.

1. Apache Jenkins CI for Nightly Build

There is an existing freestyle NuttX Nightly Build do cron job at
midnight each day. However, it's very simple. And there is still flock
issue to resolve to make parallel build all pass.

https://builds.apache.org/view/Incubator%20Projects/job/NuttX-Nightly-Build/

 Thanks to @Maht, he made multibranch jenkins pipeline PR which would make
the Nightly build more robust. But it may still need some time to switch to
it because of Apache Jenkins access control. The PRs as below:

https://github.com/apache/incubator-nuttx-testing/pull/2

https://github.com/apache/incubator-nuttx/pull/174

Also, there is still travis CI pull request form @yamt, we could integrate
it into incubator-nuttx-testing as maht do.

https://github.com/apache/incubator-nuttx/pull/183

<https://builds.apache.org/view/Incubator%20Projects/job/NuttX-Nightly-Build/>

2. Github action CI for Check Build

I have just make two PRs to incubator-nuttx and inucbator-nuttx-apps
accordingly as below:

https://github.com/apache/incubator-nuttx/pull/261

https://github.com/apache/incubator-nuttx-apps/pull/65

The two PRs are not intended to be merged right now. They still need align
to check testlist update under incubator-nuttx-testing.

For example, Consider have a minimal check testlist set that always run.

As for github action check build CI, there are still more space to optimize:

1. Matrix builds to allow concurrent jobs and even multi-platorms

To speed up the check build time, use multiple jobs in github action
workflow to do parallel builds as @btashton and @davids suggest.

2. Use docker images with tools preinstalled

Now it takes several minitues to install all essential tools in ubuntu vm.

we may build nuttx with docker images which tools preinstalled in the
future.

Anyway, These are just  some thoughts from our previous discussions,
welcome more reviews and feedbacks from community.
 Thanks!


Miguel Ángel Herranz <mig...@midokura.com.invalid> 于2020年2月4日周二 下午7:23写道:

> Hi Haitao,
>
> I will take a look.
>
> By the way, do Apache Jenkins slave includes Docker? Or alternatively, does
> Apache Jenkins have Docker Slave [1] plugin available?
>
> If we could use either launch Docker containers in the slave or launch the
> jobs in a Docker container we could use an image with all the tools pre
> installed.
>
> Please someone with read privileges on Jenkins check that whenever possible
> (Xiang? Justin?).
>
> Thanks,
> Miguel
>
> [1] https://plugins.jenkins.io/docker-slaves
>
> On Tue, Feb 4, 2020 at 12:04 PM Haitao Liu <liugu...@gmail.com> wrote:
>
> > Thanks Xiang!
> > Another PR https://github.com/apache/incubator-nuttx-testing/pull/4
> since
> > Apache jenkins slave haven't gperf preinstalled,
> > so switch to use our owned prebuilt gperf. Xiang and Miguel please help
> to
> > review.
> > Or in another way, may I ask Justin Apache Infra team to apt-get install
> > gperf instead?
> >
> > Xiang Xiao <xiaoxiang781...@gmail.com> 于2020年2月4日周二 下午2:36写道:
> >
> > > I will merge it.
> > >
> > > On Tue, Feb 4, 2020 at 12:50 PM Haitao Liu <liugu...@gmail.com> wrote:
> > > >
> > > > Hi, Greg,
> > > > Thanks to Miguel's careful review, could you please help to finish
> the
> > PR
> > > > merge?
> > > > Then I and Miguel can continue the development with more PRs and
> > > refinement.
> > > >
> > > > Gregory Nutt <spudan...@gmail.com> 于2020年1月31日周五 下午11:30写道:
> > > >
> > > > >
> > > > > > I have just added the CI scripts and testlist files in
> > > > > > https://github.com/apache/incubator-nuttx-testing/pull/3
> > > > > > And asked XiaoXiang help to create Nuttx Nightly build job in
> > > > > > builds.apache.org before. But it's just a freestyle CI job
> > > > > > which call cibuild.sh simply. Once CI script and testlist file
> > verify
> > > > > well.
> > > > > > It would be better if it could be integrated into the
> > > > > > pipeline definition you mentioned. You could help to use the
> > pipeline
> > > > > > way
> > > > > > if access granted. Let's work together on it :)
> > > > >
> > > > > Perhaps Miguel could provide the review of PR3.  I will be happy to
> > > > > finish the merge after some review is provided.
> > > > >
> > > > > Once it has been merged, both you and Miguel can continue the
> > > > > development with PRs.  But we need to find someone competent to
> > provide
> > > > > review.
> > > > >
> > > > > Greg
> > > > >
> > > > >
> > > > >
> > >
> >
>

Reply via email to