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):
- https://travis-ci.org/
- https://www.appveyor.com/
- https://codeclimate.com
- https://coveralls.io/
- https://codecov.io/
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:
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:
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