ilpincy / argos3

A parallel, multi-engine simulator for heterogeneous swarm robotics
http://www.argos-sim.info/
262 stars 121 forks source link

Setting up Travis CI #159

Closed jharwell closed 2 years ago

jharwell commented 3 years ago

@ilpincy I have a small build matrix working for ARGoS compilation on travis-ci, which should serve as a starting point for eventually adding unit and integration tests. Right now it just tests "does ARGoS compile" on multiple platforms. I have a few questions before I open the pull request:

A few additional notes:

ilpincy commented 3 years ago

Thanks for setting this up! A few answers:

What specific ubuntu versions does ARGoS support ? The github page lists requirements by compiler, not ubuntu version. ARGoS currently compiles via the instructions on the github page on xenial, bionic, and focal, so those are the ones I put in the build matrix.

ARGoS should work on any recent Linux distribution. I don't give a special attention to Ubuntu, although I have packages for 18.04 onwards. I also test it on OpenSUSE and I have people who test it on other distributions. I would prefer if the tests were not distribution-specific, because the fact that ARGoS runs on Ubuntu is not sufficient.

Is testing compilation with the default gcc version that ships with xenial, bionic, and focal sufficient, or should I set travis up to test with specific gcc versions on specific ubuntu versions ?

Any gcc version released in the past 3 years should compile ARGoS. Same for LLVM. Both compilers must work - this means that sometimes we have accept warnings that are not checked in the same way across compilers. Again, using Ubuntu to test compilation is not sufficient.

What specific OSX versions does ARGoS support ? The github page doesn't say. In travis, OSX versions are categorized by the XCode version, and ARGoS currently compiles via the instructions on the github page for XCode 11 and XCode 12. XCode 9/10 sort of worked, but timed out because of how long it took to update homebrew to install the necessary packages.

No specific OSX version, again. Anything released since 2018 should work.

Does ARGoS only support specific clang versions in addition to specific XCode versions, and if so what are they ? The github page does not say.

All the versions released in the past 3 years.

What branch in the ARGoS repo should travis integration be attached to ? It can be any branch, though it would probably be best if it was not master, so that we had a staging area for testing pull requests, etc., and only merged to master after sufficient vetting with manual and automated unit testing. Perhaps creating a new branch like "devel", "integration", or "staging" would be the way to go, and require all future ARGoS pull requests target that branch instead of master ?

Having a devel branch would be a good idea!

Travis does not support opensuse currently, so I can't use ci to test compilation.

This is a problem and possibly a deal breaker :( I need ARGoS to work as widely as possible. At the moment, when I make a release, I compile ARGoS on multiple virtual machines by hand. It's tedious, but it guarantees that ARGoS works widely.

I cannot enable travis for the main ARGoS repo--I do not have write access, so it will have to be done by @ilpincy or @allsey87 (maybe just @ilpincy -- I don't know if only owners can set this up or not) after the pull request is merged.

I can give you write access, that wouldn't be an issue. The important thing though is that we agree on what gets added to ARGoS and how bugs are addressed.

jharwell commented 3 years ago

Thanks! I will change my matrix to be compiler+version based rather than OS based. Upon further digging, I think I can work around the opensuse issue by using docker and building/testing ARGoS inside an opensuse container which is running in the host OS.

ilpincy commented 3 years ago

That would be perfect! Can Travis also create packages automatically?

jharwell commented 3 years ago

You can run whatever shell commands you need to inside the ci environment, so I think so. The only issue would be figuring out how to get the built package to be pushed to the ARGoS website. You would probably need to setup an authentication key for the server which hosts the ARGoS images/packages.

ilpincy commented 3 years ago

I usually store the Ubuntu packages on Google Drive, and take advantage of the OpenSUSE build system for storage of RPM packages. MacOSX needs no packages (well, they'd be nice).

jharwell commented 3 years ago

Working on getting opensuse testing setup. The binary package links on the ARGoS website are broken for opensuse :-(. When I follow the setup instructions on the github page, I get:

65296db21133:/ # zypper ar -n openSUSE-13.2-Graphics http://download.opensuse.org/repositories/graphics/openSUSE_13.2/ graphics                                                               
Adding repository 'openSUSE-13.2-Graphics' .............................................................................................................................................[done]
Repository 'openSUSE-13.2-Graphics' successfully added                                                                                                                                        

URI         : http://download.opensuse.org/repositories/graphics/openSUSE_13.2/                                                                                                               
Enabled     : Yes                                                                                                                                                                             
GPG Check   : Yes                                                                                                                                                                             
Autorefresh : No                                                                                                                                                                              
Priority    : 99 (default priority)                                                                                                                                                           

Repository priorities are without effect. All enabled repositories share the same priority.                                                                                                   
65296db21133:/ #           zypper refresh;                                                                                                                                                    
Retrieving repository 'openSUSE-13.2-Graphics' metadata ...............................................................................................................................[error]
Repository 'openSUSE-13.2-Graphics' is invalid.                                                                                                                                               
[graphics|http://download.opensuse.org/repositories/graphics/openSUSE_13.2/] Valid metadata not found at specified URL                                                                        
History:                                                                                                                                                                                      
 - [graphics|http://download.opensuse.org/repositories/graphics/openSUSE_13.2/] Repository type can't be determined.                                                                          

http://download.opensuse.org/repositories/graphics/openSUSE_13.2/ says "resource no longer available" if I try to go to the webpage. I am able to compile ARGoS on OpenSUSE, but without any of the visualization stuff enabled as a result of this missing graphics package/repository.

ilpincy commented 3 years ago

Thanks, I'll check that. I have a script that makes a couple of fixes there, that might be the problem. The issue is that the earlier I can look into this is next week.

jharwell commented 3 years ago

Thanks!

In the meantime, I have gotten CI set up for compilers in ~last 3 years:

ilpincy commented 3 years ago

That's perfect! At the moment, there is a known issue on MacOSX on HomeBrew. I narrowed it down to the pkg-config formula. However, if you compile directly from the source it works perfectly. I haven't had the time to get the solution to the HomeBrew issue yet.

jharwell commented 3 years ago

@ilpincy Have you had a chance to look at the openSUSE issue ? The pull request is ready to go sans that issue.

ilpincy commented 3 years ago

I'm working on fixing a few things in ARGoS today - I'll look into this issue as well.

jharwell commented 3 years ago

@ilpincy I don't seem to be able to setup travis for this repo, because I am not the owner (even though I have write access). I think you will need to setup the travis CI github integration.

jharwell commented 2 years ago

OBE--github actions is the way to go.