Darmowe Continuous Integration z obsługą Javy, OpenCL na GPU, kompilatorem C++, Node.js itd

1

Robię sobie projekt https://github.com/tarsa/SortAlgoBox który wykorzystuje szereg technologii i zastanawiam się czy w ogóle jest jakieś darmowe (lub tanie) CI które byłoby w stanie odpalić wszystkie testy z tego projektu. Zna ktoś jakieś? Niech podpowie.

Projekt wykorzystuje:

  • kompilator Scali, bo jest napisany głównie w Scali,
  • JVM do odpalenia głównego kodu,
  • OpenCL na CPU i GPU,
  • kompilator C++ do kompilacji generowanych dynamicznie zestawów plików .cpp i .hpp
  • następnie skompilowane binarki odpala z poziomu procesu Javowego i się z nimi komunikuje
  • (w niedalekiej przyszłości) Node.js do odpalania testów skompilowanych Scalą.js do JavaScriptu

Szukałem trochę i znalazłem niby opcje do obsługi większości z tych wymagań oprócz OpenCL na GPU. Jeśli do CI można podrzucić dowolne binarki to można podrzucić JVMa, implementację OpenCL na CPU, kompilator GCC i Node.js - wszystko to wymaga tylko CPU. Największym problemem jest głównie obsługa OpenCL na GPU i to w taki sposób by pozostałe funkcjonalności też działały.

0

Dopiero uczę się tworzenia pipelines CI/CD.

Z tego co widzę projekt wykorzystuje SBT. Czyli z linii komend systemu operacyjnego powinno dać się uruchomić testy napisane w różnych technologiach pod warunkiem, że:

  • system operacyjny pozwala
  • hardware pozwala

Powinno to działać analogicznie jak takie mavenowe verify.

Takiego zwykłego darmowego Jenkins można nauczyć uruchamiać dowolne skrypty: https://jenkins.io/doc/book/pipeline/

Jak dziala z poziomu systemu operacyjnego przez SBT dlaczego by miało nie działać z Jenkins pipeline? Chyba, że problemem jest załatwienie maszyny z GPU na której można zainstalować dowolny system CI.

Mam na myśli napisanie skryptu w formie Jenkinsfile: https://jenkins.io/doc/book/pipeline/jenkinsfile/

0

Z tego co widzę projekt wykorzystuje SBT.

Tak, wykorzystuje SBT. Odpalenie kompletu testów to wykonanie polecenia sbt test w katalogu z projektem, pod warunkiem że na komputerze zainstalowane są: JDK, SBT, OpenCL dla CPU i GPU, GCC.

Chyba, że problemem jest załatwienie maszyny z GPU na której można zainstalować dowolny system CI.

Generalnie tak. Nawet do Scali.js znalazłem przykładową konfigurację do TravisCI ( https://github.com/japgolly/scalajs-react/blob/master/.travis.yml - jest instalacja i konfiguracja Node.js tak by można było odpalać testy jednostkowe w Scali.js ). Nie znalazłem jednak żadnej platformy CI, gdzie mógłbym odpalić komplet testów (włącznie z kompilacją programów przez GCC i odpalaniem programów w OpenCL na GPU, ale wszystko jest napisane w pierwszym poście, więc nie będę się powtarzał).

0

Jeśli ma być darmowy hostowany (zakładam, że projekt w takim wypadku FLOSS), to nie wiem czy się coś znajdzie. GPU będzie problemem. Z tego co znalazłem to może TravisCI ma jakieś wsparcie.

Jeśli chodzi o self-hosted to zakładam, że zarówno Jenkins jak i GitLab CI wspierają to.

1 użytkowników online, w tym zalogowanych: 0, gości: 1