Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New CI #6412

Closed
philbucher opened this issue Feb 13, 2020 · 11 comments
Closed

New CI #6412

philbucher opened this issue Feb 13, 2020 · 11 comments
Labels
Continuous Integration related to Travis, Appveyor, ... Testing

Comments

@philbucher
Copy link
Member

@KratosMultiphysics/all

Hi everyone, good news 🎉
As you might have seen already, during the last months we worked on a new CI that suits our needs better. Travis and Appveyor have quite strict time restrictions, hence we could only add a small part of the code to the CI.

First we tried this based on self-hosted infrastructure, but this was associated with quite some maintenance.

In the meantime Github introduced Actions. We tested those to see how well they are suited for our CI.
It turned out that they work very well, hence we will base our CI on them (at least for the moment, until we need sth else). This way we don't have to maintain our own infrastructure.

Now what does that mean for you as developers & users?

  • Right now we have 5 build configurations
    • Ubuntu GCC Custom (i.e. no optimization flags to reduce build time) required
    • Ubuntu Clang Custom
    • Ubuntu GCC FullDebug required
    • Ubuntu Clang FullDebug
    • Windows Release required
  • The max time limit is now 6 hours (even though we should not reach this)
  • The current build times are (depending on caching) max 1 hour! And this is with a lot of (big) apps already!
  • The initial set of apps was chosen more or less randomly. I wanted to push the limits, so I added pretty much every app I knew that was actively developed and compiled/tests ran. You can find the list of apps in the CI configure script
  • Aside from some polishing and a few details it is pretty much ready for more apps to be added. @KratosMultiphysics/technical-committee will publish soon the requirements an app has to fulfill in order to be added to the CI. This will be posted here.
  • The new CI was made required only this week. In case you have problems please merge master. In case the problems persist please let us know.
  • The Clang build was only added recently, hence we will wait a bit before making it required.
  • Most probably at some point in the future we will remove Travis and Appveyor, since the new CI has a way larger capacity and it is overhead maintaining multiple systems.
  • The nightly build that was formerly done in AWS also runs in the Actions now. It is also almost ready

(@KratosMultiphysics/technical-committee please correct me or add if I missed sth)

@philbucher philbucher added Testing Continuous Integration related to Travis, Appveyor, ... labels Feb 13, 2020
@ddiezrod
Copy link
Contributor

I think tests are not being run in Windows, is there any reason for this?

@philbucher
Copy link
Member Author

I think @roigcarlo tried in appveyor but it was not as straight forward if I remember correctly
If you know how to do it help would be appreciated :)

@roigcarlo
Copy link
Member

Yep, the problem in appveyor was the lack of time which forced us to compile in release which forced us to compile with cotire, which in windows does not generate an INSTALL project so we cannot "see" kratos once installed.

Provided that we have more time in the new CI it should be possible to change to a non cotire compilation even if it means to compile in debug and run the tests then. Its something than can be explored.

@ddiezrod
Copy link
Contributor

ddiezrod commented Feb 13, 2020

I see now it is taking usually around 20 mins with 8 applications. I think it should be ok to compile without cotire.

@oberbichler
Copy link
Contributor

Great work

@pooyan-dadvand
Copy link
Member

@KratosMultiphysics/technical-committee thanks the effort and welcomes the new feature!!

For adding a new application to the CI we require:

  1. Obviously have tests!
  2. Having at least two maintainers providing continuous support in case of CI failure. In case of no support the application would be removed from the CI.
  3. There are timers which limits the testing time for each applications (1 minute per application for small tests). So the total CI time cannot be abused by one application. Please note that the CI machine is considerably slower than a normal desktop.

So applications which want to be part of the CI can create a PR adding the application to it. These PRs should be approved by the @KratosMultiphysics/technical-committee

Of course we are open to your suggestions and feedbacks!

@philbucher
Copy link
Member Author

BTW there are occasionally some issues, if you come across one it would be appreciated if you could report them here

@philbucher
Copy link
Member Author

With #6508 being merged, we now also run the tests in Windows

@philbucher
Copy link
Member Author

FYI:
With the Clang build running very stable and fast, also those builds have also been made required by @KratosMultiphysics/technical-committee

@philbucher
Copy link
Member Author

The initial version for MPI-testing (in linux) was added in #7038 and works well so far!

@philbucher
Copy link
Member Author

closing, has been around enough

the MPI integration is not yet completed but it will not change much in the future from the user point of view

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Continuous Integration related to Travis, Appveyor, ... Testing
Projects
None yet
Development

No branches or pull requests

5 participants