RL Engine – Continuous integration

Jak ostatnio wspominałem – Continuous integration wcale nie jest ani czasochłonny ani trudny.

Tak długo jak jest się w projekcie open-source na githubie to jest to zarówno bajecznie proste jak i darmowe.

Jest cała masa serwisów które oferują swoje usługi za friko dla projektów open-source które mają swoje siedzisko na githubie.

Jedne z wielu (reszta tutaj: https://github.com/integrations):

Ok, ok wszystko fajnie ale ile rzeczywiście zajmuje taka integracja?

Weźmy na warsztat zatem RL Engine.
W tej chwili mamy tam 2 zintegrowane serwisy:

  • Travis-CI – do budowania i uruchamiania testów
  • Codecov – do liczenia pokrycia kodu testami

Jak wyglądała integracja?

Travis-CI

Logujemy się do Travis-CI poprzez githuba i wita nas piękny tutorial:

Travis CI tutorial
Travis CI tutorial

Tak, wrzucamy plik .travis.yml do repozytorium i gotowe.

I już? I wszystko działa? Tak od razu?

No, nie do końca. W przypadku RL Engine plik Travisa wygląda tak:

language: clojure
jdk:
- oraclejdk8
script:
- lein test

Tutaj wygląda to spoko, ale projekty bywają o wiele bardziej skomplikowane – więc i taki plik będzie rósł.

Codecov

Działamy podobnie, logujemy się githubem i wybieramy nasze repo.
Potem dodajemy kilka linijek do .travis.yml i gotowe.

.travis.yml w RL Engine po dodaniu codecov:

language: clojure
jdk:
- oraclejdk8
script:
- lein test
after_success:
- CLOVERAGE_VERSION=1.0.7-SNAPSHOT lein cloverage --codecov
- bash (curl -s https://codecov.io/bash) -f target/coverage/codecov.json

Dwie linijki. Dodatkowo zassane z githuba codecov.

I to naprawdę działa?

Jasne, spójrz tutaj:

Travis CI - RL Engine
Travis CI – RL Engine
Codecov - RL Engine
Codecov – RL Engine
Codecov - RL Engine
Codecov – RL Engine

A co jeżeli nie mam publicznego repozytorium?

Chyba wszystkie serwisy oferują swoje usługi odpłatnie dla prywatnych repozytoriów githuba.

A jeżeli mam repozytorium na własnym serwerze?

Hmmm, no to zostaje Ci podkasać rękawy i postawić całe CI ręcznie.
Oczywiście są bardziej gotowe zestawy za $$$ np. Bamboo jak i bardziej surowe open-source’owe narzędzia pokroju Jenkinsa. Wszystko zależy od zasobów: czasu i pieniędzy.

Do RL-Engine pewnie jeszcze coś dodamy, jakiś narzędzie do code quality by się przydało…

Be First to Comment

A penny for your thoughts