[ovs-dev] [RFC] cirrus: Add Cirrus CI integration for FreeBSD build

Ilya Maximets i.maximets at samsung.com
Wed Dec 12 16:03:58 UTC 2018


On 11.12.2018 21:25, Aaron Conole wrote:
> Ilya Maximets <i.maximets at samsung.com> writes:
> 
>> CirrusCI [1] is free for open-sorce projects and provides similar
>> to TravisCI interfaces. One significant difference is ability
>> to run tasks on FreeBSD instances.
>>
>> This patch adds simple configuration file to test OVS build
>> on two FreeBSD releases with gcc and clang.
>> Unit tests are commented out because they are broken for now.
>>
>> To enable the automated checks Cirrus CI application from GitHub
>> Marketplace should be installed. See details in Quick Start guide [2].
>>
>> [1] https://cirrus-ci.org
>> [2] https://cirrus-ci.org/guide/quick-start/
>>
>> Signed-off-by: Ilya Maximets <i.maximets at samsung.com>
>> ---
>>
>> This could be useful to test FreeBSD build automatically to early
>> detect issues. CirrusCI looks suitable for that purpose and it's
>> the only public CI system that I managed to find that supports
>> FreeBSD images. Sending as RFC to start discussion.
> 
> Awesome find.  Thanks, Ilya!
> 
>> Few more differentiation points with Travis. Cirrus allows to
>> configure number of CPUs and the amount of required memory. It
>> also supports Linux, OSX and Windows containers. So, maybe, if
>> we'll like it, we could drop Travis and AppVeyor and use single
>> CI system for all the tests.
>>
>> I'm not advertising and not trying to convince to replace our
>> current CI systems. I found CirrusCI just few days ago by a mail [3]
>> in qemu-devel list. I just think that it's the only option for
>> now to test BSD builds with public CI. And it worked fine for me
>> with below configuration.
>>
>> Thoughts ?
> 
> I'm not married to technology for a reason :)  If it seems better, then
> it is worth checking out.  I can play around with it a little bit, but
> I'll be AFK until Jan, so it might be better for someone else who has
> the recent time to take a look.
> 
> One thing I really find painful with Travis is the difficulty running
> the alternate test suites (make check-*).  Travis can run them, but we
> need to request privileged containers, and that will add to the build
> time.  Not sure if there's some kind of custom privilege support from
> Cirrus that would let us run the alternate test suites - or even let us
> run them by requesting privileges.

Didn't find any information about privileges in CirrusCI docs. Maybe
we need to try and find out the real restrictions.

> 
> Another thing I'm not sure about is the polling.  At least Travis does
> have a RESTful API that we can poll with.  I hope the CirrusCI system
> would as well.  Currently, I am looking into getting the robot to poll
> the Travis system and respond to a series if there is a problem.

Did you thought about using github webhooks for 'Check suite' events?
They will be independent from the exact CI system.

> 
>> As a note: I just spotted that TravisCI adds windows support.
>> Maybe we could use it in the future for windows builds.
>>
>> [3] https://lists.nongnu.org/archive/html/qemu-devel/2018-12/msg00935.html
>>
>>  .cirrus.yml | 30 ++++++++++++++++++++++++++++++
>>  Makefile.am |  1 +
>>  2 files changed, 31 insertions(+)
>>  create mode 100644 .cirrus.yml
>>
>> diff --git a/.cirrus.yml b/.cirrus.yml
>> new file mode 100644
>> index 000000000..4902fd370
>> --- /dev/null
>> +++ b/.cirrus.yml
>> @@ -0,0 +1,30 @@
>> +freebsd_build_task:
>> +
>> +  freebsd_instance:
>> +    matrix:
>> +      image: freebsd-12-0-release-amd64
>> +      image: freebsd-11-2-release-amd64
>> +    cpu: 4
>> +    memory: 8G
>> +
>> +  env:
>> +    matrix:
>> +      COMPILER: gcc
>> +      COMPILER: clang
>> +
>> +  prepare_script:
>> +    - pkg install -y automake libtool gmake gcc wget
>> +                     python py27-six py27-sphinx
>> +
>> +  configure_script:
>> +    - ./boot.sh
>> +    - ./configure CC=$COMPILER MAKE=gmake OVS_CFLAGS='-Wall' --enable-Werror
>> +                  || { cat config.log; exit 1; }
>> +
>> +  build_script:
>> +    - gmake -j8
>> +
>> +#  TODO(i.maximets): Uncomment the test suite execution when it is fixed.
>> +#  check_script:
>> +#    - gmake -j8 check TESTSUITEFLAGS=-j8 RECHECK=yes
>> +#                || { cat ./tests/testsuite.log; exit 1; }
>> diff --git a/Makefile.am b/Makefile.am
>> index 64725654c..8408509c9 100644
>> --- a/Makefile.am
>> +++ b/Makefile.am
>> @@ -76,6 +76,7 @@ EXTRA_DIST = \
>>  	MAINTAINERS.rst \
>>  	README.rst \
>>  	NOTICE \
>> +	.cirrus.yml \
>>  	.travis.yml \
>>  	.travis/linux-build.sh \
>>  	.travis/linux-prepare.sh \
> 
> 


More information about the dev mailing list